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);
        }