예제 #1
0
 public void SetValueForEdge(IEnumerable <ITimelineItem> items, AttractedEdge edge, double value)
 {
     if (TimelineWindow.instance != null && TimelineWindow.instance.state != null)
     {
         MoveInputHandler.SetValueForEdge(items, edge, value, TimelineWindow.instance.state);
     }
 }
예제 #2
0
 protected override void OnAttractedEdge(TimelineClip clip, AttractedEdge edge, double time, double duration)
 {
     if (edge != AttractedEdge.Right)
     {
         if (edge != AttractedEdge.Left)
         {
             if (time > 0.0)
             {
                 clip.start    = time;
                 clip.duration = Math.Max(duration, TimelineClip.kMinDuration);
             }
         }
         else
         {
             double num = time - clip.start;
             if (time > 0.0)
             {
                 clip.start = time;
                 if (clip.duration - num > TimelineClip.kMinDuration)
                 {
                     clip.duration -= num;
                 }
             }
         }
     }
     else
     {
         clip.duration = time - clip.start;
         clip.duration = Math.Max(clip.duration, TimelineClip.kMinDuration);
     }
 }
예제 #3
0
        private void ExitMagnet()
        {
            AttractedEdge attractedEdge = this.m_AttractedEdge.edge;
            double        num           = this.m_AttractedEdge.exitTime;

            if (this.m_ManipulateEdges == ManipulateEdges.Left)
            {
                attractedEdge = AttractedEdge.Left;
            }
            if (this.m_ManipulateEdges == ManipulateEdges.Right)
            {
                attractedEdge = AttractedEdge.Right;
            }
            if (attractedEdge == AttractedEdge.Left || attractedEdge == AttractedEdge.Right)
            {
                if (Event.get_current() != null)
                {
                    Vector2 mousePosition = Event.get_current().get_mousePosition();
                    num = (double)this.m_State.PixelToTime(mousePosition.x);
                }
            }
            this.m_AttractionHandler.OnAttractedEdge(this.m_Attractable, this.m_AttractedEdge.edge, this.m_AttractedEdge.exitTime, this.m_ActiveMagnet.durationBeforeSnap);
            this.m_AttractedEdge = null;
            this.m_ActiveMagnet  = null;
            this.ChangeState(SnapState.Free);
        }
            public void OnAttractedEdge(IAttractable attractable, AttractedEdge edge, double time, double duration)
            {
                TimelineClipGUI timelineClipGUI = attractable as TimelineClipGUI;

                if (timelineClipGUI != null)
                {
                    TimelineClip clip = timelineClipGUI.clip;
                    if (edge == AttractedEdge.Right)
                    {
                        clip.duration = time - clip.start;
                        clip.duration = Math.Max(clip.duration, TimelineClip.kMinDuration);
                    }
                    else if (edge == AttractedEdge.Left)
                    {
                        double num      = time - clip.start;
                        double newValue = clip.clipIn + num * clip.timeScale;
                        if (DragClipHandle.SetClipIn(clip, newValue, num))
                        {
                            this.m_FrameSnap.Reset();
                        }
                    }
                    else
                    {
                        clip.start    = time;
                        clip.duration = duration;
                    }
                }
            }
예제 #5
0
        public void OnAttractedEdge(IAttractable attractable, AttractedEdge edge, double time, double duration)
        {
            TimelineMarkerGUI timelineMarkerGUI = attractable as TimelineMarkerGUI;

            if (timelineMarkerGUI != null)
            {
                timelineMarkerGUI.timelineMarker.time = time;
            }
        }
예제 #6
0
            public static void SetValueForEdge(IEnumerable <ITimelineItem> items, AttractedEdge edge, double value, WindowState state)
            {
                var handler = new MoveItemHandler(state);

                foreach (var item in items)
                {
                    handler.Grab(new[] { item }, item.parentTrack);
                    handler.OnAttractedEdge(null, ManipulateEdges.Both, edge, value);
                    handler.Drop();
                }
            }
예제 #7
0
            public bool IsInInfluenceZone(double currentTime, ITimelineState state, AttractedEdge direction)
            {
                float num  = state.TimeToPixel(currentTime);
                float num2 = state.TimeToPixel(this.time);
                bool  result;

                if (direction == AttractedEdge.Left)
                {
                    result = (num > num2 - MagnetEngine.k_Epsilon && num < num2 + MagnetEngine.k_MagnetInfluenceInPixels);
                }
                else
                {
                    result = (num > num2 - MagnetEngine.k_MagnetInfluenceInPixels - MagnetEngine.k_Epsilon && num < num2);
                }
                return(result);
            }
예제 #8
0
        public void OnAttractedEdge(IAttractable attractable, AttractedEdge edge, double time, double duration)
        {
            TimelineClipGUI timelineClipGUI = attractable as TimelineClipGUI;

            if (timelineClipGUI != null)
            {
                TimelineClip clip = timelineClipGUI.clip;
                if (edge == AttractedEdge.Left || edge == AttractedEdge.None)
                {
                    clip.start = time;
                }
                else
                {
                    clip.start = time - clip.duration;
                }
            }
        }
            public void OnAttractedEdge(IAttractable attractable, ManipulateEdges manipulateEdges, AttractedEdge edge, double time)
            {
                var clipGUI = attractable as TimelineClipGUI;

                if (clipGUI == null)
                {
                    return;
                }

                var clipItem = ItemsUtils.ToItem(clipGUI.clip);

                if (manipulateEdges == ManipulateEdges.Right)
                {
                    bool affectTimeScale = IsAffectingTimeScale(clipGUI.clip);
                    EditMode.TrimEnd(clipItem, time, affectTimeScale);
                }
                else if (manipulateEdges == ManipulateEdges.Left)
                {
                    bool affectTimeScale = IsAffectingTimeScale(clipGUI.clip);
                    EditMode.TrimStart(clipItem, time, affectTimeScale);
                }
            }
        public void OnAttractedEdge(IAttractable attractable, ManipulateEdges manipulateEdges, AttractedEdge edge, double time)
        {
            double offset;

            if (edge == AttractedEdge.Right)
            {
                var duration  = end - start;
                var startTime = time - duration;
                startTime = EditMode.AdjustStartTime(m_State, m_RightMostMovingItems, startTime);

                offset = startTime + duration - end;
            }
            else
            {
                if (edge == AttractedEdge.Left)
                {
                    time = EditMode.AdjustStartTime(m_State, m_LeftMostMovingItems, time);
                }

                offset = time - start;
            }

            if (start + offset < 0.0)
            {
                offset = -start;
            }

            if (!offset.Equals(0.0))
            {
                foreach (var grabbedClips in movingItems)
                {
                    grabbedClips.start += offset;
                }

                EditMode.UpdateMove();

                RefreshPreviewItems();
            }
        }
예제 #11
0
파일: TrimClip.cs 프로젝트: 0geova0/Jam
            public void OnAttractedEdge(IAttractable attractable, ManipulateEdges manipulateEdges, AttractedEdge edge, double time)
            {
                var clipGUI = attractable as TimelineClipGUI;

                if (clipGUI == null)
                {
                    return;
                }

                var clipItem = ItemsUtils.ToItem(clipGUI.clip);

                if (manipulateEdges == ManipulateEdges.Right)
                {
                    bool affectTimeScale = Event.current.modifiers == EventModifiers.Shift; // TODO Do not use Event.current from here.
                    EditMode.TrimEnd(clipItem, time, affectTimeScale);
                }
                else if (manipulateEdges == ManipulateEdges.Left)
                {
                    EditMode.TrimStart(clipItem, time);
                }
            }
 protected virtual void OnAttractedEdge(TimelineClip clip, AttractedEdge edge, double time, double duration)
 {
 }