using System; namespace UnityEngine.Timeline { /// /// Use Marker as a base class when creating a custom marker. /// /// /// A marker is a point in time. /// public abstract class Marker : ScriptableObject, IMarker { [SerializeField, TimeField, Tooltip("Time for the marker")] double m_Time; /// public TrackAsset parent { get; private set; } /// /// /// The marker time cannot be negative. /// public double time { get { return m_Time; } set { m_Time = Math.Max(value, 0); } } /// void IMarker.Initialize(TrackAsset parentTrack) { // We only really want to update the parent when the object is first deserialized // If not a cloned track would "steal" the source's markers if (parent == null) { parent = parentTrack; try { OnInitialize(parentTrack); } catch (Exception e) { Debug.LogError(e.Message, this); } } } /// /// Override this method to receive a callback when the marker is initialized. /// /// The track that contains the marker. public virtual void OnInitialize(TrackAsset aPent) { } } }