public void Activate(object eventData) { if (mStartState != null) { mActiveState = mStartState; } else if (mStates.Count > 0) { mActiveState = mStates[0]; } if (mActiveState != null) { mActiveState.Activate(eventData); } }
public void Activity(float dt) { if (mActiveState == null) { return; } while (mEventQueue.Count > 0) { StateEvent stateEvent = mEventQueue.Dequeue(); // can we transition if (mTransitionTable[mActiveState].ContainsKey(stateEvent.mEventID)) { mActiveState.Deactivate(); mActiveState = mTransitionTable[mActiveState][stateEvent.mEventID]; // dequeue any remaining events, invalid mEventQueue.Clear(); mActiveState.Activate(stateEvent.mEventData); // activation may enque new events allowing double transition // do not simply break } else { Debug.WriteLine("WTF, event not handled"); } } if (mActiveState != null) { mActiveState.Update(dt); } }
public void Activity(float dt) { if(mActiveState == null) { return; } while (mEventQueue.Count > 0) { StateEvent stateEvent = mEventQueue.Dequeue(); // can we transition if (mTransitionTable[mActiveState].ContainsKey(stateEvent.mEventID)) { mActiveState.Deactivate(); mActiveState = mTransitionTable[mActiveState][stateEvent.mEventID]; // dequeue any remaining events, invalid mEventQueue.Clear(); mActiveState.Activate(stateEvent.mEventData); // activation may enque new events allowing double transition // do not simply break } else { Debug.WriteLine("WTF, event not handled"); } } if (mActiveState != null) { mActiveState.Update(dt); } }