step-timeline/Scripts/Commands/InvokeEventCmd.cs

56 lines
1.4 KiB
C#

using TriInspector;
using UnityEngine;
using UnityEngine.Events;
namespace R0bbie.Timeline
{
/// <summary>
/// Command for simply invoking a Unity event
/// </summary>
[AddComponentMenu("Timeline/Commands/Invoke Unity Event (Step Command)")]
[RequireComponent(typeof(Step))]
public class InvokeEventCmd : StepCmd
{
// Exposed Variables
[Title("Event")]
[SerializeField] UnityEvent commandEvent;
/// <summary>
/// Initialise the command
/// </summary>
protected override void Init()
{
init = true;
}
/// <summary>
/// Do whatever this command is designed to do
/// </summary>
/// <param name="_parentStep"></param>
public override void Activate(Step _parentStep)
{
base.Activate(_parentStep);
// Play the event
commandEvent?.Invoke();
// Immediately complete command now event invoked
Complete();
}
/// <summary>
/// Do any cleanup stuff here, resetting command state, clearing garbage, etc. Called by parent StepCmd after Complete, should never be called within child command itself
/// </summary>
protected override void Cleanup()
{
active = false;
}
}
}