summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
committerAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
commitc55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch)
treeee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs
downloadProject-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/Runtime/Playables/TimeControlPlayable.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs85
1 files changed, 85 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs
new file mode 100644
index 0000000..68ec80d
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs
@@ -0,0 +1,85 @@
+using UnityEngine.Playables;
+
+namespace UnityEngine.Timeline
+{
+ /// <summary>
+ /// A PlayableBehaviour that manages a component that implements the ITimeControl interface
+ /// </summary>
+ public class TimeControlPlayable : PlayableBehaviour
+ {
+ ITimeControl m_timeControl;
+
+ bool m_started;
+
+ /// <summary>
+ /// Creates a Playable with a TimeControlPlayable behaviour attached
+ /// </summary>
+ /// <param name="graph">The PlayableGraph to inject the Playable into.</param>
+ /// <param name="timeControl"></param>
+ /// <returns></returns>
+ public static ScriptPlayable<TimeControlPlayable> Create(PlayableGraph graph, ITimeControl timeControl)
+ {
+ if (timeControl == null)
+ return ScriptPlayable<TimeControlPlayable>.Null;
+
+ var handle = ScriptPlayable<TimeControlPlayable>.Create(graph);
+ handle.GetBehaviour().Initialize(timeControl);
+ return handle;
+ }
+
+ /// <summary>
+ /// Initializes the behaviour
+ /// </summary>
+ /// <param name="timeControl">Component that implements the ITimeControl interface</param>
+ public void Initialize(ITimeControl timeControl)
+ {
+ m_timeControl = timeControl;
+ }
+
+ /// <summary>
+ /// This function is called during the PrepareFrame phase of the PlayableGraph.
+ /// </summary>
+ /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param>
+ /// <param name="info">A FrameData structure that contains information about the current frame context.</param>
+ public override void PrepareFrame(Playable playable, FrameData info)
+ {
+ Debug.Assert(m_started, "PrepareFrame has been called without OnControlTimeStart being called first.");
+ if (m_timeControl != null)
+ m_timeControl.SetTime(playable.GetTime());
+ }
+
+ /// <summary>
+ /// This function is called when the Playable play state is changed to Playables.PlayState.Playing.
+ /// </summary>
+ /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param>
+ /// <param name="info">A FrameData structure that contains information about the current frame context.</param>
+ public override void OnBehaviourPlay(Playable playable, FrameData info)
+ {
+ if (m_timeControl == null)
+ return;
+
+ if (!m_started)
+ {
+ m_timeControl.OnControlTimeStart();
+ m_started = true;
+ }
+ }
+
+ /// <summary>
+ /// This function is called when the Playable play state is changed to PlayState.Paused.
+ /// </summary>
+ /// <param name="playable">The playable this behaviour is attached to.</param>
+ /// <param name="info">A FrameData structure that contains information about the current frame context.</param>
+ public override void OnBehaviourPause(Playable playable, FrameData info)
+ {
+ if (m_timeControl == null)
+ return;
+
+ if (m_started)
+ {
+ m_timeControl.OnControlTimeStop();
+ m_started = false;
+ }
+ }
+ }
+}