This commit is contained in:
2025-01-24 06:04:01 +01:00
parent e5c19a4c44
commit e6390b2c33
7 changed files with 1113 additions and 1415 deletions
@@ -42,6 +42,341 @@
</Template>
<!-- KHOFMANN START -->
<!-- CUSTOM BASE START -->
<Template Name="MD11_GT_Interaction_WheelAndContinuousLeft_PushPull">
<Parameters Type="Default">
<CURSOR_LEFT>TurnLeft</CURSOR_LEFT>
<CURSOR_RIGHT>TurnRight</CURSOR_RIGHT>
<CENTER_RADIUS>0.004</CENTER_RADIUS>
<HELPID />
<TOOLTIPID />
<LEFT_LEAVE_CODE />
<THRESHOLD_X_INPUT>0.2</THRESHOLD_X_INPUT>
<THRESHOLD_X_MOUSE>0.01</THRESHOLD_X_MOUSE>
<THRESHOLD_Y_INPUT>0.05</THRESHOLD_Y_INPUT>
<THRESHOLD_Y_MOUSE>0.025</THRESHOLD_Y_MOUSE>
<CURSOR_UP>UpArrow</CURSOR_UP>
<CURSOR_DOWN>DownArrow</CURSOR_DOWN>
<UPDATE_FREQUENCY>10</UPDATE_FREQUENCY>
<Condition NotEmpty="CLOCKWISE_CODE">
<True>
<CLOCKWISE_CODE_DEFAULT_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DEFAULT_IM>
<CLOCKWISE_CODE_DRAG_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DRAG_IM>
</True>
<False>
<CLOCKWISE_CODE_DEFAULT_IM />
<CLOCKWISE_CODE_DRAG_IM />
</False>
</Condition>
<Condition NotEmpty="ANTICLOCKWISE_CODE">
<True>
<ANTICLOCKWISE_CODE_DEFAULT_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DEFAULT_IM>
<ANTICLOCKWISE_CODE_DRAG_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DRAG_IM>
</True>
<False>
<ANTICLOCKWISE_CODE_DEFAULT_IM />
<ANTICLOCKWISE_CODE_DRAG_IM />
</False>
</Condition>
<Condition Valid="NO_PUSH_PULL_LOCK">
<True>
<RESET_LOCK />
<UPDATE_LAST_PUSH_TIME />
<UPDATE_LAST_PULL_TIME />
<CAN_BE_PUSHED>1</CAN_BE_PUSHED>
<CAN_BE_PULLED>1</CAN_BE_PULLED>
<LOCK_PUSH />
<LOCK_PULL />
<RESET_PUSH />
<RESET_PULL />
</True>
<False>
<PUSH_RESET_DELAY>0.15</PUSH_RESET_DELAY>
<PULL_RESET_DELAY>0.15</PULL_RESET_DELAY>
<RESET_LOCK>
(O:IsPushed) if{ 0 (&gt;O:IsPushed) }
(O:IsPulled) if{ 0 (&gt;O:IsPulled) }
</RESET_LOCK>
<UPDATE_LAST_PUSH_TIME>
(M:InputType) 1 == if{
(E:SIMULATION TIME, second) (&gt;O:_LastPushTime)
}
</UPDATE_LAST_PUSH_TIME>
<UPDATE_LAST_PULL_TIME>
(M:InputType) 1 == if{
(E:SIMULATION TIME, second) (&gt;O:_LastPullTime)
}
</UPDATE_LAST_PULL_TIME>
<CAN_BE_PUSHED>(O:IsPushed) ! @IsUsingRelativePos and</CAN_BE_PUSHED>
<CAN_BE_PULLED>(O:IsPulled) ! @IsUsingRelativePos and</CAN_BE_PULLED>
<LOCK_PUSH>1 (&gt;O:IsPushed)</LOCK_PUSH>
<LOCK_PULL>1 (&gt;O:IsPulled)</LOCK_PULL>
<RESET_PUSH>(O:IsPushed) if{ 0 (&gt;O:IsPushed) }</RESET_PUSH>
<RESET_PULL>(O:IsPulled) if{ 0 (&gt;O:IsPulled) }</RESET_PULL>
</False>
</Condition>
<ON_DOWN_EVENT />
<ADDITIONAL_EVENT_HANDLING />
<ON_BEFORE_DELTA_X_THRESHOLD_TEST />
<ON_BEFORE_DELTA_Y_THRESHOLD_TEST />
<UPARROW_DRAG_IM />
<DOWNARROW_DRAG_IM />
<LEFTARROW_DRAG_IM />
<RIGHTARROW_DRAG_IM />
<CURSOR_CENTER_DRAG_IM />
<CURSOR_DRAG_IM>Grab</CURSOR_DRAG_IM>
<ALWAYS_USE_ANIM_LAG>False</ALWAYS_USE_ANIM_LAG>
<LOCKABLE_HANDLE_CODE_UP />
<NO_LOCK_HANDLE_CODE_UP />
<LOCKABLE_HANDLE_CODE_DN />
<NO_LOCK_HANDLE_CODE_DN />
</Parameters>
<Parameters Type="Override">
<THRESHOLD_X>#THRESHOLD_X_INPUT# #THRESHOLD_X_MOUSE# (M:InputType) 1 == ?</THRESHOLD_X>
<THRESHOLD_Y>#THRESHOLD_Y_INPUT# #THRESHOLD_Y_MOUSE# (M:InputType) 1 == ?</THRESHOLD_Y>
<Condition Valid="INVERT_AXIS_CODE">
<True>
<Condition NotEmpty="CODE_UP">
<False>
<CODE_UP>#PULL_CODE#</CODE_UP>
</False>
</Condition>
<Condition NotEmpty="CODE_DN">
<False>
<CODE_DN>#PUSH_CODE#</CODE_DN>
</False>
</Condition>
<Condition NotEmpty="CODE_LEFT">
<False>
<CODE_LEFT>#CLOCKWISE_CODE_DRAG_IM#</CODE_LEFT>
</False>
</Condition>
<Condition NotEmpty="CODE_RIGHT">
<False>
<CODE_RIGHT>#ANTICLOCKWISE_CODE_DRAG_IM#</CODE_RIGHT>
</False>
</Condition>
</True>
<False>
<Condition NotEmpty="CODE_UP">
<False>
<CODE_UP>#PUSH_CODE#</CODE_UP>
</False>
</Condition>
<Condition NotEmpty="CODE_DN">
<False>
<CODE_DN>#PULL_CODE#</CODE_DN>
</False>
</Condition>
<Condition NotEmpty="CODE_LEFT">
<False>
<CODE_LEFT>#ANTICLOCKWISE_CODE_DRAG_IM#</CODE_LEFT>
</False>
</Condition>
<Condition NotEmpty="CODE_RIGHT">
<False>
<CODE_RIGHT>#CLOCKWISE_CODE_DRAG_IM#</CODE_RIGHT>
</False>
</Condition>
</False>
</Condition>
</Parameters>
<Parameters Type="Override">
<Condition NotEmpty="CODE_UP">
<LOCKABLE_HANDLE_CODE_UP>(M:Event) &apos;LeftSingle&apos; scmi 0 == if{ #CODE_UP# quit }</LOCKABLE_HANDLE_CODE_UP>
<NO_LOCK_HANDLE_CODE_UP>(M:Event) &apos;RightSingle&apos; scmi 0 == if{ #CODE_UP# quit }</NO_LOCK_HANDLE_CODE_UP>
</Condition>
<Condition NotEmpty="CODE_DN">
<LOCKABLE_HANDLE_CODE_DN>(M:Event) &apos;RightSingle&apos; scmi 0 == if{ #CODE_DN# quit }</LOCKABLE_HANDLE_CODE_DN>
<NO_LOCK_HANDLE_CODE_DN>(M:Event) &apos;MiddleSingle&apos; scmi 0 == if{ #CODE_DN# quit }</NO_LOCK_HANDLE_CODE_DN>
</Condition>
</Parameters>
<Parameters Type="Default">
<LOCKABLE_INPUTS_HANDLING>
#LOCKABLE_HANDLE_CODE_UP#
#LOCKABLE_HANDLE_CODE_DN#
</LOCKABLE_INPUTS_HANDLING>
<NO_LOCK_INPUTS_HANDLING>
#NO_LOCK_HANDLE_CODE_UP#
#NO_LOCK_HANDLE_CODE_DN#
</NO_LOCK_INPUTS_HANDLING>
</Parameters>
<Parameters Type="Default">
<IM_DRAG_ADDITIONAL_EVENT_HANDLING>
(M:InputType) 1 == if{
#LOCKABLE_INPUTS_HANDLING#
} els{
#NO_LOCK_INPUTS_HANDLING#
}
</IM_DRAG_ADDITIONAL_EVENT_HANDLING>
<MOUSEFLAGS_DEFAULT_IM>LeftSingle+LeftRelease+WheelUp+WheelDown</MOUSEFLAGS_DEFAULT_IM>
<MOUSEFLAGS_DRAG_IM>MiddleAll+RightAll+LeftAll+Wheel+Lock+Unlock</MOUSEFLAGS_DRAG_IM>
</Parameters>
<Update Frequency="#UPDATE_FREQUENCY#" InteractionModel="Default">
(O:_MouseDownRelativePosX) 0 &gt; if{ #CLOCKWISE_CODE_DEFAULT_IM# } els{
(O:_MouseDownRelativePosX) 0 &lt; if{ #ANTICLOCKWISE_CODE_DEFAULT_IM# } }
</Update>
<Condition Valid="NO_PUSH_PULL_LOCK">
<False>
<Update Frequency="#UPDATE_FREQUENCY#" InteractionModel="Drag">
(O:IsPushed) (O:_LastPushTime) 0 &gt; and if{
(E:SIMULATION TIME, second) (O:_LastPushTime) - #PUSH_RESET_DELAY# &gt; if{
0 (&gt;O:IsPushed)
0 (&gt;O:_LastPushTime)
}
}
(O:IsPulled) (O:_LastPullTime) 0 &gt; and if{
(E:SIMULATION TIME, second) (O:_LastPullTime) - #PULL_RESET_DELAY# &gt; if{
0 (&gt;O:IsPulled)
0 (&gt;O:_LastPullTime)
}
}
</Update>
</False>
</Condition>
<UseTemplate Name="ASOBO_GT_MouseRect">
<LEFTARROW>#CURSOR_LEFT#</LEFTARROW>
<RIGHTARROW>#CURSOR_RIGHT#</RIGHTARROW>
<UPARROW>#CURSOR_UP#</UPARROW>
<DOWNARROW>#CURSOR_DOWN#</DOWNARROW>
<CALLBACKCODE_DEFAULT_IM>
(M:Event) &apos;WheelUp&apos; scmi 0 == if{ #CLOCKWISE_CODE_DEFAULT_IM# } els{
(M:Event) &apos;WheelDown&apos; scmi 0 == if{ #ANTICLOCKWISE_CODE_DEFAULT_IM# } els{
(M:Event) &apos;LeftRelease&apos; scmi 0 == if{ 0 (&gt;O:_MouseDownRelativePosX) }
(M:RelativeX) abs #CENTER_RADIUS# &gt;
(M:RelativeY) abs #CENTER_RADIUS# &gt; or if{
(M:RelativeX) abs (M:RelativeY) abs &gt; if{
(M:Event) &apos;LeftSingle&apos; scmi 0 ==
if{ (M:RelativeX) (&gt;O:_MouseDownRelativePosX) }
} els{
0 (&gt;O:_MouseDownRelativePosX)
(M:Event) &apos;LeftSingle&apos; scmi 0 ==
if{
(M:RelativeY) 0 &gt; if{
#PUSH_CODE#
1 (&gt;O:IsPushed)
} els{
#PULL_CODE#
1 (&gt;O:IsPulled)
}
}
els{ (M:Event) &apos;LeftRelease&apos; scmi 0 == if{
#LEFT_LEAVE_CODE#
0 (&gt;O:IsPulled)
0 (&gt;O:IsPushed)
}
}
}
}
}
}
</CALLBACKCODE_DEFAULT_IM>
<CALLBACKCODE_DRAG_IM>
#ADDITIONAL_EVENT_HANDLING#
#IM_DRAG_ADDITIONAL_EVENT_HANDLING#
(M:Event) &apos;MiddleRelease&apos; scmi 0 == if{ 1 (&gt;L:MEVENT) }
(M:Event) &apos;LeftRelease&apos; scmi 0 == if{ 2 (&gt;L:MEVENT) }
(M:Event) &apos;RightRelease&apos; scmi 0 == if{ 3 (&gt;L:MEVENT) }
(M:Event) &apos;WheelUp&apos; scmi 0 == if{ #CLOCKWISE_CODE_DRAG_IM# } els{
(M:Event) &apos;WheelDown&apos; scmi 0 == if{ #ANTICLOCKWISE_CODE_DRAG_IM# } els{
(M:Event) &apos;Lock&apos; scmi 0 == if{
(M:RelativeX) (&gt;O:_LastX)
(M:RelativeY) (&gt;O:_LastY)
#ON_DOWN_EVENT#
} els{
(M:Event) &apos;Unlock&apos; scmi 0 ==
(M:Event) &apos;LeftRelease&apos; scmi 0 == ||
(M:Event) &apos;MiddleRelease&apos; scmi 0 == ||
(M:Event) &apos;RightRelease&apos; scmi 0 == ||
if{
0 (&gt;O:_LastX)
0 (&gt;O:_LastY)
4 (&gt;L:MEVENT)
#RESET_LOCK#
#LEFT_LEAVE_CODE#
} els{
(M:Event) &apos;LeftDrag&apos; scmi 0 == if{
(M:RelativeX) (O:_LastX) - sp0
#THRESHOLD_X# (&gt;O:_InputThresholdX)
#ON_BEFORE_DELTA_X_THRESHOLD_TEST#
l0 abs (O:_InputThresholdX) &gt; if{
l0 (O:_InputThresholdX) / abs flr sp1
l0 (O:_InputThresholdX) % abs sp2
:1 (* for loop *)
l1 0 &lt;= if{ g2 }
l1 -- sp1
l0 0 &gt; if{
#CODE_RIGHT#
} els{
#CODE_LEFT#
}
g1
:2
l0 0 &gt; if{
(M:RelativeX) l2 - (&gt;O:_LastX)
} els{
(M:RelativeX) l2 + (&gt;O:_LastX)
}
}
(M:RelativeY) (O:_LastY) - sp0
#THRESHOLD_Y# (&gt;O:_InputThresholdY)
#ON_BEFORE_DELTA_Y_THRESHOLD_TEST#
l0 abs (O:_InputThresholdY) &gt; if{
l0 (O:_InputThresholdY) / abs flr sp1
l0 (O:_InputThresholdY) % abs sp2
:3 (* for loop *)
l1 0 &lt;= if{ g4 }
l1 -- sp1
l0 0 &gt; if{
#UPDATE_LAST_PUSH_TIME#
#CAN_BE_PUSHED# if{
#LOCK_PUSH#
#CODE_UP#
}
#RESET_PULL#
} els{
#UPDATE_LAST_PULL_TIME#
#CAN_BE_PULLED# if{
#LOCK_PULL#
#CODE_DN#
}
#RESET_PUSH#
}
g3
:4
l0 0 &gt; if{
(M:RelativeY) l2 - (&gt;O:_LastY)
} els{
(M:RelativeY) l2 + (&gt;O:_LastY)
}
}
}
}
}
}
}
quit
</CALLBACKCODE_DRAG_IM>
</UseTemplate>
</Template>
<Template Name="MD11_GT_Push_Button">
<Parameters Type="Default">
<ANIM_LENGTH>100</ANIM_LENGTH>
<ANIM_DURATION>0.5</ANIM_DURATION>
<LEFT_SINGLE_CODE_DEFAULT_IM>#LEFT_SINGLE_CODE#</LEFT_SINGLE_CODE_DEFAULT_IM>
<LEFT_SINGLE_CODE_DRAG_IM>#LEFT_SINGLE_CODE#</LEFT_SINGLE_CODE_DRAG_IM>
<DISABLE_INTERACTION_LOCK>True</DISABLE_INTERACTION_LOCK>
</Parameters>
<UseTemplate Name="ASOBO_GT_Anim_Code" />
<UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_Leave_Code">
<LEFT_SINGLE_CODE>#LEFT_SINGLE_CODE#</LEFT_SINGLE_CODE>
<LEFT_LEAVE_CODE> #LEFT_LEAVE_CODE#</LEFT_LEAVE_CODE>
</UseTemplate>
</Template>
<!-- CUSTOM BASE END -->
<Template Name="MD11_Annunciator_Template">
<Parameters Type="Default">
<VAR_NAME>MD11_LTS_BRT_DIM</VAR_NAME>
@@ -155,7 +490,7 @@
<ANIM_DURATION>0.1</ANIM_DURATION>
</Parameters>
<Component ID="#NODE_NAME#" Node="#NODE_NAME#">
<UseTemplate Name="ASOBO_GT_Push_Button">
<UseTemplate Name="MD11_GT_Push_Button">
<Condition Check="ANIM_NAME">
<False>
<ANIM_NAME>#NODE_NAME#</ANIM_NAME>
@@ -166,12 +501,17 @@
<ANIM_CODE>(L:#NODE_NAME#) 10 *</ANIM_CODE>
</False>
</Condition>
<Condition Check="ANIM_VAR">
<False>
<SWITCH_POSITION_TYPE>L</SWITCH_POSITION_TYPE>
<SWITCH_POSITION_VAR>#NODE_NAME#</SWITCH_POSITION_VAR>
</False>
</Condition>
<ANIM_LENGTH>#ANIM_LENGTH#</ANIM_LENGTH>
<ANIM_LAG>#ANIM_LAG#</ANIM_LAG>
<ANIM_DURATION>#ANIM_DURATION#</ANIM_DURATION>
<LEFT_SINGLE_CODE>#CODE_PRESS#</LEFT_SINGLE_CODE>
<LEFT_LEAVE_CODE>#CODE_RELEASE#</LEFT_LEAVE_CODE>
<MIN_HELD_DURATION>#MIN_HELD_DURATION#</MIN_HELD_DURATION>
</UseTemplate>
</Component>
</Template>
@@ -837,9 +1177,9 @@
<OVERRIDE_ANIM_CODE>(L:#NODE_NAME#)</OVERRIDE_ANIM_CODE>
</False>
</Condition>
<Condition Check="PUSH_ANIM_CODE">
<Condition Check="ANIM_CODE_PUSH">
<True>
<OVERRIDE_PUSH_ANIM_CODE>#PUSH_ANIM_CODE#</OVERRIDE_PUSH_ANIM_CODE>
<OVERRIDE_PUSH_ANIM_CODE>#ANIM_CODE_PUSH#</OVERRIDE_PUSH_ANIM_CODE>
</True>
<False>
<OVERRIDE_PUSH_ANIM_CODE>(L:#NODE_NAME#)</OVERRIDE_PUSH_ANIM_CODE>
@@ -853,6 +1193,119 @@
</Component>
</Template>
<Template Name="MD11_Infinite_Knob_Pull">
<Parameters Type="Default">
<ANIM_LENGTH_KNOB>72</ANIM_LENGTH_KNOB>
<ANIM_LENGTH_PUSH>10</ANIM_LENGTH_PUSH>
<ANIM_LAG>0</ANIM_LAG>
<ANIM_WRAP>True</ANIM_WRAP>
</Parameters>
<Component ID="#NODE_NAME#" Node="#NODE_NAME#">
<UseTemplate Name="ASOBO_GT_Knob_Infinite_Push">
<Condition Check="ANIM_NAME_PULL">
<True>
<ANIM_NAME_PUSH>#ANIM_NAME_PULL#</ANIM_NAME_PUSH>
</True>
<False>
<ANIM_NAME_PUSH>#NODE_NAME#</ANIM_NAME_PUSH>
</False>
</Condition>
<Condition Check="ANIM_NAME_KNOB">
<False>
<ANIM_NAME_KNOB>#NODE_NAME#</ANIM_NAME_KNOB>
</False>
</Condition>
<Condition Check="ANIM_CODE_KNOB">
<True>
<OVERRIDE_ANIM_CODE>#ANIM_CODE_KNOB#</OVERRIDE_ANIM_CODE>
</True>
<False>
<OVERRIDE_ANIM_CODE>(L:#NODE_NAME#)</OVERRIDE_ANIM_CODE>
</False>
</Condition>
<Condition Check="ANIM_CODE_PULL">
<True>
<OVERRIDE_PUSH_ANIM_CODE>#ANIM_CODE_PULL#</OVERRIDE_PUSH_ANIM_CODE>
</True>
<False>
<OVERRIDE_PUSH_ANIM_CODE>(L:#NODE_NAME#)</OVERRIDE_PUSH_ANIM_CODE>
</False>
</Condition>
<CLOCKWISE_CODE>#INC_CODE#</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>#DEC_CODE#</ANTICLOCKWISE_CODE>
<LEFT_SINGLE_CODE>#PULL_CODE#</LEFT_SINGLE_CODE>
<LEFT_LEAVE_CODE>#REL_CODE#</LEFT_LEAVE_CODE>
</UseTemplate>
</Component>
</Template>
<Template Name="MD11_Infinite_Knob_PushPull">
<Component ID="#NODE_NAME#" Node="#NODE_NAME#">
<Parameters Type="Default">
<ANIM_LENGTH_PUSHPULL>10</ANIM_LENGTH_PUSHPULL>
<ANIM_LENGTH_KNOB>72</ANIM_LENGTH_KNOB>
<ANIM_LAG_KNOB>0</ANIM_LAG_KNOB>
<ANIM_LAG_PUSHPULL>100</ANIM_LAG_PUSHPULL>
<ROTATION_SPEED>10</ROTATION_SPEED>
<CENTER_RADIUS>0</CENTER_RADIUS>
<NORMALIZED_TIME_PUSH_ON>0.6</NORMALIZED_TIME_PUSH_ON>
<NORMALIZED_TIME_PUSH_OFF>0.9</NORMALIZED_TIME_PUSH_OFF>
<NORMALIZED_TIME_PULL_ON>0.4</NORMALIZED_TIME_PULL_ON>
<NORMALIZED_TIME_PULL_OFF>0.1</NORMALIZED_TIME_PULL_OFF>
</Parameters>
<UseTemplate Name="ASOBO_GT_Anim">
<Condition Check="ANIM_NAME_PUSHPULL">
<True>
<ANIM_NAME>#ANIM_NAME_PUSHPULL#</ANIM_NAME>
</True>
<False>
<ANIM_NAME>#NODE_NAME#</ANIM_NAME>
</False>
</Condition>
<Condition Check="ANIM_CODE_PUSHPULL">
<True>
<ANIM_CODE>#ANIM_CODE_PUSHPULL#</ANIM_CODE>
</True>
<False>
<ANIM_CODE>(L:#NODE_NAME#)</ANIM_CODE>
</False>
</Condition>
<ANIM_LENGTH>#ANIM_LENGTH_PUSHPULL#</ANIM_LENGTH>
</UseTemplate>
<UseTemplate Name="ASOBO_GT_Anim">
<Condition Check="ANIM_NAME_KNOB">
<True>
<ANIM_NAME>#ANIM_NAME_KNOB#</ANIM_NAME>
</True>
<False>
<ANIM_NAME>#NODE_NAME#</ANIM_NAME>
</False>
</Condition>
<Condition Check="ANIM_CODE_KNOB">
<True>
<ANIM_CODE>#ANIM_CODE_KNOB#</ANIM_CODE>
</True>
<False>
<ANIM_CODE>(L:#NODE_NAME#)</ANIM_CODE>
</False>
</Condition>
<ANIM_LENGTH>#ANIM_LENGTH_KNOB#</ANIM_LENGTH>
<ROTATION_SPEED>10</ROTATION_SPEED>
<EXTRA_INTERACTION />
<CLOCKWISE_CONDITION> 1 </CLOCKWISE_CONDITION>
<ANTICLOCKWISE_CONDITION> 1 </ANTICLOCKWISE_CONDITION>
<ANIM_WRAP>True</ANIM_WRAP>
</UseTemplate>
<UseTemplate Name="MD11_GT_Interaction_WheelAndContinuousLeft_PushPull">
<PUSH_CODE>#PUSH_CODE#</PUSH_CODE>
<PULL_CODE>#PULL_CODE#</PULL_CODE>
<LEFT_LEAVE_CODE>#REL_CODE#</LEFT_LEAVE_CODE>
<CLOCKWISE_CODE>#INC_CODE#</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>#DEC_CODE#</ANTICLOCKWISE_CODE>
</UseTemplate>
</Component>
</Template>
<Template Name="MD11_APU_Fire_Handle">
<Parameters type="Default">
<TURN_ANIM_LENGTH>10</TURN_ANIM_LENGTH>