Exemplo n.º 1
0
 public void Activate(object eventData)
 {
     if (mStartState != null)
     {
         mActiveState = mStartState;
     }
     else if (mStates.Count > 0)
     {
         mActiveState = mStates[0];
     }
     if (mActiveState != null)
     {
         mActiveState.Activate(eventData);
     }
 }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }