protected override void ConfigureStates()
        {
            states = new IEnumerator[7];

            //flank
            states[0] = AIStates.CalculateFlank(blackboardReference, manager.components);
            states[1] = AIStates.GotoPosition(blackboardReference, 0, 8, manager.components, 6);
            states[2] = AIStates.GotoPosition(blackboardReference, 1, 8, manager.components, 6);

            //attack
            states[3] = AIStates.GotoPlayer(blackboardReference, blackboardReference.distanceToPlayer > blackboardReference.closeAttackRange ? 8 : 4, manager.components);
            states[4] = AIStates.StandAndShootPlayer(blackboardReference, manager.components);

            //Tactically place
            states[5] = AIStates.GotoCover(blackboardReference, manager.components, 4, true, 0, true);

            //re attack
            states[6] = AIStates.StandAndShootPlayer(blackboardReference, manager.components);
        }
        public void EvaluateTransitions()
        {
            for (int i = 0; i < transitions.Length; ++i)
            {
                AITransition transition = transitions[i];

                if (transition.currentState != currentState)
                {
                    continue;
                }

                bool evaluation = AIStates.CheckBoleanCondition(transition, blackboardReference, manager.components);

                if (evaluation)
                {
                    TransitionState(transition.jumpIndex);
                    break;
                }
            }
        }
 protected override void ConfigureStates()
 {
     states    = new IEnumerator[2];
     states[0] = AIStates.GotoPlayer(blackboardReference, 8, manager.components);
     states[1] = AIStates.StandardAttack(blackboardReference, manager.components);
 }