namespace Syntriax.Engine.StateMachine; public interface IState { event StateUpdateEventHandler? OnStateUpdate; event StateTransitionedFromEventHandler? OnStateTransitionedFrom; event StateTransitionedToEventHandler? OnStateTransitionedTo; event StateTransitionReadyEventHandler? OnStateTransitionReady; string Name { get; } IState? GetNextState(); void Update(); void TransitionTo(IState from); void TransitionFrom(IState to); delegate void StateUpdateEventHandler(IState sender); delegate void StateTransitionedFromEventHandler(IState sender, IState toState); delegate void StateTransitionedToEventHandler(IState sender, IState fromState); delegate void StateTransitionReadyEventHandler(IState sender, IState toState); }