public static IMarker CreateMarkerOnTrack(Type markerType, Object assignableObject, TrackAsset parentTrack, double candidateTime) { WindowState state = null; if (TimelineWindow.instance != null) { state = TimelineWindow.instance.state; } var newMarker = parentTrack.CreateMarker(markerType, candidateTime); //Throws if marker is not an object if (assignableObject != null) { var director = state != null ? state.editSequence.director : null; foreach (var field in ObjectReferenceField.FindObjectReferences(markerType)) { if (field.IsAssignable(assignableObject)) { field.Assign(newMarker as ScriptableObject, assignableObject, director); break; } } } try { CustomTimelineEditorCache.GetMarkerEditor(newMarker).OnCreate(newMarker, null); } catch (Exception e) { Debug.LogException(e); } return(newMarker); }
//---------------------------------------------------------------------------------------------------------------------- void CreateMarker() { TimelineClip clipOwner = m_clipDataOwner.GetOwner(); TrackAsset trackAsset = clipOwner?.GetParentTrack(); Assert.IsNotNull(trackAsset); Assert.IsNull(m_marker); m_marker = trackAsset.CreateMarker <FrameMarker>(m_localTime); }
public static IMarker CreateMarkerAtTime(TrackAsset parent, Type markerType, double time) { var marker = parent.CreateMarker(markerType, time); var obj = marker as ScriptableObject; if (obj != null) { obj.name = TypeUtility.GetDisplayName(markerType); } SelectionManager.Add(marker); return(marker); }
public static IMarker CreateMarkerAtTime(TrackAsset parent, Type markerType, double time) { var marker = parent.CreateMarker(markerType, time); var obj = marker as ScriptableObject; if (obj != null) { obj.name = TypeUtility.GetDisplayName(markerType); } SelectionManager.Add(marker); try { CustomTimelineEditorCache.GetMarkerEditor(marker).OnCreate(marker, null); } catch (Exception e) { Debug.LogException(e); } return(marker); }