protected override bool MouseDrag(Event evt, WindowState state) { if (state.editSequence.isReadOnly) { return(false); } if (!m_IsCaptured) { return(false); } var uiClip = m_TrimClipHandler.clipGUI; if (!m_UndoSaved) { UndoExtensions.RegisterClip(uiClip.clip, "Trim Clip"); if (TimelineUtility.IsRecordableAnimationClip(uiClip.clip)) { TimelineUndo.PushUndo(uiClip.clip.animationClip, "Trim Clip"); } m_UndoSaved = true; } //Reset to original ease values. The trim operation will calculate the proper blend values. uiClip.clip.easeInDuration = m_OriginalEaseInDuration; uiClip.clip.easeOutDuration = m_OriginalEaseOutDuration; if (m_SnapEngine != null) { m_SnapEngine.Snap(evt.mousePosition, evt.modifiers); } RefreshOverlayStrings(m_TrimClipHandler, state); if (Selection.activeObject != null) { EditorUtility.SetDirty(Selection.activeObject); } // updates the duration of the graph without rebuilding state.UpdateRootPlayableDuration(state.editSequence.duration); return(true); }
protected override bool MouseDrag(Event evt, WindowState state) { if (state.editSequence.isReadOnly) { return(false); } if (!m_IsCaptured) { return(false); } if (!m_UndoSaved) { var uiClip = m_TrimClipHandler.clipGUI; TimelineUndo.PushUndo(uiClip.clip.parentTrack, "Trim Clip"); if (TimelineUtility.IsRecordableAnimationClip(uiClip.clip)) { TimelineUndo.PushUndo(uiClip.clip.animationClip, "Trim Clip"); } m_UndoSaved = true; } if (m_SnapEngine != null) { m_SnapEngine.Snap(evt.mousePosition, evt.modifiers); } RefreshOverlayStrings(m_TrimClipHandler, state); if (Selection.activeObject != null) { EditorUtility.SetDirty(Selection.activeObject); } // updates the duration of the graph without rebuilding state.UpdateRootPlayableDuration(state.editSequence.duration); return(true); }
protected override bool MouseDrag(Event evt, WindowState state) { if (state.editSequence.isReadOnly) { return(false); } // case 1099285 - ctrl-click can cause no clips to be selected var selectedItemsGUI = SelectionManager.SelectedItems(); if (!selectedItemsGUI.Any()) { m_Dragged = false; return(false); } const float hDeadZone = 5.0f; const float vDeadZone = 5.0f; bool vDone = m_VerticalMovementDone || Math.Abs(evt.mousePosition.y - m_MouseDownPosition.y) > vDeadZone; bool hDone = m_HorizontalMovementDone || Math.Abs(evt.mousePosition.x - m_MouseDownPosition.x) > hDeadZone; m_CycleMarkersPending = false; if (!m_Dragged) { var canStartMove = vDone || hDone; if (canStartMove) { state.AddCaptured(this); m_Dragged = true; var referenceTrack = GetTrackDropTargetAt(state, m_MouseDownPosition); foreach (var item in selectedItemsGUI) { item.gui.StartDrag(); } m_MoveItemHandler = new MoveItemHandler(state); m_MoveItemHandler.Grab(selectedItemsGUI, referenceTrack, m_MouseDownPosition); m_SnapEngine = new SnapEngine(m_MoveItemHandler, m_MoveItemHandler, ManipulateEdges.Both, state, m_MouseDownPosition); m_TimeAreaAutoPanner = new TimeAreaAutoPanner(state); } } if (!m_VerticalMovementDone) { m_VerticalMovementDone = vDone; if (m_VerticalMovementDone) { m_MoveItemHandler.OnTrackDetach(); } } if (!m_HorizontalMovementDone) { m_HorizontalMovementDone = hDone; } if (m_Dragged) { if (m_HorizontalMovementDone) { m_SnapEngine.Snap(evt.mousePosition, evt.modifiers); } if (m_VerticalMovementDone) { var track = GetTrackDropTargetAt(state, evt.mousePosition); m_MoveItemHandler.UpdateTrackTarget(track); } state.Evaluate(); } return(true); }