//---------------------------------------------------------------------------------------------------------------------- private void InitClipData() { //Initialize PlayableAssets and BaseClipData foreach (TimelineClip clip in GetClips()) { BaseExtendedClipPlayableAsset <D> playableAsset = clip.asset as BaseExtendedClipPlayableAsset <D>; if (null == playableAsset) { continue; } //Try to get existing one, either from the collection, or the clip if (!m_dataCollection.TryGetValue(clip, out D clipData)) { clipData = playableAsset.GetBoundClipData(); } if (null == clipData) { clipData = new D(); } //Fix the required data structure m_dataCollection[clip] = clipData; clipData.SetOwner(clip); playableAsset.BindClipData(clipData); } }
internal static T GetClipData <T>(this TimelineClip clip) where T : BaseClipData { BaseExtendedClipPlayableAsset <T> clipAsset = clip.asset as BaseExtendedClipPlayableAsset <T>; if (null == clipAsset) { return(null); } T clipData = clipAsset.GetBoundClipData(); return(clipData); }
//---------------------------------------------------------------------------------------------------------------------- /// <inheritdoc/> protected override void OnBeforeTrackSerialize() { base.OnBeforeTrackSerialize(); m_serializedDataCollection = new List <D>(); foreach (TimelineClip clip in GetClips()) { if (null == m_dataCollection || !m_dataCollection.TryGetValue(clip, out D data)) { BaseExtendedClipPlayableAsset <D> playableAsset = clip.asset as BaseExtendedClipPlayableAsset <D>; Assert.IsNotNull(playableAsset); data = playableAsset.GetBoundClipData(); } if (null == data) { data = new D(); data.SetOwner(clip); } m_serializedDataCollection.Add(data); } }