Beispiel #1
0
        public static List <TrackAsset> GetTimelineTracks(TimelineAsset timeline)
        {
            // locate track list in timeline
            var propTracks = timeline.GetType().GetProperty("tracks", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

            return(propTracks.GetValue(timeline, null) as List <TrackAsset>);
        }
        static public List <TrackAsset> GetTrackList(TimelineAsset timelineAsset)
        {
            Assert.IsTrue(timelineAsset == true);
            var bf   = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField | BindingFlags.GetProperty;
            var type = timelineAsset.GetType();

            var info = type.GetProperty("tracks", bf);  // 2017.1 tracks

            if (info == null)
            {   //  newer version
                info = type.GetProperty("trackObjects", bf);
            }
            Assert.IsTrue(info.PropertyType.IsGenericType);
            var list           = info.GetValue(timelineAsset, null);
            var trackAssetList = list as List <TrackAsset>;

            if (trackAssetList != null)
            {
                return(trackAssetList);
            }


            var scriptableObjectList = list as List <ScriptableObject>;
            var ret = new List <TrackAsset>();

            foreach (var asset in scriptableObjectList)
            {
                ret.Add(asset as TrackAsset);
            }

            return(ret);
        }