static TimelineClip DuplicateClip(TimelineClip clip, IExposedPropertyTable sourceTable, IExposedPropertyTable destTable, PlayableAsset newOwner) { var newClip = Clone(clip, sourceTable, destTable, newOwner); var track = clip.parentTrack; if (track != null) { newClip.parentTrack = track; track.AddClip(newClip); } var editor = CustomTimelineEditorCache.GetClipEditor(clip); try { editor.OnCreate(newClip, track, clip); } catch (Exception e) { Debug.LogException(e); } return(newClip); }
static TimelineClip DuplicateClip(TimelineClip clip, PlayableDirector director, PlayableAsset newOwner) { var newClip = Clone(clip, director, newOwner); var track = clip.parentTrack; if (track != null) { newClip.parentTrack = track; track.AddClip(newClip); } var editor = CustomTimelineEditorCache.GetClipEditor(clip); try { editor.OnCreate(newClip, track, clip); } catch (Exception e) { Debug.LogException(e); } return(newClip); }
void DrawSimpleClip(Rect targetRect, ClipBorder border, Color overlay) { var drawOptions = UpdateClipDrawOptions(CustomTimelineEditorCache.GetClipEditor(clip), clip); var blends = GetClipBlends(); ClipDrawer.DrawSimpleClip(clip, targetRect, border, overlay, drawOptions, blends); }
/// <summary> /// Shared code for adding a clip to a track /// </summary> static void AddClipOnTrack(TimelineClip newClip, TrackAsset parentTrack, double candidateTime, Object assignableObject, WindowState state) { var playableAsset = newClip.asset as IPlayableAsset; newClip.parentTrack = null; newClip.timeScale = 1.0; newClip.mixInCurve = AnimationCurve.EaseInOut(0, 0, 1, 1); newClip.mixOutCurve = AnimationCurve.EaseInOut(0, 1, 1, 0); var playableDirector = state != null ? state.editSequence.director : null; if (assignableObject != null) { foreach (var field in ObjectReferenceField.FindObjectReferences(playableAsset.GetType())) { if (field.IsAssignable(assignableObject)) { newClip.displayName = assignableObject.name; field.Assign(newClip.asset as PlayableAsset, assignableObject, playableDirector); break; } } } // get the clip editor try { CustomTimelineEditorCache.GetClipEditor(newClip).OnCreate(newClip, parentTrack, null); } catch (Exception e) { Debug.LogException(e); } // reset the duration as the newly assigned values may have changed the default if (playableAsset != null) { var candidateDuration = playableAsset.duration; if (!double.IsInfinity(candidateDuration) && candidateDuration > 0) { newClip.duration = Math.Min(Math.Max(candidateDuration, TimelineClip.kMinDuration), TimelineClip.kMaxTimeValue); } } var newClipsByTracks = new[] { new ItemsPerTrack(parentTrack, new[] { newClip.ToItem() }) }; FinalizeInsertItemsUsingCurrentEditMode(state, newClipsByTracks, candidateTime); if (state != null) { state.Refresh(); } }
public TimelineClipGUI(TimelineClip clip, IRowGUI parent, IZOrderProvider provider) : base(parent) { zOrderProvider = provider; zOrder = provider.Next(); m_EditorItem = EditorClipFactory.GetEditorClip(clip); m_ClipEditor = CustomTimelineEditorCache.GetClipEditor(clip); supportResize = true; leftHandle = new TimelineClipHandle(this, TrimEdge.Start); rightHandle = new TimelineClipHandle(this, TrimEdge.End); ItemToItemGui.Add(clip, this); }
public static IList<PlayableDirector> GetSubTimelines(TimelineClip clip, IExposedPropertyTable director) { var editor = CustomTimelineEditorCache.GetClipEditor(clip); List<PlayableDirector> directors = new List<PlayableDirector>(); try { editor.GetSubTimelines(clip, director as PlayableDirector, directors); } catch (Exception e) { Debug.LogException(e); } return directors; }
public static bool HasCustomEditor(TimelineClip clip) { var editor = CustomTimelineEditorCache.GetClipEditor(clip); return(editor != CustomTimelineEditorCache.GetDefaultClipEditor()); }