SW 중심대학 OSS GIT 서버
박건태, 이승준, 고기완, 이준호
새로운 배포
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
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; } } }}
|