using Cysharp.Threading.Tasks; namespace Code.Infrastructure.StateMachine { public abstract class BaseState { public abstract TEnum MyState { get; } protected BaseState(TStateMachineContext context) { Context = context; } protected TStateMachineContext Context { get; } public virtual UniTask EnterState() => UniTask.CompletedTask; public virtual UniTask ExitState() => UniTask.CompletedTask; } }