#include "FSM.h" get_messages(FiniteStateMachine) Constructor() InternalStates.resize(0); OnState = -1; OwningClass = -1; data_message(SET_OWNER, SetOwner) OwningClass = data->OwningClass; data_message(ADD_STATE, AddState) State PushState = {data->OnEnter, data->OnExit, data->OnUpdate}; InternalStates.push_back(PushState); data_message(CHANGE_STATE, ChangeState) if (OnState != data->NewState) { if (OwningClass > -1 && OnState > -1 && InternalStates[OnState].OnExit > -1) { umsg(FSM, FSMCallback, StateUpdate); StateUpdate->Data.OnState = OnState; CMsg(StateUpdate, OwningClass, InternalStates[OnState].OnExit, 0); } OnState = data->NewState; if (OwningClass > -1 && OnState > -1 && InternalStates[OnState].OnEnter > -1) { umsg(FSM, FSMCallback, StateUpdate); StateUpdate->Data.OnState = OnState; CMsg(StateUpdate, OwningClass, InternalStates[OnState].OnEnter, 0); } } message(UPDATE_ME) if (OwningClass > -1 && OnState > -1 && InternalStates[OnState].OnUpdate > -1) { umsg(FSM, FSMCallback, StateUpdate); StateUpdate->Data.OnState = OnState; CMsg(StateUpdate, OwningClass, InternalStates[OnState].OnUpdate, 0); } end_messages