// Use this for initialization
        void Start()
        {
            // initialize the agent
            /*for(int i = 0; i < transform.childCount; i++)
            {
                agents.Add(transform.GetChild(i).GetComponent<Member>());
            }*/
            uniqueAgent = transform.GetChild(0).GetComponent<Member>();

            // State machine for member
            statePatrol = new StateMachine();

            Idle monIdle = new Idle(uniqueAgent);
            Search monWalk = new Search(uniqueAgent);
            Chase monFire = new Chase(uniqueAgent);

            //from Idle to...
            Transition transitionIdle = new Transition(uniqueAgent.changeToWalk, monWalk);
            Transition transitionWalk = new Transition(uniqueAgent.canShoot, monFire);
            Transition transitionFire = new Transition(uniqueAgent.changeToIdle, monIdle);

            monIdle.addTransition(transitionIdle);
            monWalk.addTransition(transitionWalk);
            monFire.addTransition(transitionFire);

            statePatrol.currentState = monIdle;

            // State machine for team
            stateTactic = new StateMachine();

            Regroup regroup = new Regroup(this);
            Reform reform = new Reform(this);
            StateMachineWrapper stateWrapper = new StateMachineWrapper(statePatrol);

            Transition transitionRegroup = new Transition(checkNeedToReform, reform);
            Transition transitionReform = new Transition(() => { return doTransitionToPatrol; }, stateWrapper);
            Transition transitionPatrol = new Transition(() => { return doTransitionToRegroup; }, regroup);

            regroup.addTransition(transitionRegroup);
            reform.addTransition(transitionReform);
            stateWrapper.addTransition(transitionPatrol);

            stateTactic.currentState = regroup;
        }
 public StateMachineWrapper(StateMachine p_stateMachine)
 {
     stateMachine = p_stateMachine;
 }