Exemplo n.º 1
0
        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);
            };
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
        public MKeyFrame CreateKeyFrame()
        {
            var keyFrame = new MKeyFrame();

            keyFrame.ID = GUID.Generate().ToString();

            SetKeyFrameCameraData(keyFrame);

            return(keyFrame);
        }
Exemplo n.º 5
0
        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);
            });
        }
Exemplo n.º 6
0
        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();
            }
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        public Texture2D GetTextureForKeyFrame(MKeyFrame frame)
        {
            var path = "Assets" + KeyFrameImagePath + frame.ID + ".png";

            return(AssetDatabase.LoadAssetAtPath <Texture2D>(path));
        }