| using UnityEditor.ShortcutManagement; |
| using UnityEngine; |
| using UnityEngine.Timeline; |
|
|
| namespace UnityEditor.Timeline |
| { |
| class Jog : Manipulator |
| { |
| Vector2 m_MouseDownOrigin = Vector2.zero; |
|
|
| [ClutchShortcut("Timeline/Jog", typeof(TimelineWindow), KeyCode.J)] |
| static void JogShortcut(ShortcutArguments args) |
| { |
| if (args.stage == ShortcutStage.Begin) |
| { |
| (args.context as TimelineWindow).state.isJogging = true; |
| } |
| else if (args.stage == ShortcutStage.End) |
| { |
| (args.context as TimelineWindow).state.isJogging = false; |
| } |
| } |
|
|
| protected override bool MouseDown(Event evt, WindowState state) |
| { |
| if (!state.isJogging) |
| return false; |
|
|
| m_MouseDownOrigin = evt.mousePosition; |
| state.playbackSpeed = 0.0f; |
| state.Play(); |
|
|
| return true; |
| } |
|
|
| protected override bool MouseUp(Event evt, WindowState state) |
| { |
| if (!state.isJogging) |
| { |
| return false; |
| } |
|
|
| m_MouseDownOrigin = evt.mousePosition; |
| state.playbackSpeed = 0.0f; |
| state.Play(); |
| return false; |
| } |
|
|
| protected override bool MouseDrag(Event evt, WindowState state) |
| { |
| if (!state.isJogging) |
| return false; |
|
|
| var distance = evt.mousePosition - m_MouseDownOrigin; |
|
|
| state.playbackSpeed = distance.x * 0.002f; |
| state.Play(); |
| return true; |
| } |
| } |
| } |
|
|