コード例 #1
0
ファイル: FiniteStateMachine.cs プロジェクト: Piechota/LD40
    public void TransitionTo(int nextStateId)
    {
        AState prevState = GetCurrentState();
        AState nextState = GetState(nextStateId);

        if (prevState != null)
        {
            prevState.Leave(nextState);
        }

        CurrentStateId = nextStateId;

        if (nextState != null)
        {
            nextState.Enter(prevState);
        }
        else
        {
            CurrentStateId = AState.INVALID_STATE;
        }

        OnStateChanged.Invoke();
        OnHierarchyChanged.Invoke();
    }