<HSM name="QHsmCar">
<author name="Jonathan Kaye" />
<description>A hierarchical state machine to represent car behaviors, part of traffic system</description>
<hState name="State Net">
<intAct trigger="UPDATE_POSITION">
</intAct>
<hState name="active" defaultStart="true">
<onEnter>
</onEnter>
<onLeave>
</onLeave>

<state name="Cruising" defaultStart="true">
<transition targetName="Decelerating to Stop" trigger="STOP">
</transition>
<onEnter>
</onEnter>
<onLeave>
</onLeave>
</state>
<state name="Stopped">
<transition targetName="Accelerating from Stopped" trigger="GO">
</transition>
<onEnter>
</onEnter>
<onLeave>
</onLeave>
</state>
<state name="Accelerating from Stopped">
<transition targetName="Cruising" trigger="REACHED_CRUISE_SPEED">
</transition>
<transition targetName="Decelerating to Stop" trigger="STOP">
</transition>
<onEnter>
</onEnter>
<onLeave>
</onLeave>
</state>
<state name="Decelerating to Stop">
<transition targetName="Stopped" trigger="SPEED_IS_0">
</transition>
<transition targetName="Accelerating from Stopped" trigger="GO">
</transition>
<onEnter>
</onEnter>
<onLeave>
</onLeave>
</state>
<transition trigger="OFFSCREEN" targetName="deactive">
</transition>
</hState>

<state name="deactive">
<comment>Remove the car from the Stage</comment>
<onEnter>
</onEnter>
</state>
</hState>
</HSM> <events>
<simpleEvent name="GO">
</simpleEvent>
<simpleEvent name="STOP">
</simpleEvent>
<simpleEvent name="OFFSCREEN">
</simpleEvent>
<simpleEvent name="SPEED_IS_0">
</simpleEvent>
<simpleEvent name="REACHED_CRUISE_SPEED">
</simpleEvent>
<simpleEvent name="UPDATE_POSITION">
</simpleEvent>
</events>