using UOP1.StateMachine.ScriptableObjects;
namespace UOP1.StateMachine
{
///
/// An object representing an action.
///
public abstract class StateAction : IStateComponent
{
internal StateActionSO _originSO;
protected StateActionSO OriginSO => _originSO;
///
/// Called every frame the is in a with this .
///
public abstract void OnUpdate();
///
/// Awake is called when creating a new instance. Use this method to cache the components needed for the action.
///
/// The this instance belongs to.
public virtual void Awake(StateMachine stateMachine) { }
public virtual void OnStateEnter() { }
public virtual void OnStateExit() { }
///
/// This enum is used to create flexible StateActions which can execute in any of the 3 available "moments".
/// The StateAction in this case would have to implement all the relative functions, and use an if statement with this enum as a condition to decide whether to act or not in each moment.
///
public enum SpecificMoment
{
OnStateEnter, OnStateExit, OnUpdate,
}
}
}