public void SetPreviousState() { state = previousState; }
public SaveableAgent(Vector3 position, StateMachineEnum currentState) { this.position = new SerializableVector3(position); this.currentState = currentState; }
// Public public void SetState(StateMachineEnum nextState) { previousState = state; state = nextState; }
// Editor Event Actions public void Chase() { previousState = state; state = StateMachineEnum.CHASE; }
public void runStateMachine(StateMachineEnum statemachine) { if (m_StateMachineImpl == null) return; List<StateData> activeStateArray = new List<StateData>(); if(m_StateMachineImpl.GetCurrentStates(activeStateArray) > 0) return; switch (statemachine) { case StateMachineEnum.DriveDistance_ENUM_DRIVEDISTANCESM: { const int nArrayCount = 1; EntryEnum[] entryArray = new EntryEnum[] {EntryEnum.DriveDistance_ENUM_DRIVEDISTANCESM_INITIAL_10}; runStateMachine(statemachine, null, null, entryArray, nArrayCount); //submachineState is NULL if run standalone statemachine } break; } }
private void runStateMachine(StateMachineEnum statemachine, StateData submachineState, Signal signal, EntryEnum[] entryArray, int nEntryCount) { if (m_StateMachineImpl == null) return; if(submachineState == null) { StateInitialData initialData = new StateInitialData((int)StateEnum.DriveDistance_VIRTUAL_SUBMACHINESTATE, (int)StateEnum.NOSTATE, 1, false, "DriveDistance_VIRTUAL_SUBMACHINESTATE", ""); submachineState = new StateData(m_StateMachineImpl, initialData); submachineState.IncrementActiveCount(); m_StateMachineImpl.GetStateData().Add(submachineState); } switch (statemachine) { case StateMachineEnum.DriveDistance_ENUM_DRIVEDISTANCESM: { const int nArrayCount = 2; StateInitialData[] initialDataArray = new StateInitialData[nArrayCount] { new StateInitialData((int)StateEnum.DriveDistance_ENUM_DRIVEDISTANCESM_FORWARDSTATE, (int)StateEnum.NOSTATE, 0, false, "DriveDistance_DriveDistanceSM_ForwardState", "{7C4E3CFB-F8EA-4d72-83D7-1257A76F1FFF}"), new StateInitialData((int)StateEnum.DriveDistance_ENUM_DRIVEDISTANCESM_STOPSTATE, (int)StateEnum.NOSTATE, 0, false, "DriveDistance_DriveDistanceSM_StopState", "{EB0BB228-E76D-4701-B2F9-04C5EC06EC50}") }; m_StateMachineImpl.CreateStateObjects(initialDataArray, nArrayCount, submachineState); } for(int i = 0; i < nEntryCount; i++) { switch(entryArray[i]) { case EntryEnum.DriveDistance_ENUM_DRIVEDISTANCESM_INITIAL_10: TransitionProc(TransitionEnum.DriveDistance_ENUM_INITIAL_10__TO__FORWARDSTATE_5, signal, submachineState); break; } } if(submachineState.IsActiveState()) m_StateMachineImpl.deferInternalEvent(EventEnum.COMPLETION, null, submachineState); break; } }
private void runStateMachine(StateMachineEnum statemachine, StateData submachineState, Signal signal) { runStateMachine(statemachine, submachineState, signal, null, 0); }