rimworld-animation-studio/Library/PackageCache/com.unity.timeline@1.2.18/Runtime/Events/Signals/SignalEmitter.cs
2022-09-13 00:36:34 -05:00

72 lines
2.2 KiB
C#

using System;
using UnityEngine;
using UnityEngine.Playables;
namespace UnityEngine.Timeline
{
/// <inheritdoc cref="UnityEngine.Timeline.IMarker" />
/// <summary>
/// Marker that emits a signal to a SignalReceiver.
/// </summary>
/// A SignalEmitter emits a notification through the playable system. A SignalEmitter is used with a SignalReceiver and a SignalAsset.
/// <seealso cref="UnityEngine.Timeline.SignalAsset"/>
/// <seealso cref="UnityEngine.Timeline.SignalReceiver"/>
[Serializable]
[CustomStyle("SignalEmitter")]
[ExcludeFromPreset]
public class SignalEmitter : Marker, INotification, INotificationOptionProvider
{
[SerializeField] bool m_Retroactive;
[SerializeField] bool m_EmitOnce;
[SerializeField] SignalAsset m_Asset;
/// <summary>
/// Use retroactive to emit the signal if playback starts after the SignalEmitter time.
/// </summary>
public bool retroactive
{
get { return m_Retroactive; }
set { m_Retroactive = value; }
}
/// <summary>
/// Use emitOnce to emit this signal once during loops.
/// </summary>
public bool emitOnce
{
get { return m_EmitOnce; }
set { m_EmitOnce = value; }
}
/// <summary>
/// Asset representing the signal being emitted.
/// </summary>
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;
}
}
}
}