This commit is contained in:
Kilian Hofmann 2025-01-24 06:04:01 +01:00
parent e5c19a4c44
commit e6390b2c33
7 changed files with 1113 additions and 1415 deletions

View File

@ -23,6 +23,7 @@
"CADC",
"CADCCAP",
"CADCFO",
"CALLBACKCODE",
"CAPAUX",
"CAPTAUX",
"CAUT",
@ -40,6 +41,7 @@
"DEFL",
"DIALAFLAP",
"DISAG",
"DOWNARROW",
"DSPY",
"ELEC",
"ELEVFEEL",
@ -70,6 +72,7 @@
"GPWS",
"HANDLEREL",
"HDGTRK",
"HELPID",
"HORNSHUT",
"IASMACH",
"IDNT",
@ -85,6 +88,7 @@
"KHOFMANN",
"kohlsman",
"LECP",
"LEFTARROW",
"LEFTRELEASE",
"LEFTRIGHT",
"LEFTSINGLE",
@ -109,6 +113,7 @@
"MCDU",
"MLDG",
"MOUSEDOWN",
"MOUSEFLAGS",
"NEXTPAGE",
"NOSMOKE",
"OFST",
@ -119,8 +124,10 @@
"OVHT",
"OVRD",
"PAINUSE",
"PUSHPULL",
"RECP",
"REPLNT",
"RIGHTARROW",
"RLIFAIL",
"RLIFOFF",
"RLOFAIL",
@ -140,7 +147,9 @@
"THNDRSTRM",
"TOAPPR",
"TOEBRAKE",
"TOOLTIPID",
"TRFC",
"UPARROW",
"UPRAUX",
"UYDA",
"UYDAFAIL",

View File

@ -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>

View File

@ -0,0 +1,427 @@
<?xml version="1.0" encoding="utf-8"?>
<ModelBehaviors>
<Include ModelBehaviorFile="Asobo\Common.xml" />
<Include ModelBehaviorFile="TFDi_Design_MD-11\TFDi_MD11_INT_Templates.xml" />
<Template Name="MD11_GCP">
<!-- FCP START -->
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_CGS_FMSSPD_BT</NODE_NAME>
<CODE_PRESS>86088 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86089 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_CGS_NAV_BT</NODE_NAME>
<CODE_PRESS>86090 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86091 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_CGS_APPRLAND_BT</NODE_NAME>
<CODE_PRESS>86092 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86093 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_CGS_AUTOFLIGHT_BT</NODE_NAME>
<CODE_PRESS>86094 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86095 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_CGS_PROF_BT</NODE_NAME>
<CODE_PRESS>86096 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86097 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_CGS_IASMACH_BT</NODE_NAME>
<CODE_PRESS>86098 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86099 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_CGS_HDGTRK_BT</NODE_NAME>
<CODE_PRESS>86100 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86101 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_CGS_FTM_BT</NODE_NAME>
<CODE_PRESS>86102 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86103 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<!-- NOTE: Node name extracted from blender -->
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_CGS_VS_FPA_BT</NODE_NAME>
<ANIM_CODE>MD11_CGS_VSFPA_BT</ANIM_CODE>
<CODE_PRESS>86104 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86105 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_2Pos_Switch">
<NODE_NAME>MD11_CGS_AFSOVRD1_SW</NODE_NAME>
<CODE>86106 (&gt;L:CEVENT)</CODE>
</UseTemplate>
<UseTemplate Name="MD11_2Pos_Switch">
<NODE_NAME>MD11_CGS_AFSOVRD2_SW</NODE_NAME>
<CODE>86107 (&gt;L:CEVENT)</CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob_PushPull">
<NODE_NAME>MD11_CGS_SPD_KB</NODE_NAME>
<ANIM_CODE_KNOB>(L:MD11_CGS_SPD_KB) 71 72 / *</ANIM_CODE_KNOB>
<ANIM_NAME_PUSHPULL>MD11_CGS_SPD_SW</ANIM_NAME_PUSHPULL>
<ANIM_CODE_PUSHPULL>(L:MD11_CGS_SPD_SW) 5 *</ANIM_CODE_PUSHPULL>
<INC_CODE>86066 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86067 (&gt;L:CEVENT)</DEC_CODE>
<PUSH_CODE>86070 (&gt;L:CEVENT)</PUSH_CODE>
<PULL_CODE>86068 (&gt;L:CEVENT)</PULL_CODE>
<REL_CODE>86069 (&gt;L:CEVENT) 86071 (&gt;L:CEVENT)</REL_CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob_PushPull">
<NODE_NAME>MD11_CGS_HDG_KB</NODE_NAME>
<ANIM_CODE_KNOB>(L:MD11_CGS_HDG_KB) 71 72 / *</ANIM_CODE_KNOB>
<ANIM_NAME_PUSHPULL>MD11_CGS_HDG_SW</ANIM_NAME_PUSHPULL>
<ANIM_CODE_PUSHPULL>(L:MD11_CGS_HDG_SW) 5 *</ANIM_CODE_PUSHPULL>
<INC_CODE>86074 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86075 (&gt;L:CEVENT)</DEC_CODE>
<PUSH_CODE>86078 (&gt;L:CEVENT)</PUSH_CODE>
<PULL_CODE>86076 (&gt;L:CEVENT)</PULL_CODE>
<REL_CODE>86079 (&gt;L:CEVENT) 86077 (&gt;L:CEVENT)</REL_CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob">
<NODE_NAME>MD11_CGS_HDG_BASE_KB</NODE_NAME>
<ANIM_LENGTH>60</ANIM_LENGTH>
<ANIM_LAG>600</ANIM_LAG>
<ANIM_CODE>(L:MD11_CGS_HDG_BASE_KB) 10 *</ANIM_CODE>
<INC_CODE>86073 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86072 (&gt;L:CEVENT)</DEC_CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob_PushPull">
<NODE_NAME>MD11_CGS_ALT_KB</NODE_NAME>
<ANIM_CODE_KNOB>(L:MD11_CGS_ALT_KB) 71 72 / *</ANIM_CODE_KNOB>
<ANIM_NAME_PUSHPULL>MD11_CGS_ALT_SW</ANIM_NAME_PUSHPULL>
<ANIM_CODE_PUSHPULL>(L:MD11_CGS_ALT_SW) 5 *</ANIM_CODE_PUSHPULL>
<INC_CODE>86080 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86081 (&gt;L:CEVENT)</DEC_CODE>
<PUSH_CODE>86084 (&gt;L:CEVENT)</PUSH_CODE>
<PULL_CODE>86082 (&gt;L:CEVENT)</PULL_CODE>
<REL_CODE>86083 (&gt;L:CEVENT) 86085 (&gt;L:CEVENT)</REL_CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob">
<NODE_NAME>MD11_CGS_VS_KB</NODE_NAME>
<ANIM_CODE>(L:MD11_CGS_VS_KB) 71 72 / *</ANIM_CODE>
<INC_CODE>86086 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86087 (&gt;L:CEVENT)</DEC_CODE>
<SWITCH_DIRECTION>Vertical</SWITCH_DIRECTION>
</UseTemplate>
<!-- FCP END -->
<!-- LIGHTS START -->
<UseTemplate Name="MD11_Finite_Knob">
<NODE_NAME>MD11_CGS_PNL_LT_KB</NODE_NAME>
<NUM_POS>10</NUM_POS>
<INC_CODE>86120 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86121 (&gt;L:CEVENT)</DEC_CODE>
</UseTemplate>
<UseTemplate Name="MD11_Finite_Knob">
<NODE_NAME>MD11_CGS_FLOOD_LT_KB</NODE_NAME>
<NUM_POS>10</NUM_POS>
<INC_CODE>86122 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86123 (&gt;L:CEVENT)</DEC_CODE>
</UseTemplate>
<!-- LIGHTS END -->
<!-- LEFT WARNINGS START -->
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_GSL_GS_BT</NODE_NAME>
<CODE_PRESS>86116 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86117 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_GSL_MST_WRN_BT</NODE_NAME>
<CODE_PRESS>86108 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86109 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_GSL_MST_CAUT_BT</NODE_NAME>
<CODE_PRESS>86110 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86111 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<!-- LEFT WARNINGS END -->
<!-- RIGHT WARNINGS START -->
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_GSR_GS_BT</NODE_NAME>
<CODE_PRESS>86118 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86119 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_GSR_MST_WRN_BT</NODE_NAME>
<CODE_PRESS>86112 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86113 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_GSR_MST_CAUT_BT</NODE_NAME>
<CODE_PRESS>86114 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86115 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<!-- RIGHT WARNINGS END -->
<!-- LEFT ECP START -->
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_MAGTRU_BT</NODE_NAME>
<CODE_PRESS>86016 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86017 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_MAP_BT</NODE_NAME>
<CODE_PRESS>86018 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86019 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_VOR_BT</NODE_NAME>
<CODE_PRESS>86020 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86021 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_PLAN_BT</NODE_NAME>
<CODE_PRESS>86022 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86023 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_APPR_BT</NODE_NAME>
<CODE_PRESS>86024 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86025 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_TCAS_BT</NODE_NAME>
<CODE_PRESS>86026 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86027 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_VOR1_BT</NODE_NAME>
<CODE_PRESS>86028 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86029 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_INCR_BT</NODE_NAME>
<CODE_PRESS>86030 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86031 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_VOR2_BT</NODE_NAME>
<CODE_PRESS>86032 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86033 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_ADF1_BT</NODE_NAME>
<CODE_PRESS>86034 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86035 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_DECR_BT</NODE_NAME>
<CODE_PRESS>86036 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86037 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_ADF2_BT</NODE_NAME>
<CODE_PRESS>86038 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86039 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_TRFC_BT</NODE_NAME>
<CODE_PRESS>86040 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86041 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_DATA_BT</NODE_NAME>
<CODE_PRESS>86042 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86043 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_WPT_BT</NODE_NAME>
<CODE_PRESS>86044 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86045 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_VORNDB_BT</NODE_NAME>
<CODE_PRESS>86046 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86047 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_ARPT_BT</NODE_NAME>
<CODE_PRESS>86048 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86049 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_LECP_INHP_BT</NODE_NAME>
<CODE_PRESS>86050 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86051 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_2Pos_Switch">
<NODE_NAME>MD11_LECP_BAROSET_KB</NODE_NAME>
<CODE>86056 (&gt;L:CEVENT)</CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob_Pull">
<NODE_NAME>MD11_LECP_BAROSET_CAP</NODE_NAME>
<ANIM_CODE_KNOB>(L:MD11_LECP_BAROSET_CAP) 71 72 / *</ANIM_CODE_KNOB>
<ANIM_NAME_PULL>MD11_LECP_BAROSET_BT</ANIM_NAME_PULL>
<ANIM_CODE_PULL>(L:MD11_LECP_BAROSET_BT) 10 *</ANIM_CODE_PULL>
<INC_CODE>86059 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86060 (&gt;L:CEVENT)</DEC_CODE>
<PULL_CODE>86057 (&gt;L:CEVENT)</PULL_CODE>
<REL_CODE>86058 (&gt;L:CEVENT)</REL_CODE>
</UseTemplate>
<UseTemplate Name="MD11_2Pos_Switch">
<NODE_NAME>MD11_LECP_MINIMUMS_KB</NODE_NAME>
<CODE>86061 (&gt;L:CEVENT)</CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob_Pull">
<NODE_NAME>MD11_LECP_MINIMUMS_CAP</NODE_NAME>
<ANIM_CODE_KNOB>(L:MD11_LECP_MINIMUMS_CAP) 71 72 / *</ANIM_CODE_KNOB>
<ANIM_NAME_PULL>MD11_LECP_MINIMUMS_BT</ANIM_NAME_PULL>
<ANIM_CODE_PULL>(L:MD11_LECP_MINIMUMS_BT) 10 *</ANIM_CODE_PULL>
<INC_CODE>86064 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86065 (&gt;L:CEVENT)</DEC_CODE>
<PULL_CODE>86062 (&gt;L:CEVENT)</PULL_CODE>
<REL_CODE>86063 (&gt;L:CEVENT)</REL_CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob_Pull">
<NODE_NAME>MD11_LECP_WXBRT_KB</NODE_NAME>
<ANIM_CODE_KNOB>(L:MD11_LECP_WXBRT_KB) 71 72 / *</ANIM_CODE_KNOB>
<ANIM_NAME_PULL>MD11_LECP_WXBRT_BT</ANIM_NAME_PULL>
<ANIM_CODE_PULL>(L:MD11_LECP_WXBRT_BT) 10 *</ANIM_CODE_PULL>
<INC_CODE>86054 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86055 (&gt;L:CEVENT)</DEC_CODE>
<PULL_CODE>86052 (&gt;L:CEVENT)</PULL_CODE>
<REL_CODE>86053 (&gt;L:CEVENT)</REL_CODE>
</UseTemplate>
<!-- LEFT ECP END -->
<!-- RIGHT ECP START -->
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_INHP_BT</NODE_NAME>
<CODE_PRESS>86124 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86125 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_TRFC_BT</NODE_NAME>
<CODE_PRESS>86140 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86141 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_DATA_BT</NODE_NAME>
<CODE_PRESS>86142 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86143 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_WPT_BT</NODE_NAME>
<CODE_PRESS>86144 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86145 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_VORNDB_BT</NODE_NAME>
<CODE_PRESS>86146 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86147 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_ARPT_BT</NODE_NAME>
<CODE_PRESS>86148 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86149 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_MAGTRU_BT</NODE_NAME>
<CODE_PRESS>86150 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86151 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_MAP_BT</NODE_NAME>
<CODE_PRESS>86152 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86153 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_VOR_BT</NODE_NAME>
<CODE_PRESS>86154 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86155 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_PLAN_BT</NODE_NAME>
<CODE_PRESS>86156 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86157 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_APPR_BT</NODE_NAME>
<CODE_PRESS>86158 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86159 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_TCAS_BT</NODE_NAME>
<CODE_PRESS>86160 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86161 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_VOR1_BT</NODE_NAME>
<CODE_PRESS>86162 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86163 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_INCR_BT</NODE_NAME>
<CODE_PRESS>86164 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86165 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_VOR2_BT</NODE_NAME>
<CODE_PRESS>86166 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86167 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_ADF1_BT</NODE_NAME>
<CODE_PRESS>86168 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86169 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_DECR_BT</NODE_NAME>
<CODE_PRESS>86170 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86171 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_Button">
<NODE_NAME>MD11_RECP_ADF2_BT</NODE_NAME>
<CODE_PRESS>86172 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>86173 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<UseTemplate Name="MD11_2Pos_Switch">
<NODE_NAME>MD11_RECP_BAROSET_KB</NODE_NAME>
<CODE>86126 (&gt;L:CEVENT)</CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob_Pull">
<NODE_NAME>MD11_RECP_BAROSET_CAP</NODE_NAME>
<ANIM_CODE_KNOB>(L:MD11_RECP_BAROSET_CAP) 71 72 / *</ANIM_CODE_KNOB>
<ANIM_NAME_PULL>MD11_RECP_BAROSET_BT</ANIM_NAME_PULL>
<ANIM_CODE_PULL>(L:MD11_RECP_BAROSET_BT) 10 *</ANIM_CODE_PULL>
<INC_CODE>86129 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86130 (&gt;L:CEVENT)</DEC_CODE>
<PULL_CODE>86127 (&gt;L:CEVENT)</PULL_CODE>
<REL_CODE>86128 (&gt;L:CEVENT)</REL_CODE>
</UseTemplate>
<UseTemplate Name="MD11_2Pos_Switch">
<NODE_NAME>MD11_RECP_MINIMUMS_KB</NODE_NAME>
<CODE>86131 (&gt;L:CEVENT)</CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob_Pull">
<NODE_NAME>MD11_RECP_MINIMUMS_CAP</NODE_NAME>
<ANIM_CODE_KNOB>(L:MD11_RECP_MINIMUMS_CAP) 71 72 / *</ANIM_CODE_KNOB>
<ANIM_NAME_PULL>MD11_RECP_MINIMUMS_BT</ANIM_NAME_PULL>
<ANIM_CODE_PULL>(L:MD11_RECP_MINIMUMS_BT) 10 *</ANIM_CODE_PULL>
<INC_CODE>86134 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86135 (&gt;L:CEVENT)</DEC_CODE>
<PULL_CODE>86132 (&gt;L:CEVENT)</PULL_CODE>
<REL_CODE>86133 (&gt;L:CEVENT)</REL_CODE>
</UseTemplate>
<UseTemplate Name="MD11_Infinite_Knob_Pull">
<NODE_NAME>MD11_RECP_WXBRT_KB</NODE_NAME>
<ANIM_CODE_KNOB>(L:MD11_RECP_WXBRT_KB) 71 72 / *</ANIM_CODE_KNOB>
<ANIM_NAME_PULL>MD11_RECP_WXBRT_BT</ANIM_NAME_PULL>
<ANIM_CODE_PULL>(L:MD11_RECP_WXBRT_BT) 10 *</ANIM_CODE_PULL>
<INC_CODE>86138 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>86139 (&gt;L:CEVENT)</DEC_CODE>
<PULL_CODE>86136 (&gt;L:CEVENT)</PULL_CODE>
<REL_CODE>86137 (&gt;L:CEVENT)</REL_CODE>
</UseTemplate>
<!-- RIGHT ECP END -->
</Template>
</ModelBehaviors>

View File

@ -42,7 +42,7 @@
<NODE_NAME>MD11_MIP_ISFD_BARO_KB</NODE_NAME>
<ANIM_LENGTH_KNOB>10</ANIM_LENGTH_KNOB>
<ANIM_CODE>(L:MD11_MIP_ISFD_BARO_KB) 10 72 / *</ANIM_CODE>
<PUSH_ANIM_CODE />
<ANIM_CODE_PUSH />
<INC_CODE>95003 (&gt;L:CEVENT)</INC_CODE>
<DEC_CODE>95004 (&gt;L:CEVENT)</DEC_CODE>
<PUSH_CODE>94991 (&gt;L:CEVENT)</PUSH_CODE>

View File

@ -762,6 +762,7 @@
<CODE_PRESS>90360 (&gt;L:CEVENT)</CODE_PRESS>
<CODE_RELEASE>90361 (&gt;L:CEVENT)</CODE_RELEASE>
</UseTemplate>
<!-- NOTE: Node name extracted from blender -->
<UseTemplate Name="MD11_Animation">
<NODE_NAME>MD11_OVHD_CVR_NEEDLE_RNG</NODE_NAME>
<ANIM_CODE>(L:MD11_OVHD_CVR_RNG)</ANIM_CODE>

View File

@ -1,136 +1,309 @@
import { XMLParser, XMLBuilder, XMLValidator } from "fast-xml-parser";
const input = `
<PartInfo>
<Name>MD11_RECP_INHP_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_INHP_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86124 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86125 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_OVHD_FLTCTL_UYDA_BT</Name>
<Name>MD11_RECP_TRFC_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_OVHD_FLTCTL_UYDA_BT, enum) 10 *</Code>
<Code>(L:MD11_RECP_TRFC_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 90390 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 90391 (&gt;L:CEVENT) }</CallbackCode>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86140 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86141 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_OVHD_FLTCTL_UYDB_BT</Name>
<Name>MD11_RECP_DATA_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_OVHD_FLTCTL_UYDB_BT, enum) 10 *</Code>
<Code>(L:MD11_RECP_DATA_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 90392 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 90393 (&gt;L:CEVENT) }</CallbackCode>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86142 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86143 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_OVHD_FLTCTL_LYDA_BT</Name>
<Name>MD11_RECP_WPT_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_OVHD_FLTCTL_LYDA_BT, enum) 10 *</Code>
<Code>(L:MD11_RECP_WPT_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 90394 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 90395 (&gt;L:CEVENT) }</CallbackCode>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86144 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86145 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_OVHD_FLTCTL_LYDB_BT</Name>
<Name>MD11_RECP_VORNDB_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_OVHD_FLTCTL_LYDB_BT, enum) 10 *</Code>
<Code>(L:MD11_RECP_VORNDB_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 90396 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 90397 (&gt;L:CEVENT) }</CallbackCode>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86146 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86147 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_OVHD_FLTCTL_LLO_BT</Name>
<Name>MD11_RECP_ARPT_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_OVHD_FLTCTL_LLO_BT, enum) 10 *</Code>
<Code>(L:MD11_RECP_ARPT_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 90398 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 90399 (&gt;L:CEVENT) }</CallbackCode>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86148 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86149 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_OVHD_FLTCTL_LLI_BT</Name>
<Name>MD11_RECP_MAGTRU_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_OVHD_FLTCTL_LLI_BT, enum) 10 *</Code>
<Code>(L:MD11_RECP_MAGTRU_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 90400 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 90401 (&gt;L:CEVENT) }</CallbackCode>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86150 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86151 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_OVHD_FLTCTL_RLI_BT</Name>
<Name>MD11_RECP_MAP_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_OVHD_FLTCTL_RLI_BT, enum) 10 *</Code>
<Code>(L:MD11_RECP_MAP_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 90402 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 90403 (&gt;L:CEVENT) }</CallbackCode>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86152 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86153 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_OVHD_FLTCTL_RLO_BT</Name>
<Name>MD11_RECP_VOR_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_OVHD_FLTCTL_RLO_BT, enum) 10 *</Code>
<Code>(L:MD11_RECP_VOR_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 90404 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 90405 (&gt;L:CEVENT) }</CallbackCode>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86154 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86155 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_RECP_PLAN_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_PLAN_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86156 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86157 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_RECP_APPR_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_APPR_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86158 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86159 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_RECP_TCAS_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_TCAS_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86160 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86161 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_RECP_VOR1_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_VOR1_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86162 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86163 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_RECP_INCR_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_INCR_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86164 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86165 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_RECP_VOR2_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_VOR2_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86166 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86167 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_RECP_ADF1_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_ADF1_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86168 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86169 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_RECP_DECR_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_DECR_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86170 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86171 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
<PartInfo>
<Name>MD11_RECP_ADF2_BT</Name>
<AnimLength>10</AnimLength>
<Animation>
<Parameter>
<Code>(L:MD11_RECP_ADF2_BT, enum) 10 *</Code>
<Lag>100</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>HAND</Cursor>
<MouseFlags>LEFTSINGLE+LEFTRELEASE</MouseFlags>
<CallbackCode>(M:Event) &apos;LeftSingle&apos; scmp 0 == if{ 86172 (&gt;L:CEVENT) } (M:Event)
&apos;LeftRelease&apos; scmp 0 == if{ 86173 (&gt;L:CEVENT) }</CallbackCode>
</MouseRect>
</PartInfo>
`;
function convert(element) {
const codes = [
...element.MouseRect.CallbackCode.matchAll(/([\d]*)[\s]*\(>L:CEVENT\)/gm),
].map((m) => m[1]);
return {
"@_Name": "MD11_Button",
NODE_NAME: element.Name,
CODE_PRESS: `${codes[0]} (>L:CEVENT)`,
CODE_RELEASE: `${codes[1]} (>L:CEVENT)`,
};
}
const parser = new XMLParser({
ignoreAttributes: false,
});
@ -138,20 +311,13 @@ let jObj = parser.parse(input);
const output = [];
jObj.PartInfo.forEach((element) => {
const codes = [
...element.MouseRect.CallbackCode.matchAll(/([\d]*)[\s]*\(>L:CEVENT\)/gm),
].map((m) => m[1]);
const obj = {
"@_Name": "MD11_Button",
NODE_NAME: element.Name,
CODE_PRESS: `${codes[0]} (>L:CEVENT)`,
CODE_RELEASE: `${codes[1]} (>L:CEVENT)`,
};
output.push(obj);
});
if (Array.isArray(jObj.PartInfo)) {
jObj.PartInfo.forEach((element) => {
output.push(convert(element));
});
} else {
output.push(convert(jObj.PartInfo));
}
const builder = new XMLBuilder({
ignoreAttributes: false,