public static TimelineClip CreateClip(this TrackAsset track, double time) { object[] customAttributes = track.GetType().GetCustomAttributes(typeof(TrackClipTypeAttribute), true); TimelineClip result; if (customAttributes.Length == 0) { result = null; } else if (TimelineWindow.instance.state == null) { result = null; } else if (customAttributes.Length == 1) { TrackClipTypeAttribute trackClipTypeAttribute = (TrackClipTypeAttribute)customAttributes[0]; TimelineClip timelineClip = TimelineHelpers.CreateClipOnTrack(trackClipTypeAttribute.inspectedType, track, TimelineWindow.instance.state); timelineClip.start = time; result = timelineClip; } else { result = null; } return(result); }
internal static Type GetCustomPlayableType(this TrackAsset track) { Type result; if (track == null) { result = null; } else { TrackClipTypeAttribute trackClipTypeAttribute = track.GetType().GetCustomAttributes(typeof(TrackClipTypeAttribute), true).OfType <TrackClipTypeAttribute>().FirstOrDefault((TrackClipTypeAttribute t) => typeof(IPlayableAsset).IsAssignableFrom(t.inspectedType) && typeof(ScriptableObject).IsAssignableFrom(t.inspectedType)); if (trackClipTypeAttribute != null) { result = trackClipTypeAttribute.inspectedType; } else { result = null; } } return(result); }