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.
94 lines
2.8 KiB
94 lines
2.8 KiB
using System; |
|
using UnityEngine.Playables; |
|
|
|
namespace UnityEngine.Timeline |
|
{ |
|
/// <summary> |
|
/// Track that can be used to control the active state of a GameObject. |
|
/// </summary> |
|
[Serializable] |
|
[TrackClipType(typeof(ActivationPlayableAsset))] |
|
[TrackBindingType(typeof(GameObject))] |
|
[ExcludeFromPreset] |
|
[TimelineHelpURL(typeof(ActivationTrack))] |
|
public class ActivationTrack : TrackAsset |
|
{ |
|
[SerializeField] |
|
PostPlaybackState m_PostPlaybackState = PostPlaybackState.LeaveAsIs; |
|
ActivationMixerPlayable m_ActivationMixer; |
|
|
|
/// <summary> |
|
/// Specify what state to leave the GameObject in after the Timeline has finished playing. |
|
/// </summary> |
|
public enum PostPlaybackState |
|
{ |
|
/// <summary> |
|
/// Set the GameObject to active. |
|
/// </summary> |
|
Active, |
|
|
|
/// <summary> |
|
/// Set the GameObject to Inactive. |
|
/// </summary> |
|
Inactive, |
|
|
|
/// <summary> |
|
/// Revert the GameObject to the state in was in before the Timeline was playing. |
|
/// </summary> |
|
Revert, |
|
|
|
/// <summary> |
|
/// Leave the GameObject in the state it was when the Timeline was stopped. |
|
/// </summary> |
|
LeaveAsIs |
|
} |
|
|
|
internal override bool CanCompileClips() |
|
{ |
|
return !hasClips || base.CanCompileClips(); |
|
} |
|
|
|
/// <summary> |
|
/// Specifies what state to leave the GameObject in after the Timeline has finished playing. |
|
/// </summary> |
|
public PostPlaybackState postPlaybackState |
|
{ |
|
get { return m_PostPlaybackState; } |
|
set { m_PostPlaybackState = value; UpdateTrackMode(); } |
|
} |
|
|
|
/// <inheritdoc/> |
|
public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount) |
|
{ |
|
var mixer = ActivationMixerPlayable.Create(graph, inputCount); |
|
m_ActivationMixer = mixer.GetBehaviour(); |
|
|
|
UpdateTrackMode(); |
|
|
|
return mixer; |
|
} |
|
|
|
internal void UpdateTrackMode() |
|
{ |
|
if (m_ActivationMixer != null) |
|
m_ActivationMixer.postPlaybackState = m_PostPlaybackState; |
|
} |
|
|
|
/// <inheritdoc/> |
|
public override void GatherProperties(PlayableDirector director, IPropertyCollector driver) |
|
{ |
|
var gameObject = GetGameObjectBinding(director); |
|
if (gameObject != null) |
|
{ |
|
driver.AddFromName(gameObject, "m_IsActive"); |
|
} |
|
} |
|
|
|
/// <inheritdoc/> |
|
protected override void OnCreateClip(TimelineClip clip) |
|
{ |
|
clip.displayName = "Active"; |
|
base.OnCreateClip(clip); |
|
} |
|
} |
|
}
|
|
|