Example #1
0
 public void ChangeState(State newState)
 {
     currentState.Exit(this);
     previousState = currentState;
     currentState = newState;
     currentState.Enter(this);
 }
Example #2
0
 // Use this for initialization
 internal void Init(GameObject obj, Environment env)
 {
     agent = obj;
     controller = agent.GetComponent<AgentAI>()._controller as FSMAI;
     environment = env;
     currentState = InitialState.GetInstance();
     previousState = null;
     currentState.Enter(this);
 }
Example #3
0
        /// <summary>
        /// Конструктор.
        /// Дан список конечных состояний (его длина n). В результате появляются вспомогательные состояния,
        /// которые первые n-1 конечных состояний сводят к n-му конечному состоянию
        /// В результате для проверки достаточно одного конечного состояния.
        /// </summary>
        /// <param name="_startState"> начальное состояние </param>
        /// <param name="_finishState"> список конечных состояний </param>
        /// <param name="_states"> список состояний </param>
        public Automation(State _startState, List<State> _finishState, List<State> _states)
        {
            startState = _startState;

            for (int i = 0; i < _states.Count; i++)
                states.Add(_states[i]);

            State endState = _finishState[_finishState.Count - 1];
            for (int i = 0; i < _finishState.Count; i++)
            {
                State s = new State(endState.nameState);
                //endState.links.Add(s);

                foreach (var element in states)
                    if (element.nameState == _finishState[i].nameState)
                    {
                        element.links.Add(new Link() { newState = s, symbol = "" });
                        continue;
                    }

            }
            finishState = endState;
        }
Example #4
0
 public Transition(State target, FSMAction action)
 {
     this.target = target;
     this.action = action;
 }
Example #5
0
File: FSM.cs Project: sseng/fsm
 public static FSMContext createFSMInstance(State currentState, FSMAction init, string name)
 {
     return new FSMContext(currentState, init, name);
 }
Example #6
0
        void ChangeState(State newState)
        {
            switch (currentState)
            {
            case State.INITIAL:
                break;

            case State.WANDER:
                break;

            case State.GO_TO_EGG:
                break;

            case State.GO_TO_SEED:
                break;

            case State.BRING_EGG:

                transform.GetChild(0).transform.parent = null;

                break;

            case State.BRING_SEED:

                if (newState == State.GO_TO_EGG)
                {
                    GraphNode node = AstarPath.active.GetNearest(transform.GetChild(0).transform.position, NNConstraint.Default).node;
                    transform.GetChild(0).transform.position = (Vector3)node.position;
                    transform.GetChild(0).tag = "SEED";
                    transform.GetChild(0).transform.parent = null;

                    break;
                }

                if (newState == State.WANDER)
                {
                    transform.GetChild(0).transform.parent = null;
                }

                break;
            }

            switch (newState)
            {
            case State.INITIAL:
                break;

            case State.WANDER:

                pathFeeder.enabled = true;
                pathFeeder.target  = GetTarget("wayPoint");

                break;

            case State.GO_TO_EGG:

                pathFeeder.target = currentEGG;

                break;

            case State.GO_TO_SEED:

                pathFeeder.target = currentSEED;

                break;

            case State.BRING_EGG:

                currentEGG.transform.parent = transform;
                transform.GetChild(0).tag   = "DONE";
                pathFeeder.target           = GetTarget("hatchingPoint");

                break;

            case State.BRING_SEED:

                currentSEED.transform.parent = transform;
                transform.GetChild(0).tag    = "DONE";
                pathFeeder.target            = GetTarget("storePoint");

                break;
            }

            currentState = newState;
        }