示例#1
0
//----------------------------------------------------------------------------------------------------------------------
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
//----------------------------------------------------------------------------------------------------------------------
        /// <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);
            }
        }