public void UpdateMachine(GameTime gameTime) { //don't do anything if you have no states if (states.Count == 0) { return; } //don't do anything if there's no current //state, and no default state if (currentState == null) { currentState = defaultState; } if (currentState == null) { return; } //check for transitions, and then update FSMStateEnum oldStateID = currentState.GetID(); goalStateID = currentState.CheckTransitions(); //switch if there was a transition if (goalStateID != oldStateID) { if (TransitionState(goalStateID)) { currentState.Exit(); currentState = goalState; currentState.Enter(); } } currentState.Update(gameTime); }