private void BindKeyFrameElement(MKeyFrame frame, VisualElement ele) { var kfImage = ele.Q <Image>(null, "KeyFrameImage"); var kfImageButton = ele.Q <Button>(null, "ImageContainer"); var lAddButton = ele.Q <Button>(null, "LeftButton"); var rAddButton = ele.Q <Button>(null, "RightButton"); var delButton = ele.Q <Button>(null, "DeleteKeyFrameButton"); var refreshButton = ele.Q <Button>(null, "refreshKeyFramePosition"); kfImage.name = "IMG_" + frame.ID; SetImageForKeyFrame(kfImage, frame.ID); lAddButton.clicked += () => this.AddKeyFrameSibling(frame, false); rAddButton.clicked += () => this.AddKeyFrameSibling(frame, true); delButton.clicked += () => { frame.clipRef.KeyFrames.Remove(frame); var element = this.rootVisualElement.Q <VisualElement>(frame.clipRef.ID); RefreshKeyFramesForClip(frame.clipRef, element); }; refreshButton.clicked += () => { SetKeyFrameCameraData(frame); }; kfImageButton.clicked += () => { UpdateCameraTransform(frame); }; }
public void UpdateCameraTransform(MKeyFrame keyFrame) { m_MainWindow.ATVPivot.position = keyFrame.CameraPosition; m_MainWindow.ATVPivot.forward = keyFrame.CameraForward; this.UpdateSceneViewCameraTransform(m_MainWindow.ATVPivot); this.UpdateMainCameraTransform(keyFrame.CameraPosition, keyFrame.CameraForward); }
public void Record() { //Debug.Log("in record mode"); //Physics engine moves objects myRigidbody.isKinematic = false; int frame = Time.frameCount % bufferFrames; float time = Time.time; keyFrames[frame] = new MKeyFrame(time, transform.position, transform.rotation); }
public MKeyFrame CreateKeyFrame() { var keyFrame = new MKeyFrame(); keyFrame.ID = GUID.Generate().ToString(); SetKeyFrameCameraData(keyFrame); return(keyFrame); }
private void SaveImageFromSceneView(MKeyFrame frame) { var path = Application.dataPath + KeyFrameImagePath; Utils.CaptureSceneViewScreenshot(frame.ID, path, (string fPath, Texture2D txt) => { frame.Image = txt; this.rootVisualElement.Q <Image>("IMG_" + frame.ID).style.backgroundImage = new StyleBackground(txt); }); }
private void SetKeyFrameCameraData(MKeyFrame keyFrame) { var sv = (SceneView)SceneView.sceneViews[0]; CameraTransform = sv.camera.transform; keyFrame.CameraPosition = this.CameraTransform.position; keyFrame.CameraForward = this.CameraTransform.forward; //We record also the pivot point of the scene view, this is used only during the editing mode keyFrame.CameraPivot = sv.pivot; //Pick Image for keyframe and save it this.SaveImageFromSceneView(keyFrame); //Refresh Clip curves if (keyFrame.clipRef != null) { keyFrame.clipRef.RefreshCurves(); } }
private void AddKeyFrameSibling(MKeyFrame frame, bool right) { var frameIndex = frame.GetCurrentIndex(); if (right) { frameIndex++; } var newKeyFrame = this.CreateKeyFrame(); newKeyFrame.clipRef = frame.clipRef; frame.clipRef.KeyFrames.Insert(frameIndex, newKeyFrame); var element = this.rootVisualElement.Q <VisualElement>(frame.clipRef.ID); this.RefreshKeyFramesForClip(frame.clipRef, element); EditorUtility.SetDirty(this.m_MainWindow.sceneContainer); AssetDatabase.SaveAssets(); }
public Texture2D GetTextureForKeyFrame(MKeyFrame frame) { var path = "Assets" + KeyFrameImagePath + frame.ID + ".png"; return(AssetDatabase.LoadAssetAtPath <Texture2D>(path)); }