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.
56 lines
2.0 KiB
56 lines
2.0 KiB
using JetBrains.Annotations; |
|
using UnityEngine; |
|
using UnityEngine.Timeline; |
|
using UnityEngine.Playables; |
|
|
|
namespace UnityEditor.Timeline |
|
{ |
|
[UsedImplicitly] |
|
[CustomTimelineEditor(typeof(ActivationTrack))] |
|
class ActivationTrackEditor : TrackEditor |
|
{ |
|
static readonly string ClipText = L10n.Tr("Active"); |
|
|
|
static readonly string k_ErrorParentString = L10n.Tr("The bound GameObject is a parent of the PlayableDirector."); |
|
static readonly string k_ErrorString = L10n.Tr("The bound GameObject contains the PlayableDirector."); |
|
|
|
public override TrackDrawOptions GetTrackOptions(TrackAsset track, Object binding) |
|
{ |
|
var options = base.GetTrackOptions(track, binding); |
|
options.errorText = GetErrorText(track, binding); |
|
return options; |
|
} |
|
|
|
string GetErrorText(TrackAsset track, Object binding) |
|
{ |
|
var gameObject = binding as GameObject; |
|
var currentDirector = TimelineEditor.inspectedDirector; |
|
if (gameObject != null && currentDirector != null) |
|
{ |
|
var director = gameObject.GetComponent<PlayableDirector>(); |
|
if (currentDirector == director) |
|
{ |
|
return k_ErrorString; |
|
} |
|
|
|
if (currentDirector.gameObject.transform.IsChildOf(gameObject.transform)) |
|
{ |
|
return k_ErrorParentString; |
|
} |
|
} |
|
|
|
return base.GetErrorText(track, binding, TrackBindingErrors.PrefabBound); |
|
} |
|
|
|
public override void OnCreate(TrackAsset track, TrackAsset copiedFrom) |
|
{ |
|
// Add a default clip to the newly created track |
|
if (copiedFrom == null) |
|
{ |
|
var clip = track.CreateClip(0); |
|
clip.displayName = ClipText; |
|
clip.duration = System.Math.Max(clip.duration, track.timelineAsset.duration * 0.5f); |
|
} |
|
} |
|
} |
|
}
|
|
|