| using System; | |
| namespace UnityEngine.Timeline | |
| { | |
| /// <summary> | |
| /// Use Marker as a base class when creating a custom marker. | |
| /// </summary> | |
| /// <remarks> | |
| /// A marker is a point in time. | |
| /// </remarks> | |
| public abstract class Marker : ScriptableObject, IMarker | |
| { | |
| [] double m_Time; | |
| /// <inheritdoc/> | |
| public TrackAsset parent { get; private set; } | |
| /// <inheritdoc/> | |
| /// <remarks> | |
| /// The marker time cannot be negative. | |
| /// </remarks> | |
| public double time | |
| { | |
| get { return m_Time; } | |
| set { m_Time = Math.Max(value, 0); } | |
| } | |
| /// <inheritdoc/> | |
| 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); | |
| } | |
| } | |
| } | |
| /// <summary> | |
| /// Override this method to receive a callback when the marker is initialized. | |
| /// </summary> | |
| /// <param name="aPent">The track that contains the marker.</param> | |
| public virtual void OnInitialize(TrackAsset aPent) | |
| { | |
| } | |
| } | |
| } | |