Beispiel #1
0
        public void Tick()
        {
            if (mNextState != null)
            {
                if (mCurState != null)
                    mCurState.Exit();

                mCurState = mNextState;
                mNextState = null;
                if (mCurState.Enter() != StateResultType.Succeed)
                {
                    mCurState.Exit();
                    mCurState = null;
                }
            }

            if (mCurState != null)
            {
                if (mCurState.Tick () != StateResultType.Succeed)
                {
                    mCurState.Exit();
                    mCurState = null;
                }
            }

            foreach (StateCondition sc in mStateConditions)
            {
                if (sc.CheckAndChangeState(mCurState, this))
                    break;
            }
        }
Beispiel #2
0
 public void RegState(State state)
 {
     mStates.Add (state.GetId (), state);
 }
Beispiel #3
0
 public abstract bool CheckAndChangeState(State curState, StateMachine machine);