Beispiel #1
0
		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;
		}
Beispiel #2
0
		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;
		}
Beispiel #3
0
		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);
		}
Beispiel #4
0
		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;
		}
Beispiel #5
0
		public virtual bool StateProc(StateEnum state, StateData submachineState, StateBehaviorEnum behavior, Signal signal, EntryTypeEnum enumEntryType)
		{
			return StateProc(state, submachineState, behavior, signal, enumEntryType, null, 0);
		}