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; } }
public void RegState(State state) { mStates.Add (state.GetId (), state); }
public abstract bool CheckAndChangeState(State curState, StateMachine machine);