public bool DriveDistanceSM_StopState_behavior(StateBehaviorEnum behavior) { switch (behavior) { case StateBehaviorEnum.ENTRY: { StringBuilder ss = new StringBuilder(); ss.AppendFormat("{0}[{1}].DriveDistanceSM_StopState ENTRY", m_sInstanceName, m_sType); ss.AppendLine(); GlobalFuncs.trace(ss.ToString()); } break; case StateBehaviorEnum.DO: { StringBuilder ss = new StringBuilder(); ss.AppendFormat("{0}[{1}].DriveDistanceSM_StopState DO", m_sInstanceName, m_sType); ss.AppendLine(); GlobalFuncs.trace(ss.ToString()); motor[MOTOR_A] = 0; motor[MOTOR_C] = 0; } break; case StateBehaviorEnum.EXIT: { StringBuilder ss = new StringBuilder(); ss.AppendFormat("{0}[{1}].DriveDistanceSM_StopState EXIT", m_sInstanceName, m_sType); ss.AppendLine(); GlobalFuncs.trace(ss.ToString()); } break; } return true; }
public bool DriveDistanceSM_StopState(StateBehaviorEnum behavior, StateData submachineState, Signal signal, EntryTypeEnum enumEntryType, EntryEnum[] entryArray, int nArrayCount) { if (m_StateMachineImpl == null) return false; StateData state = m_StateMachineImpl.GetStateObject(submachineState, (int)StateEnum.DriveDistance_ENUM_DRIVEDISTANCESM_STOPSTATE); switch (behavior) { case StateBehaviorEnum.ENTRY: if(state.active_count > 0) return false; m_drivedistancesm = StateEnum.DriveDistance_ENUM_DRIVEDISTANCESM_STOPSTATE; state.IncrementActiveCount(); DriveDistanceSM_StopState_behavior(StateBehaviorEnum.ENTRY); if(enumEntryType == EntryTypeEnum.HistoryEntry) { return true; } DriveDistanceSM_StopState_behavior(StateBehaviorEnum.DO); if((enumEntryType == EntryTypeEnum.EntryPointEntry || enumEntryType == EntryTypeEnum.DefaultEntry) && state.IsActiveState()) m_StateMachineImpl.deferInternalEvent(EventEnum.COMPLETION, null, state); break; case StateBehaviorEnum.EXIT: if(state.active_count == 0) return false; m_drivedistancesm = StateEnum.NOSTATE; state.DecrementActiveCount(); DriveDistanceSM_StopState_behavior(StateBehaviorEnum.EXIT); m_StateMachineImpl.removeInternalEvent(state); break; } return true; }
public bool StateProc(int state, StateData submachineState, StateBehaviorEnum behavior, Signal signal, EntryTypeEnum enumEntryType, int[] entryArray, int nArrayCount) { EntryEnum[] entryEnumArray = new EntryEnum[nArrayCount]; for (int i = 0; i < nArrayCount; i++) { if (entryArray != null && i < entryArray.Length) entryEnumArray[i] = (EntryEnum)entryArray[i]; } return StateProc((StateEnum)state, submachineState, behavior, signal, enumEntryType, entryEnumArray, nArrayCount); }
public bool StateProc(StateEnum state, StateData submachineState, StateBehaviorEnum behavior, Signal signal, EntryTypeEnum enumEntryType, EntryEnum[] entryArray, int nArrayCount) { switch (state) { case StateEnum.DriveDistance_ENUM_DRIVEDISTANCESM_FORWARDSTATE: DriveDistanceSM_ForwardState(behavior, submachineState, signal, enumEntryType, entryArray, nArrayCount); break; case StateEnum.DriveDistance_ENUM_DRIVEDISTANCESM_STOPSTATE: DriveDistanceSM_StopState(behavior, submachineState, signal, enumEntryType, entryArray, nArrayCount); break; } return false; }
public virtual bool StateProc(StateEnum state, StateData submachineState, StateBehaviorEnum behavior, Signal signal, EntryTypeEnum enumEntryType) { return StateProc(state, submachineState, behavior, signal, enumEntryType, null, 0); }