private void InitFSM() { _btFiniteStateMachineManagerComponent = GetComponent <BTFiniteStateMachineManager>(); FSM = new BTFiniteStateMachine <FStatesBattle>(FStatesBattle.MENU); FSM.OnStarted_AddListener(FStatesBattle.MENU, Menu_Enter); FSM.OnStarted_AddListener(FStatesBattle.START, Start_Enter); FSM.OnStarted_AddListener(FStatesBattle.PLAYERTURN, PlayerTurn_Enter); FSM.OnStarted_AddListener(FStatesBattle.ENEMYTURN, EnemyTurn_Enter); FSM.OnStarted_AddListener(FStatesBattle.PLAYERWIN, PlayerWin_Enter); FSM.OnStarted_AddListener(FStatesBattle.ENEMYWIN, EnemyWin_Enter); FSM.OnStateChanged_AddListener(FSMOnStateChanged_Listener); _btFiniteStateMachineManagerComponent.AddFSM(FSM); }
/// <summary> /// Add events to FSM states and set initial state /// </summary> private void InitStates() { FSMFlyable = new BTFiniteStateMachine <FStatesFlyable>(StartInAir ? FStatesFlyable.Flying : FStatesFlyable.NotFlying); FSMFlyable.OnStarted_AddListener(FStatesFlyable.TakingOff, TakingOff_Enter); FSMFlyable.SetUpdateAction(FStatesFlyable.TakingOff, TakingOff_Update); FSMFlyable.OnStopped_AddListener(FStatesFlyable.TakingOff, TakingOff_Exit); FSMFlyable.OnStarted_AddListener(FStatesFlyable.Landing, Landing_Enter); FSMFlyable.SetUpdateAction(FStatesFlyable.Landing, Landing_Update); FSMFlyable.OnStarted_AddListener(FStatesFlyable.NotFlying, NotFlying_Enter); FSMFlyable.OnStopped_AddListener(FStatesFlyable.NotFlying, NotFlying_Exit); FSMFlyable.OnStarted_AddListener(FStatesFlyable.Flying, Flying_Enter); FSMFlyable.OnStateChanged_AddListener(OnFlyableStateChanged_Listener); CharacterAnimParams.TrySetFStateFlyable(AnimatorComponent, (int)FSMFlyable.CurrentState); }