summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Manipulators/Sequence/Jog.cs
blob: b470b5862a06df2b0bfb53b101664b6a9b6ff9da (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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;
        }
    }
}