using System; using UnityEngine; using UnityEngine.Playables; namespace UnityEngine.Timeline { /// /// /// Marker that emits a signal to a SignalReceiver. /// /// A SignalEmitter emits a notification through the playable system. A SignalEmitter is used with a SignalReceiver and a SignalAsset. /// /// [Serializable] [CustomStyle("SignalEmitter")] [ExcludeFromPreset] public class SignalEmitter : Marker, INotification, INotificationOptionProvider { [SerializeField] bool m_Retroactive; [SerializeField] bool m_EmitOnce; [SerializeField] SignalAsset m_Asset; /// /// Use retroactive to emit the signal if playback starts after the SignalEmitter time. /// public bool retroactive { get { return m_Retroactive; } set { m_Retroactive = value; } } /// /// Use emitOnce to emit this signal once during loops. /// public bool emitOnce { get { return m_EmitOnce; } set { m_EmitOnce = value; } } /// /// Asset representing the signal being emitted. /// public SignalAsset asset { get { return m_Asset; } set { m_Asset = value; } } PropertyName INotification.id { get { if (m_Asset != null) { return new PropertyName(m_Asset.name); } return new PropertyName(string.Empty); } } NotificationFlags INotificationOptionProvider.flags { get { return (retroactive ? NotificationFlags.Retroactive : default(NotificationFlags)) | (emitOnce ? NotificationFlags.TriggerOnce : default(NotificationFlags)) | NotificationFlags.TriggerInEditMode; } } } }