using Godot; namespace Cirno.Scripts.Components.FSM; public abstract partial class BaseState : Node2D, IState where TKey : notnull where TType : Node { public TKey StateId { get; } public IStateMachine StateMachine => _stateMachine; private IStateMachine _stateMachine; public TType MainObject => _stateMachine.MainObject; public virtual void Init(IStateMachine machine) { _stateMachine = machine; } public abstract void EnterState(); public abstract void ExitState(); public abstract void ProcessState(double delta); public abstract void PhysicsProcessState(double delta); }