public void PerformTransition(StateTransition trans) { if (trans == StateTransition.NullTransition) { return; } StateID id = _currentState.GetTargetState(trans); if (id == StateID.NullStateID) { return; } _currentStateID = id; foreach (FiniteState fs in _stateList) { if (fs.ID == _currentStateID) { _currentState.DoBeforeQuit(); _currentState = fs; _currentState.DoBeforeEnter(); break; } } }