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 Initial_10__TO__ForwardState_5(Signal signal, StateData submachineState) { if (m_StateMachineImpl == null) return; if(submachineState != null) submachineState.IncrementActiveCount(); Initial_10__TO__ForwardState_5_effect(signal); m_StateMachineImpl.currentTransition.SetActive(m_StateMachineImpl); StateProc(StateEnum.DriveDistance_ENUM_DRIVEDISTANCESM_FORWARDSTATE, submachineState, StateBehaviorEnum.ENTRY, signal, EntryTypeEnum.DefaultEntry); }