| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 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    {        [SerializeField, TimeField, Tooltip("Time for the marker")] 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); }        }        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>        public virtual void OnInitialize(TrackAsset aPent)        {        }    }}
 |