22 lines
		
	
	
		
			739 B
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			739 B
		
	
	
	
		
			C#
		
	
	
	
	
	
using Engine.Core;
 | 
						|
 | 
						|
namespace Engine.Systems.StateMachine;
 | 
						|
 | 
						|
public interface IState : IEntity, INameable
 | 
						|
{
 | 
						|
    Event<IState> OnStateUpdate { get; }
 | 
						|
    Event<IState, StateTransitionedFromArguments> OnStateTransitionedFrom { get; }
 | 
						|
    Event<IState, StateTransitionedToArguments> OnStateTransitionedTo { get; }
 | 
						|
    Event<IState, StateTransitionReadyArguments> OnStateTransitionReady { get; }
 | 
						|
 | 
						|
    IState? GetNextState();
 | 
						|
 | 
						|
    void Update();
 | 
						|
    void TransitionTo(IState from);
 | 
						|
    void TransitionFrom(IState to);
 | 
						|
 | 
						|
    readonly record struct StateTransitionedFromArguments(IState ToState);
 | 
						|
    readonly record struct StateTransitionedToArguments(IState FromState);
 | 
						|
    readonly record struct StateTransitionReadyArguments(IState ToState);
 | 
						|
}
 |