Пример #1
0
        public void OpenClipsTransitionsModal(MVideoClip clip, MTransition transition)
        {
            var modalContent = this.ShowModalWindow("Transition");

            // Create a new field and assign it its value.
            var TypeField = new EnumField("Type:", transition.Type);

            modalContent.Add(TypeField);

            var durationField = new FloatField("Duration:");

            durationField.value = transition.duration;

            modalContent.Add(durationField);

            TypeField.RegisterCallback <ChangeEvent <System.Enum> >((evt) =>
            {
                transition.Type = (MTransition.TransitionType)evt.newValue;
            });

            durationField.RegisterCallback <ChangeEvent <float> >((evt) =>
            {
                transition.duration = evt.newValue;
            });
        }
Пример #2
0
        private void InitPreviewTimeline(MVideoClip clip, VisualElement element)
        {
            var previewTimeline = element.Q <VisualElement>(null, "KeyFrameDraggerElement");

            previewTimeline.RegisterCallback <MouseDownEvent>((MouseDownEvent evt) => {
                ToggleTimeline(clip.ID, true);
            });
            element.RegisterCallback <MouseMoveEvent>((MouseMoveEvent evt) => {
                if (IsTimelineActive(clip.ID))
                {
                    float time = (evt.localMousePosition.x / previewTimeline.contentRect.width);

                    this.ATVPivot.position = clip.GetPosition(time);
                    this.ATVPivot.forward  = clip.GetForward(time);

                    this.keyFrameManager.UpdateSceneViewCameraTransform(this.ATVPivot);
                    this.keyFrameManager.UpdateMainCameraTransform(clip.GetPosition(time), clip.GetForward(time));
                }
            });
            element.RegisterCallback <MouseUpEvent>((MouseUpEvent evt) => {
                ToggleTimeline(clip.ID, false);
            });

            /*element.RegisterCallback<MouseOutEvent>((MouseOutEvent evt) => {
             *  Debug.Log("MouseOut");
             *  ToggleTimeline(clip.ID, false);
             * },TrickleDown.TrickleDown);
             */
        }
Пример #3
0
 public void DeleteClip(MVideoClip clip)
 {
     if (clip != null)
     {
         this.currentSelectedProject.clips.Remove(clip);
         RefreshVideoClips();
     }
 }
Пример #4
0
        private void InitMoveButtonsBinding(MVideoClip clip, VisualElement element)
        {
            var leftMove  = element.Q <Button>(null, "MoveLeftButton");
            var rightMove = element.Q <Button>(null, "MoveRightButton");

            leftMove.clicked  += () => MoveClip(clip, true);
            rightMove.clicked += () => MoveClip(clip, false);
        }
Пример #5
0
        private void InitTransitionsBinding(MVideoClip clip, VisualElement element)
        {
            var leftTransition  = element.Q <Button>(null, "LeftTransitionButton");
            var rightTransition = element.Q <Button>(null, "RightTransitionButton");

            leftTransition.clicked  += () => this.modalManager.OpenClipsTransitionsModal(clip, clip.LeftTransition);
            rightTransition.clicked += () => this.modalManager.OpenClipsTransitionsModal(clip, clip.RightTransition);
        }
Пример #6
0
 private void InitSecondsUI(VisualElement DraggerContainer, MVideoClip clip)
 {
     DraggerContainer.Clear();
     for (int i = 0; i < clip.Duration; i++)
     {
         var cm = new VisualElement();
         cm.AddToClassList("SecondsTick");
         DraggerContainer.Add(cm);
     }
 }
Пример #7
0
 public virtual void StartClip(int clipToApply)
 {
     elapsedTime       = 0;
     currentPercentage = 0;
     currentClip       = mProject.clips[clipToApply];
     if (OnChangeClip != null)
     {
         OnChangeClip(currentClip);
     }
 }
Пример #8
0
        private void OnRuntimeUpdate(MVideoClip clip, float time, float percentage)
        {
            var clipEle = rootVisualElement.Q <VisualElement>(clip.ID);

            var pLine = clipEle.Q <VisualElement>(null, "PlayLine");

            var width = clipEle.contentRect.width;

            percentage       = Math.Min(1f, percentage);
            pLine.style.left = width * percentage;
        }
Пример #9
0
        private void OnRuntimeChangeClip(MVideoClip clip)
        {
            var prevClip = rootVisualElement.Q <VisualElement>(null, "ActiveClip");

            if (prevClip != null)
            {
                prevClip.RemoveFromClassList("ActiveClip");
            }

            var clipEle = rootVisualElement.Q <VisualElement>(clip.ID);

            clipEle.AddToClassList("ActiveClip");
        }
Пример #10
0
 public void DeleteClipWithConfirm(MVideoClip clip)
 {
     this.ShowConfirmDialog("Delete Clip", "Are you sure?",
                            (bool confirm) => {
         if (confirm)
         {
             this.m_MainWindow.DeleteClip(clip);
         }
         else
         {
             this.OpenClipSettingsModal(clip);
         }
     });
 }
Пример #11
0
        private void OnAddVideoClipButtonClick()
        {
            var clip = new MVideoClip();

            clip.ID = GUID.Generate().ToString();
            var kf = this.keyFrameManager.CreateKeyFrame();

            kf.clipRef = clip;
            clip.KeyFrames.Add(kf);
            this.currentSelectedProject.clips.Add(clip);
            kf.clipRef.RefreshCurves();

            EditorUtility.SetDirty(this.sceneContainer);
            AssetDatabase.SaveAssets();

            RefreshVideoClips();
        }
Пример #12
0
        public void OpenClipSettingsModal(MVideoClip clip)
        {
            var ModalContent = this.ShowModalWindow("Clip Settings");

            var NameField = new TextField("Clip Name: ");

            NameField.value = clip.Name;
            ModalContent.Add(NameField);
            NameField.RegisterCallback <ChangeEvent <string> >((evt) =>
            {
                clip.Name = evt.newValue;
            });

            var DeleteButton = new Button();

            DeleteButton.text     = "DELETE CLIP";
            DeleteButton.clicked += () => { DeleteClipWithConfirm(clip); };
            ModalContent.Add(DeleteButton);
        }
Пример #13
0
        public void RefreshKeyFramesForClip(MVideoClip clip, VisualElement element)
        {
            var keyFramesContainer = element.Q <VisualElement>(null, "KeyFrameContainer");

            keyFramesContainer.ClearClassList();
            keyFramesContainer.AddToClassList("KeyFrameContainer");
            keyFramesContainer.AddToClassList("KeyFrames_" + clip.KeyFrames.Count);

            keyFramesContainer.Clear();
            foreach (var f in clip.KeyFrames)
            {
                var ele = MakeKeyFrameEle();
                BindKeyFrameElement(f, ele);
                keyFramesContainer.Add(ele);
            }
            clip.RefreshCurves();

            EditorUtility.SetDirty(this.m_MainWindow.sceneContainer);
            AssetDatabase.SaveAssets();
        }
Пример #14
0
        private void InitNameAndTimeBinding(MVideoClip clip, VisualElement element)
        {
            var timeField            = element.Q <IntegerField>(null, "TimeField");
            var secondsTickContainer = element.Q <VisualElement>(null, "KeyFrameSecondsTickContainer");

            timeField.value = (int)clip.Duration;
            InitSecondsUI(secondsTickContainer, clip);

            timeField.RegisterValueChangedCallback <int>((ChangeEvent <int> evt) => {
                clip.Duration = evt.newValue;
                InitSecondsUI(secondsTickContainer, clip);
            });

            var settingsButton = element.Q <Button>(null, "ClipSettingsButton");

            settingsButton.clicked += () => this.modalManager.OpenClipSettingsModal(clip);

            var playButton = element.Q <Button>(null, "ClipPreviewButton");

            playButton.clicked += () => this.StartVideo(false, this.currentSelectedProject.GetClipIndex(clip));
        }
Пример #15
0
        public void PlayTransition(MVideoClip clip, int clipIndex, MTransition transition)
        {
            if (transition.Type == MTransition.TransitionType.dipToBlack || transition.Type == MTransition.TransitionType.dipToWhite)
            {
                this.currentTime = 0;
                this.isPlaying   = true;
                this.mTransition = transition;
                if (this.mTransition.isLeftTransition)
                {
                    var color = this.getColor();

                    this.transitionColorMaterial.SetColor("_Color", new Color(
                                                              color.r,
                                                              color.g,
                                                              color.b,
                                                              1));
                }
            }
            else
            {
                this.ResetAll();
            }
        }
Пример #16
0
        private void MoveClip(MVideoClip clip, bool left)
        {
            int index = this.currentSelectedProject.clips.LastIndexOf(clip);

            int newIndex = index;

            if (left && index > 0)
            {
                newIndex = index - 1;
            }
            else if (!left && index < this.currentSelectedProject.clips.Count - 1)
            {
                newIndex = index + 1;
            }
            if (newIndex != index)
            {
                MVideoClip oldClip = this.currentSelectedProject.clips[newIndex];
                this.currentSelectedProject.clips[newIndex] = clip;
                this.currentSelectedProject.clips[index]    = oldClip;

                RefreshVideoClips();
            }
        }