diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
| commit | c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch) | |
| tree | ee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PreviewPlayMode.cs | |
| download | Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2 Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip | |
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PreviewPlayMode.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PreviewPlayMode.cs | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PreviewPlayMode.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PreviewPlayMode.cs new file mode 100644 index 0000000..ef28cdf --- /dev/null +++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PreviewPlayMode.cs @@ -0,0 +1,80 @@ +using System; +using UnityEngine; +using UnityEngine.Playables; + +namespace UnityEditor.Timeline +{ + partial class TimelineWindow + { + void OnPreviewPlayModeChanged(bool isPlaying) + { + if (EditorApplication.isPlaying) + return; + + if (isPlaying) + { + PreparePreviewPlay(); + EditorApplication.update += OnPreviewPlay; + } + else + { + EditorApplication.update -= OnPreviewPlay; + } + } + + void PreparePreviewPlay() + { + if (state == null || state.masterSequence.asset == null || state.masterSequence.director == null) + return; + if (state.playRangeEnabled && !state.isJogging) + { + EnsurePlayRangeIsRespected(); + } + } + + internal void OnPreviewPlay() + { + if (state == null || state.masterSequence.asset == null || state.masterSequence.director == null) + return; + + var director = state.masterSequence.director; + if (director.timeUpdateMode == DirectorUpdateMode.Manual) + { + Repaint(); + return; + } + + if (state.isJogging) + { + ApplyJog(); + } + else if (state.playRangeEnabled) + { + EnsurePlayRangeIsRespected(); + } + + if (director.extrapolationMode == DirectorWrapMode.None && director.playableGraph.IsValid() && director.playableGraph.IsDone()) + { + //reset time if we hit the end of the timeline + state.masterSequence.time = 0.0; + state.Pause(); + } + + Repaint(); + AudioMixerWindow.RepaintAudioMixerWindow(); + } + + void ApplyJog() + { + state.masterSequence.time = Math.Max(0.0, Math.Min(state.masterSequence.duration, state.masterSequence.time + state.playbackSpeed)); + } + + void EnsurePlayRangeIsRespected() + { + var playRangeTime = state.playRange; + var time = state.masterSequence.time; + if (time > playRangeTime.y || time < playRangeTime.x) + state.masterSequence.time = playRangeTime.x; + } + } +} |
