using System; using UnityEngine; using UnityEngine.Playables; using UnityEngine.Timeline; namespace FT.Timeline { public class DOTweenTrackMixerBehaviour : PlayableBehaviour { } [Serializable] [TrackColor(0.431f, 0.667f, 0.882f)] [TrackClipType(typeof(DOTweenPlayableAsset))] [TrackBindingType(typeof(RectTransform))] [ExcludeFromPreset] public class DOTweenTrack : TrackAsset { public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount) { return ScriptPlayable.Create(graph, inputCount); } protected override void OnCreateClip(TimelineClip clip) { clip.displayName = "DOTween"; if (clip.asset is DOTweenPlayableAsset playableAsset) { clip.duration = playableAsset.duration; } base.OnCreateClip(clip); } #if UNITY_EDITOR public override void GatherProperties(PlayableDirector director, IPropertyCollector driver) { var boundObject = director.GetGenericBinding(this) as RectTransform; if (boundObject != null) { driver.AddFromName(boundObject.gameObject, "m_AnchoredPosition.x"); driver.AddFromName(boundObject.gameObject, "m_AnchoredPosition.y"); } base.GatherProperties(director, driver); } #endif } }