public static IEnumerator LoadTimelineResources(TimelineAsset timelineAsset) { if (!(null == timelineAsset)) { int outputTrackCount = timelineAsset.get_outputTrackCount(); if (outputTrackCount != 0) { List <IEnumerator> loadRoutine = ListPool <IEnumerator> .Get(outputTrackCount); foreach (TrackAsset outputTrack in timelineAsset.GetOutputTracks()) { foreach (TimelineClip clip in outputTrack.GetClips()) { ITimelineResourcesProvider timelineResourcesProvider = clip.get_asset() as ITimelineResourcesProvider; if (timelineResourcesProvider != null) { loadRoutine.Add(timelineResourcesProvider.LoadResources()); } } } yield return(EnumeratorUtility.ParallelRecursiveImmediateSafeExecution(loadRoutine.ToArray())); ListPool <IEnumerator> .Release(loadRoutine); } } }