# Helpers.xml [[Go back to index]](..\..\Template_Explorer.html) Asobo\(Generic\)Helpers.xml --------------------------- Source XML <ModelBehaviors> <Template Name="ASOBO\_GT\_Helper\_Recursive\_Param\_Builder"> <DefaultTemplateParameters> <PARAM\_REPEATED\_START/> <PARAM\_REPEATED\_END/> <PARAM\_START/> <PARAM\_END/> <ID>1</ID> </DefaultTemplateParameters> <OverrideTemplateParameters> <PARAM\_TO\_BUILD/> <NEXT\_ID>2</NEXT\_ID> </OverrideTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2"> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2"> <DefaultTemplateParameters> <PARAM\_REPEATED\_2\_START/> <PARAM\_REPEATED\_2\_END/> </DefaultTemplateParameters> <OverrideTemplateParameters> <Condition> <Test> <Or> <Arg NotEmpty="PARAM\_REPEATED\_2\_START"/> <Arg NotEmpty="PARAM\_REPEATED\_2\_END"/> </Or> </Test> <True> <PARAM\_TO\_BUILD>\#PARAM\_TO\_BUILD\#\#PARAM\_REPEATED\_START\#\#ID\#\#PARAM\_REPEATED\_END\#\#PARAM\_REPEATED\_2\_START\#\#ID\#\#PARAM\_REPEATED\_2\_END\#</PARAM\_TO\_BUILD> </True> <False> <PARAM\_TO\_BUILD>\#PARAM\_TO\_BUILD\#\#PARAM\_REPEATED\_START\#\#ID\#\#PARAM\_REPEATED\_END\#</PARAM\_TO\_BUILD> </False> </Condition> <TEST\_ID Process="Param">ID\#NEXT\_ID\#</TEST\_ID> </OverrideTemplateParameters> <Condition NotEmpty="TEST\_ID"> <True> <UseTemplate Name="ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2"> <ID>\#TEST\_ID\#</ID> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 +</NEXT\_ID> </UseTemplate> </True> <False> <UseTemplate Name="\#EXIT\_TEMPLATE\#"> <\#PARAM\_NAME\#>\#PARAM\_START\#\#PARAM\_TO\_BUILD\#\#PARAM\_END\#</\#PARAM\_NAME\#> </UseTemplate> </False> </Condition> </Template> <!-- Incremental param builder: build as much param as requested with desired content, prefix and suffix --> <Template Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC"> <DefaultTemplateParameters> <CONTENT></CONTENT><!-- What's in between prefix and suffix (both optional) --> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1"> <PARAM\_ID>1</PARAM\_ID><!-- Must be an integer (incremented) --> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1"> <OverrideTemplateParameters> <Condition Valid="PARAM\#PARAM\_ID\#"> <Condition Valid="PROCESS\_PARAM\#PARAM\_ID\#"> <PROCESS\_PARAM>True</PROCESS\_PARAM> </Condition> <PARAM\_NAME Process="Param">PARAM\#PARAM\_ID\#</PARAM\_NAME> <Condition Valid="PARAM\#PARAM\_ID\#\_PREFIX"> <True> <PREFIX Process="Param">PARAM\#PARAM\_ID\#\_PREFIX</PREFIX> </True> <False> <PREFIX/> </False> </Condition> <Condition Valid="PARAM\#PARAM\_ID\#\_SUFFIX"> <True> <SUFFIX Process="Param">PARAM\#PARAM\_ID\#\_SUFFIX</SUFFIX> </True> <False> <SUFFIX/> </False> </Condition> </Condition> </OverrideTemplateParameters> <Switch> <Case Valid="PARAM\#PARAM\_ID\#"> <UseTemplate Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1"> <PARAM\_ID Process="Int">\#PARAM\_ID\# 1 +</PARAM\_ID> <Condition Valid="PROCESS\_PARAM"> <True> <Condition NotEmpty="\#PREFIX\#\#CONTENT\#\#SUFFIX\#"><!-- Make sure param is not empty --> <\#PARAM\_NAME\# Process="Param">\#PREFIX\#\#CONTENT\#\#SUFFIX\#</\#PARAM\_NAME\#> <PROCESS\_PARAM>False</PROCESS\_PARAM><!-- Reset flag --> </Condition> </True> <False> <\#PARAM\_NAME\#>\#PREFIX\#\#CONTENT\#\#SUFFIX\#</\#PARAM\_NAME\#> </False> </Condition> </UseTemplate> </Case> <Default> <UseTemplate Name="\#EXIT\_TEMPLATE\#"> </UseTemplate> </Default> </Switch> </Template> <!-- call EXIT\_TEMPLATE as many times as MAX\_ID each time with the param PARAM increasing by one --> <Template Name="ASOBO\_GT\_Helper\_Increasing\_ID"> <DefaultTemplateParameters> <FIRST\_ID>1</FIRST\_ID> <MAX\_ID>1</MAX\_ID> <PARAM>BTN\_ID</PARAM> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Increasing\_ID\_2"> <NEXT\_ID>\#FIRST\_ID\#</NEXT\_ID> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Helper\_Increasing\_ID\_2"> <UseTemplate Name="\#EXIT\_TEMPLATE\#"> <\#PARAM\#>\#NEXT\_ID\#</\#PARAM\#> </UseTemplate> <Condition> <Test> <Lower> <Number>\#NEXT\_ID\#</Number> <Number>\#MAX\_ID\#</Number> </Lower> </Test> <True> <UseTemplate Name="ASOBO\_GT\_Helper\_Increasing\_ID\_2"> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 +</NEXT\_ID> </UseTemplate> </True> </Condition> </Template> <!-- call EXIT\_TEMPLATE with as much parameters as given for multiple IDs PARAM1 (ID by default): dynamic, goes from FIRST\_ID to MAX\_ID (Integer) can be configured to add as many as you want with specified PREFIX and SUFFIX (ex: PARAM2: NODE\_ID, PARAM2\_PREFIX: Node\_, MAX\_ID:2 ; will generate: <NODE\_ID>Node\_1</NODE\_ID><ID>1</ID> for the first call to EXIT\_TEMPLATE <NODE\_ID>Node\_2</NODE\_ID><ID>2</ID> for the second ) --> <Template Name="ASOBO\_GT\_Helper\_Recursive\_ID"> <DefaultTemplateParameters> <FIRST\_ID>1</FIRST\_ID> <MAX\_ID>1</MAX\_ID> <PARAM1>ID</PARAM1> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Recursive\_ID\_2"> <NEXT\_ID>\#FIRST\_ID\#</NEXT\_ID> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Helper\_Recursive\_ID\_2"> <UseTemplate Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC"> <CONTENT>\#NEXT\_ID\#</CONTENT> </UseTemplate> <Condition> <Test> <Lower> <Number>\#NEXT\_ID\#</Number> <Number>\#MAX\_ID\#</Number> </Lower> </Test> <True> <UseTemplate Name="ASOBO\_GT\_Helper\_Recursive\_ID\_2"> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 +</NEXT\_ID> </UseTemplate> </True> </Condition> </Template> <Template Name="ASOBO\_GT\_Helper\_Suffix\_ID\_Appender"> <DefaultTemplateParameters> <Switch> <Case Valid="DONT\_APPEND\_ID"> <SUFFIX\_ID></SUFFIX\_ID> </Case> <Default> <Condition NotEmpty="CONTAINER\_ID"> <True> <SUFFIX\_ID>\_\#CONTAINER\_ID\#</SUFFIX\_ID> </True> <False> <SUFFIX\_ID>\_\#ID\#</SUFFIX\_ID> </False> </Condition> </Default> </Switch> </DefaultTemplateParameters> <UseTemplate Name="\#TEMPLATE\_TO\_CALL\#"> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code"> <DefaultTemplateParameters> <SELECTION>50</SELECTION><!-- dynamic parameter for example gallons qty in a fuel tank --> <!-- at least 2 points of reference to interpolate --> <!-- ANIM\_VALUE = frame for which the REF\_VALUE is corresponding --> <!-- REF\_VALUE = value used as a comparison point to SELECTION --> <ANIM\_VALUE\_0>0</ANIM\_VALUE\_0> <REF\_VALUE\_0>0</REF\_VALUE\_0> <ANIM\_VALUE\_1>100</ANIM\_VALUE\_1> <REF\_VALUE\_1>100</REF\_VALUE\_1> <!-- Add as much as necessary when calling the template --> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <ANIM\_LENGTH>100</ANIM\_LENGTH><!-- number of frame in the animation --> <MAX\_POINT\_INDEX>1</MAX\_POINT\_INDEX><!-- index of latest point of reference --> <MAX\_DISPLAYABLE>100</MAX\_DISPLAYABLE><!-- higher bound the value SELECTION can reach (the maximum your gauge can display) --> <MIN\_DISPLAYABLE>0</MIN\_DISPLAYABLE><!-- lower bound the value SELECTION can reach (the minimum your gauge can display) --> <EXIT\_TEMPLATE>ASOBO\_GT\_Anim\_Code</EXIT\_TEMPLATE> <EXIT\_PARAM\_NAME>ANIM\_CODE</EXIT\_PARAM\_NAME> <CONTENT></CONTENT><!-- CONTENT init: can be used to tweak the value before interpolating --> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2"> <NEXT\_ID Process="Int">\#MAX\_POINT\_INDEX\#</NEXT\_ID> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2"> <OverrideTemplateParameters> <ANIM\_VAL\_CURRENT\_POINT Process="Param">ANIM\_VALUE\_\#NEXT\_ID\#</ANIM\_VAL\_CURRENT\_POINT> <REF\_VAL\_CURRENT\_POINT Process="Param">REF\_VALUE\_\#NEXT\_ID\#</REF\_VAL\_CURRENT\_POINT> </OverrideTemplateParameters> <Condition> <Test> <GreaterOrEqual> <Number>\#NEXT\_ID\#</Number> <Number>0</Number> </GreaterOrEqual> </Test> <True> <Condition> <Test> <Equal> <Number>\#NEXT\_ID\#</Number> <Number>\#MAX\_POINT\_INDEX\#</Number> </Equal> </Test> <True> <!-- First point (higher bound) --> <UseTemplate Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2"> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 -</NEXT\_ID> <ANIM\_VAL\_PREVIOUS\_POINT Process="Param">ANIM\_VALUE\_\#NEXT\_ID\#</ANIM\_VAL\_PREVIOUS\_POINT> <REF\_VAL\_PREVIOUS\_POINT Process="Param">REF\_VALUE\_\#NEXT\_ID\#</REF\_VAL\_PREVIOUS\_POINT> </UseTemplate> </True> <False> <UseTemplate Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2"> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 -</NEXT\_ID> <CONTENT> \#CONTENT\# l0 \#REF\_VAL\_CURRENT\_POINT\# > if{ l0 \#REF\_VAL\_CURRENT\_POINT\# - \#REF\_VAL\_PREVIOUS\_POINT\# \#REF\_VAL\_CURRENT\_POINT\# - / \#ANIM\_VAL\_PREVIOUS\_POINT\# \#ANIM\_VAL\_CURRENT\_POINT\# - \* \#ANIM\_VAL\_CURRENT\_POINT\# + sp1 g1 } </CONTENT> <ANIM\_VAL\_PREVIOUS\_POINT Process="Param">ANIM\_VALUE\_\#NEXT\_ID\#</ANIM\_VAL\_PREVIOUS\_POINT> <REF\_VAL\_PREVIOUS\_POINT Process="Param">REF\_VALUE\_\#NEXT\_ID\#</REF\_VAL\_PREVIOUS\_POINT> </UseTemplate> </False> </Condition> </True> <False> <UseTemplate Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_3"> </UseTemplate> </False> </Condition> </Template> <Template Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_3"> <UseTemplate Name="\#EXIT\_TEMPLATE\#"> <\#EXIT\_PARAM\_NAME\#> \#SELECTION\# \#MAX\_DISPLAYABLE\# min \#MIN\_DISPLAYABLE\# max sp0 \#CONTENT\# :1 l1 </\#EXIT\_PARAM\_NAME\#> </UseTemplate> </Template> <ParametersFn Name="Get\_Max\_Param\_Iteration"> <Parameters Type="Default"> <MAX\_VALUE>-1</MAX\_VALUE> <PARAM\_PREFIX/> <PARAM\_SUFFIX/> <MAX\_ITERATION>0</MAX\_ITERATION> <OUTGOING\_PARAM>OUT\_VALUE</OUTGOING\_PARAM> </Parameters> <Parameters Type="Override"> <Loop> <Setup> <Param>CUR\_ID</Param> <From>1</From> <Inc>1</Inc> <While> <Not> <Arg Valid="INFINITE"/> </Not> </While> </Setup> <Do> <SaveParameters ID="Prop\_\#ID\#\_FoundValue"> <FOUND\_VALUE>False</FOUND\_VALUE> <MAX\_ITERATION>\#MAX\_ITERATION\#</MAX\_ITERATION> </SaveParameters> <Parameters Type="Override" Lifetime="Loop"> <Loop> <Setup> <Param>CUR\_PARAM\_ID</Param> <From>0</From> <Inc>1</Inc> <While> <Or> <Arg NotEmpty="PARAM\_PREFIX\_\#CUR\_PARAM\_ID\#"/> <Arg NotEmpty="PARAM\_SUFIX\_\#CUR\_PARAM\_ID\#"/> </Or> </While> </Setup> <Do> <Parameters Type="Override" Lifetime="Iteration"> <PARAM\_PREFIX Process="Param">PARAM\_PREFIX\_\#CUR\_PARAM\_ID\#</PARAM\_PREFIX> <PARAM\_SUFIX Process="Param">PARAM\_SUFIX\_\#CUR\_PARAM\_ID\#</PARAM\_SUFIX> </Parameters> <Parameters Type="Override" Lifetime="Iteration"> <PARAM\_FINAL Process="Param">\#PARAM\_PREFIX\#\#CUR\_ID\#\#PARAM\_SUFFIX\#</PARAM\_FINAL> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <Condition NotEmpty="PARAM\_FINAL"> <SaveParameters ID="Prop\_\#ID\#\_FoundValue"> <FOUND\_VALUE>True</FOUND\_VALUE> <MAX\_ITERATION Process="Int">\#MAX\_ITERATION\# \#CUR\_ID\# max</MAX\_ITERATION> </SaveParameters> </Condition> </Parameters> </Do> </Loop> <LoadParameters ID="Prop\_\#ID\#\_FoundValue"/> <Condition Valid="FOUND\_VALUE"> <False> <Break/> </False> </Condition> </Parameters> </Do> </Loop> <LoadParameters ID="Prop\_\#ID\#\_FoundValue"/> </Parameters> <ReturnParameters> <\#OUTGOING\_PARAM\# Process="Int">\#MAX\_ITERATION\#</\#OUTGOING\_PARAM\#> </ReturnParameters> </ParametersFn> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <!-- Append if not Empty --> <ParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <Parameters Type="Default"> <OUT\_PARAM\_NAME>\#PARAM\#</OUT\_PARAM\_NAME> </Parameters> <Parameters Type="Override"> <PARAM\_CONTENT Process="Param">\#PARAM\#</PARAM\_CONTENT> <PREV\_CONTENT Process="Param">\#OUT\_PARAM\_NAME\#</PREV\_CONTENT> </Parameters> <ReturnParameters> <Condition NotEmpty="PARAM\_CONTENT"> <Condition NotEmpty="PREV\_CONTENT"> <True> <Switch> <Case Valid="APPEND\_BEFORE"> <\#OUT\_PARAM\_NAME\#>\#PARAM\_CONTENT\# \#PREV\_CONTENT\#</\#OUT\_PARAM\_NAME\#> </Case> <Default> <\#OUT\_PARAM\_NAME\#>\#PREV\_CONTENT\# \#PARAM\_CONTENT\#</\#OUT\_PARAM\_NAME\#> </Default> </Switch> </True> <False> <\#OUT\_PARAM\_NAME\#>\#PARAM\_CONTENT\#</\#OUT\_PARAM\_NAME\#> </False> </Condition> </Condition> </ReturnParameters> </ParametersFn> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <ParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <Parameters Type="Default"> <VAR\_UID/> <GET\_GATES>Lever\_Gates</GET\_GATES> <GET\_GATES\_CONFIG>Lever\_Gates\_Config</GET\_GATES\_CONFIG> <OUT\_PARAM\_NAME>GATE\_CLAMP\_VALUE\_CHECK</OUT\_PARAM\_NAME> <OUT\_PARAM\_IS\_AT\_GATE>IS\_AT\_ANY\_GATE\_CHECK</OUT\_PARAM\_IS\_AT\_GATE> <OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE>SET\_CAN\_BYPASS\_GATE</OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE> <INC\_HOLD\_DURATION\_TO\_BYPASS\_GATE>0.0</INC\_HOLD\_DURATION\_TO\_BYPASS\_GATE> <DEC\_HOLD\_DURATION\_TO\_BYPASS\_GATE>0.3</DEC\_HOLD\_DURATION\_TO\_BYPASS\_GATE> <IN\_RANGE\_OFFSET>0.0001</IN\_RANGE\_OFFSET> </Parameters> <Parameters Type="Override"> <LoadParameters ID="\#GET\_GATES\_CONFIG\#"/> <Condition NotEmpty="VAR\_UID"> <True> <VAR\_UID\_PREFIX>\_\#VAR\_UID\#</VAR\_UID\_PREFIX> </True> <False> <VAR\_UID\_PREFIX/> </False> </Condition> </Parameters> <ReturnParameters> <Loop> <Setup> <Value>GATE\_NAME</Value> <Parameters> <LoadParameters ID="\#GET\_GATES\#"/> </Parameters> </Setup> <Do> <Parameters Type="Override"> <GATE\_POSITION Process="Param">\#GATE\_NAME\#\_IE\_PERCENT\_SET</GATE\_POSITION> <GATE\_DIRECTION Process="Param">\#GATE\_NAME\#\_GATE\_DIRECTION</GATE\_DIRECTION> <GATE\_DEC\_HOLD\_DURATION Process="Param">\#GATE\_NAME\#\_DEC\_HOLD\_DURATION</GATE\_DEC\_HOLD\_DURATION> <GATE\_INC\_HOLD\_DURATION Process="Param">\#GATE\_NAME\#\_INC\_HOLD\_DURATION</GATE\_INC\_HOLD\_DURATION> </Parameters> <Parameters Type="Override"> <GATE\_POS\_NORMALIZED Process="Float">\#GATE\_POSITION\# 100 /</GATE\_POS\_NORMALIZED> <Condition NotEmpty="GATE\_INC\_HOLD\_DURATION"> <False> <GATE\_INC\_HOLD\_DURATION>\#INC\_HOLD\_DURATION\_TO\_BYPASS\_GATE\#</GATE\_INC\_HOLD\_DURATION> </False> </Condition> <Condition NotEmpty="GATE\_DEC\_HOLD\_DURATION"> <False> <GATE\_DEC\_HOLD\_DURATION>\#DEC\_HOLD\_DURATION\_TO\_BYPASS\_GATE\#</GATE\_DEC\_HOLD\_DURATION> </False> </Condition> </Parameters> <Parameters Type="Override"> <GATE\_POS\_NORMALIZED\_UP Process="Float">\#GATE\_POS\_NORMALIZED\# \#IN\_RANGE\_OFFSET\# +</GATE\_POS\_NORMALIZED\_UP> <GATE\_POS\_NORMALIZED\_DN Process="Float">\#GATE\_POS\_NORMALIZED\# \#IN\_RANGE\_OFFSET\# -</GATE\_POS\_NORMALIZED\_DN> </Parameters> <Parameters Type="Override"> <IS\_AT\_GATE\_CHECK>\#GATE\_POS\_NORMALIZED\_DN\# \#GATE\_POS\_NORMALIZED\_UP\# l0 rng</IS\_AT\_GATE\_CHECK> </Parameters> <Parameters Type="Override"> <Switch Param="GATE\_DIRECTION"> <Case Value="Both"> <!-- check is we in/decremented past the gate or already are at the gate --> <THIS\_GATE\_CHECK> l1 \#GATE\_POS\_NORMALIZED\_UP\# > l0 \#GATE\_POS\_NORMALIZED\_DN\# <= and l1 \#GATE\_POS\_NORMALIZED\_UP\# < l0 \#GATE\_POS\_NORMALIZED\_DN\# >= and or \#IS\_AT\_GATE\_CHECK\# or </THIS\_GATE\_CHECK> <THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION> \#GATE\_POS\_NORMALIZED\# sp4 l1 l0 > if{ \#GATE\_INC\_HOLD\_DURATION\# sp6 } els{ \#GATE\_DEC\_HOLD\_DURATION\# sp6 } </THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION> </Case> <Case Value="Inc"> <THIS\_GATE\_CHECK>l1 \#GATE\_POS\_NORMALIZED\_UP\# > l0 \#GATE\_POS\_NORMALIZED\_DN\# <= and \#IS\_AT\_GATE\_CHECK\# or</THIS\_GATE\_CHECK> <THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION>\#GATE\_POS\_NORMALIZED\# sp4 \#GATE\_INC\_HOLD\_DURATION\# sp6</THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION> </Case> <Case Value="Dec"> <THIS\_GATE\_CHECK>l1 \#GATE\_POS\_NORMALIZED\_UP\# < l0 \#GATE\_POS\_NORMALIZED\_DN\# >= and \#IS\_AT\_GATE\_CHECK\# or</THIS\_GATE\_CHECK> <THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION>\#GATE\_POS\_NORMALIZED\# sp4 \#GATE\_DEC\_HOLD\_DURATION\# sp6</THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION> </Case> </Switch> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <Condition NotEmpty="THIS\_GATE\_CHECK"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_CHECK\_GATE\_BYPASSED</PARAM> <OUT\_PARAM\_NAME>CHECK\_GATE\_BYPASSED</OUT\_PARAM\_NAME> <THIS\_CHECK\_GATE\_BYPASSED>\#THIS\_GATE\_CHECK\# if{ 1 sp3 \#THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION\# }</THIS\_CHECK\_GATE\_BYPASSED> </UseParametersFn> <Condition NotEmpty="CHECK\_IS\_AT\_ANY\_GATE"> <True> <CHECK\_IS\_AT\_ANY\_GATE>\#CHECK\_IS\_AT\_ANY\_GATE\# \#IS\_AT\_GATE\_CHECK\# or</CHECK\_IS\_AT\_ANY\_GATE> </True> <False> <CHECK\_IS\_AT\_ANY\_GATE>\#IS\_AT\_GATE\_CHECK\#</CHECK\_IS\_AT\_ANY\_GATE> </False> </Condition> </Condition> </Parameters> </Do> <Then> <Condition NotEmpty="CHECK\_GATE\_BYPASSED"> <True> <\#OUT\_PARAM\_NAME\#> sp1 '\#INPUT\_NAME\#' 'pressed\_or\_down'\_n (F:InputAction) if{ \#GET\_POSITION\_PCT\_OVER\_100\# sp0 \#CHECK\_GATE\_BYPASSED\# l3 if{ '\#INPUT\_NAME\#' 'pressed\_or\_down\_time'\_n (F:InputAction) sp5 (O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate) ! if{ l5 (O:XMLVAR\#VAR\_UID\_PREFIX\#\_Last\_Pressed\_Time) < if{ (\* we release the button and started pressing again \*) 1 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate) 0 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Last\_Pressed\_Time) } els{ l5 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Last\_Pressed\_Time) l4 sp1 } } (O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate) if{ l5 l6 < if{ l4 sp1 } els{ 0 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate) } } } els{ 0 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Last\_Pressed\_Time) } } l1 </\#OUT\_PARAM\_NAME\#> <\#OUT\_PARAM\_IS\_AT\_GATE\#>\#CHECK\_IS\_AT\_ANY\_GATE\#</\#OUT\_PARAM\_IS\_AT\_GATE\#> <\#OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE\#>(>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate)</\#OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE\#> </True> <False> <\#OUT\_PARAM\_NAME\# /> <\#OUT\_PARAM\_IS\_AT\_GATE\# /> <\#OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE\# /> </False> </Condition> </Then> </Loop> </ReturnParameters> </ParametersFn> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <Template Name="ASOBO\_GT\_Procedure\_Template"> <Parameters Type="Default"> <VALUE\_UNITS /> <VALUE\_CODE /> <INIT\_CODE /> <INC\_CODE /> <DEC\_CODE /> <SET\_CODE /> </Parameters> <UseInputEvent ID="ASOBO\_GIE\_Base"> <INPUT\_EVENT\_ID\_SOURCE>PROCEDURE</INPUT\_EVENT\_ID\_SOURCE> <IE\_NAME>\#IE\_NAME\#</IE\_NAME> <TT\_INOP>True</TT\_INOP> <TT\_ICON /> <TT\_INTERACTION /> <TT\_INTERACTION\_LOCKABLE /> <TT\_DESCRIPTION /> <TT\_DESCRIPTION\_IS\_DYNAMIC>False</TT\_DESCRIPTION\_IS\_DYNAMIC> <TT\_VALUE /> <TT\_VALUE\_IS\_DYNAMIC>False</TT\_VALUE\_IS\_DYNAMIC> <Loop> <Setup> <Value>SIMVAR\_TO\_WATCH</Value> <Parameters> <LoadParameters ID="Simvars\_To\_Watch"/> <RemoveSavedParameters ID="Simvars\_To\_Watch"/> </Parameters> </Setup> <Do> <Parameters Type="Override" Lifetime="Loop"> <Condition Check="ID"> <True> <ID Process="Int">\#ID\# 1 +</ID> </True> <False> <ID>0</ID> </False> </Condition> </Parameters> <SIMVAR\_TO\_WATCH\_\#ID\#>\#SIMVAR\_TO\_WATCH\#</SIMVAR\_TO\_WATCH\_\#ID\#> </Do> </Loop> <Loop> <Setup> <Value>LOCAL\_VAR\_TO\_WATCH</Value> <Parameters> <LoadParameters ID="LocalVars\_To\_Watch"/> <RemoveSavedParameters ID="LocalVars\_To\_Watch"/> </Parameters> </Setup> <Do> <Parameters Type="Override" Lifetime="Loop"> <Condition Check="ID"> <True> <ID Process="Int">\#ID\# 1 +</ID> </True> <False> <ID>0</ID> </False> </Condition> </Parameters> <LOCAL\_VAR\_TO\_WATCH\_\#ID\#>\#LOCAL\_VAR\_TO\_WATCH\#</LOCAL\_VAR\_TO\_WATCH\_\#ID\#> </Do> </Loop> </UseInputEvent> <UseTemplate Name="ASOBO\_Process\_Saved\_Updates\_Template"/> </Template> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <Template Name="ASOBO\_Intercept\_Key\_Events\_Template"> <Parameters Type="Override"> <Condition CheckSavedParameters="GET\_KEY\_EVENTS\_TO\_INTERCEPT"> <Loop> <Setup> <Param>PFN\_GET\_KEY\_EVENTS\_TO\_INTERCEPT</Param> <Parameters> <LoadParameters ID="GET\_KEY\_EVENTS\_TO\_INTERCEPT"/> <RemoveSavedParameters ID="GET\_KEY\_EVENTS\_TO\_INTERCEPT"/> </Parameters> </Setup> <Do> <SaveParameters ID="Key\_Events\_To\_Intercept" Append="Override"> <UseParametersFn Name="\#PFN\_GET\_KEY\_EVENTS\_TO\_INTERCEPT\#" /> </SaveParameters> </Do> </Loop> </Condition> </Parameters> <UseTemplate Name="ASOBO\_GT\_Procedure\_Template"> <IE\_NAME>Intercept\_Key\_Events</IE\_NAME> <SET\_ARG\_COUNT>1</SET\_ARG\_COUNT> <SET\_PARAM\_0>p0</SET\_PARAM\_0> <SET\_PARAM\_0\_TYPE>Float</SET\_PARAM\_0\_TYPE> <SET\_PARAM\_0\_IS\_DYNAMIC>True</SET\_PARAM\_0\_IS\_DYNAMIC> <Loop> <Setup> <Param>EVENT\_ID</Param> <Value>EVENT\_CODE</Value> <Parameters> <LoadParameters ID="Key\_Events\_To\_Intercept"/> <RemoveSavedParameters ID="Key\_Events\_To\_Intercept"/> </Parameters> </Setup> <Do> <Parameters Type="Override" Lifetime="Loop"> <Condition Check="ID"> <True> <ID Process="Int">\#ID\# 1 +</ID> </True> <False> <ID>0</ID> </False> </Condition> </Parameters> <BINDING\_SET\_\#ID\#>\#EVENT\_ID\#</BINDING\_SET\_\#ID\#> <BINDING\_SET\_\#ID\#\_EVENT\_ID>\#EVENT\_ID\#</BINDING\_SET\_\#ID\#\_EVENT\_ID> <BINDING\_SET\_\#ID\#\_EVENT\_ID\_ONLY>True</BINDING\_SET\_\#ID\#\_EVENT\_ID\_ONLY> <BINDING\_SET\_\#ID\#\_PARAM\_0>\#EVENT\_CODE\#</BINDING\_SET\_\#ID\#\_PARAM\_0> <BINDING\_SET\_\#ID\#\_PARAM\_0\_IS\_DYNAMIC>True</BINDING\_SET\_\#ID\#\_PARAM\_0\_IS\_DYNAMIC> </Do> </Loop> </UseTemplate> </Template> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <ParametersFn Name="ASOBO\_Save\_Update\_Helper"> <Parameters Type="Default"> <UPDATE\_CODE/> <UPDATE\_INTERACTION\_MODEL>All</UPDATE\_INTERACTION\_MODEL> <UPDATE\_FREQUENCY>1</UPDATE\_FREQUENCY> <UPDATE\_TEMPLATE>ASOBO\_GT\_Update</UPDATE\_TEMPLATE> <SAVE\_UPDATE\_TO>Temp\_Update</SAVE\_UPDATE\_TO> </Parameters> <Parameters Type="Override"> <SaveParameters ID="\#SAVE\_UPDATE\_TO\#" Append="Default"> <UPDATE\_TEMPLATE>\#UPDATE\_TEMPLATE\#</UPDATE\_TEMPLATE> <UPDATE\_CODE>\#UPDATE\_CODE\#</UPDATE\_CODE> <Condition Check="UPDATE\_ONCE"> <True> <UPDATE\_ONCE>\#UPDATE\_ONCE\#</UPDATE\_ONCE> </True> <False> <FREQUENCY>\#UPDATE\_FREQUENCY\#</FREQUENCY> </False> </Condition> <INTERACTION\_MODEL>\#UPDATE\_INTERACTION\_MODEL\#</INTERACTION\_MODEL> </SaveParameters> </Parameters> </ParametersFn> <ParametersFn Name="ASOBO\_Increment\_ID\_Helper"> <Parameters Type="Default"> <OUT\_PARAM\_ID\_NAME>CUR\_ID</OUT\_PARAM\_ID\_NAME> <OUT\_FIRST\_ID>0</OUT\_FIRST\_ID> <INCREMENT\_COUNT>1</INCREMENT\_COUNT> </Parameters> <Parameters Type="Override"> <Condition Check="\#OUT\_PARAM\_ID\_NAME\#"> <CUR\_VALUE Process="Param">\#OUT\_PARAM\_ID\_NAME\#</CUR\_VALUE> </Condition> </Parameters> <ReturnParameters> <Condition Check="\#OUT\_PARAM\_ID\_NAME\#"> <True> <\#OUT\_PARAM\_ID\_NAME\# Process="Int">\#CUR\_VALUE\# \#INCREMENT\_COUNT\# +</\#OUT\_PARAM\_ID\_NAME\#> </True> <False> <\#OUT\_PARAM\_ID\_NAME\#>\#OUT\_FIRST\_ID\#</\#OUT\_PARAM\_ID\_NAME\#> </False> </Condition> </ReturnParameters> </ParametersFn> <ParametersFn Name="ASOBO\_Incremental\_Save\_Helper"> <Parameters Type="Default"> <SAVE\_ELEMENT\_PREFIX>Saved\_\#ELEMENT\_TYPE\_NAME\#</SAVE\_ELEMENT\_PREFIX> <APPEND\_ELEMENT>Append\_With\_\#ELEMENT\_TYPE\_NAME\#</APPEND\_ELEMENT> <SAVE\_INCREMENT\_TO>Saved\_\#ELEMENT\_TYPE\_NAME\#\_Parameters</SAVE\_INCREMENT\_TO> <SAVE\_ELEMENT>ASOBO\_Save\_\#ELEMENT\_TYPE\_NAME\#\_Helper</SAVE\_ELEMENT> </Parameters> <Parameters Type="Override"> <LoadParameters ID="\#SAVE\_INCREMENT\_TO\#"/> <ELEMENT\_TYPE\_NAME\_UC Process="String">'\#ELEMENT\_TYPE\_NAME\#' uc</ELEMENT\_TYPE\_NAME\_UC> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Increment\_ID\_Helper"> <OUT\_PARAM\_ID\_NAME>\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED</OUT\_PARAM\_ID\_NAME> </UseParametersFn> </Parameters> <Parameters Type="Override"> <LAST\_ID\_USED Process="Param">\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED</LAST\_ID\_USED> </Parameters> <Parameters Type="Default"> <SAVE\_\#ELEMENT\_TYPE\_NAME\_UC\#\_TO>\#SAVE\_ELEMENT\_PREFIX\#\_\#LAST\_ID\_USED\#</SAVE\_\#ELEMENT\_TYPE\_NAME\_UC\#\_TO> <Condition CheckSavedParameters="\#APPEND\_ELEMENT\#"> <APPEND\_WITH\_SAVED\_\#ELEMENT\_TYPE\_NAME\_UC\#>\#APPEND\_ELEMENT\#</APPEND\_WITH\_SAVED\_\#ELEMENT\_TYPE\_NAME\_UC\#> </Condition> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="\#SAVE\_ELEMENT\#"/> <SaveParameters ID="\#SAVE\_INCREMENT\_TO\#" Append="Override"> <\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED>\#LAST\_ID\_USED\#</\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED> </SaveParameters> </Parameters> </ParametersFn> <ParametersFn Name="ASOBO\_Add\_Update\_Helper"> <Parameters Type="Override"> <Condition Check="UPDATE\_TYPE\_NAME"> <SAVE\_ELEMENT\_PREFIX>Saved\_\#UPDATE\_TYPE\_NAME\#\_Update</SAVE\_ELEMENT\_PREFIX> <SAVE\_INCREMENT\_TO>Saved\_\#UPDATE\_TYPE\_NAME\#\_Update\_Parameters</SAVE\_INCREMENT\_TO> </Condition> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Incremental\_Save\_Helper"> <ELEMENT\_TYPE\_NAME>Update</ELEMENT\_TYPE\_NAME> </UseParametersFn> </Parameters> </ParametersFn> <Template Name="ASOBO\_Process\_Saved\_Updates\_Template"> <Parameters Type="Override"> <Condition Check="ELEMENT\_TYPE\_NAME"> <GET\_SAVED\_ELEMENT\_PREFIX>Saved\_\#ELEMENT\_TYPE\_NAME\#\_Update</GET\_SAVED\_ELEMENT\_PREFIX> <GET\_SAVED\_INCREMENT\_TO>Saved\_\#ELEMENT\_TYPE\_NAME\#\_Update\_Parameters</GET\_SAVED\_INCREMENT\_TO> </Condition> </Parameters> <UseTemplate Name="ASOBO\_Process\_Saved\_Elements\_Template"> <ELEMENT\_TYPE\_NAME>Update</ELEMENT\_TYPE\_NAME> </UseTemplate> </Template> <ParametersFn Name="ASOBO\_Load\_Then\_Remove\_Parameters\_Helper"> <Parameters Type="Default"> <REMOVE\_\#SAVED\_PARAMETERS\#>True</REMOVE\_\#SAVED\_PARAMETERS\#> </Parameters> <Parameters Type="Override"> <\_\_SAVED\_PARAMETERS\_\_ Process="Param">\#SAVED\_PARAMETERS\#</\_\_SAVED\_PARAMETERS\_\_> </Parameters> <ReturnParameters> <Condition CheckSavedParameters="\#\_\_SAVED\_PARAMETERS\_\_\#"> <LoadParameters ID="\#\_\_SAVED\_PARAMETERS\_\_\#"/> <Condition Valid="REMOVE\_\#SAVED\_PARAMETERS\#"> <RemoveSavedParameters ID="\#\_\_SAVED\_PARAMETERS\_\_\#"/> </Condition> </Condition> </ReturnParameters> </ParametersFn> <Template Name="ASOBO\_Process\_Saved\_Elements\_Template"> <Parameters Type="Default"> <GET\_SAVED\_ELEMENT\_PREFIX>Saved\_\#ELEMENT\_TYPE\_NAME\#</GET\_SAVED\_ELEMENT\_PREFIX> <GET\_SAVED\_INCREMENT\_TO>Saved\_\#ELEMENT\_TYPE\_NAME\#\_Parameters</GET\_SAVED\_INCREMENT\_TO> </Parameters> <Parameters Type="Override"> <Condition CheckSavedParameters="\#GET\_SAVED\_INCREMENT\_TO\#"> <UseParametersFn Name="ASOBO\_Load\_Then\_Remove\_Parameters\_Helper"> <SAVED\_PARAMETERS>GET\_SAVED\_INCREMENT\_TO</SAVED\_PARAMETERS> </UseParametersFn> <ELEMENT\_TYPE\_NAME\_UC Process="String">'\#ELEMENT\_TYPE\_NAME\#' uc</ELEMENT\_TYPE\_NAME\_UC> <\_\_PROCESS\_ELEMENTS\_\_>True</\_\_PROCESS\_ELEMENTS\_\_> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="\_\_PROCESS\_ELEMENTS\_\_"> <LAST\_ID\_USED Process="Param">\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED</LAST\_ID\_USED> </Condition> </Parameters> <Condition Valid="\_\_PROCESS\_ELEMENTS\_\_"> <Loop> <Setup> <Param>ELEMENT\_ID</Param> <From>0</From> <Inc>1</Inc> <To>\#LAST\_ID\_USED\#</To> </Setup> <Do> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Load\_Then\_Remove\_Parameters\_Helper"> <PLOAD\_\#ELEMENT\_TYPE\_NAME\_UC\#\_PARAMETERS>\#GET\_SAVED\_ELEMENT\_PREFIX\#\_\#ELEMENT\_ID\#</PLOAD\_\#ELEMENT\_TYPE\_NAME\_UC\#\_PARAMETERS> <SAVED\_PARAMETERS>PLOAD\_\#ELEMENT\_TYPE\_NAME\_UC\#\_PARAMETERS</SAVED\_PARAMETERS> </UseParametersFn> <\#ELEMENT\_TYPE\_NAME\_UC\#\_ID>\#ELEMENT\_ID\#</\#ELEMENT\_TYPE\_NAME\_UC\#\_ID> </Parameters> <Parameters Type="Override"> <TEMPLATE\_TO\_USE Process="Param">\#ELEMENT\_TYPE\_NAME\_UC\#\_TEMPLATE</TEMPLATE\_TO\_USE> </Parameters> <UseTemplate Name="\#TEMPLATE\_TO\_USE\#"/> </Do> </Loop> </Condition> </Template> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <!-- IN (opt): TOKEN\_PREFIX (Param prefix to look for) --> <!-- IN (opt): TOKEN\_SUFFIX (Param suffix to look for) --> <!-- OUT: TOKEN\_COUNT (number of loop iterations) --> <!-- OUT: LAST\_TOKEN\_ID (last valid id iterated on) --> <ParametersFn Name="ASOBO\_Count\_Token\_Helper"> <Parameters Type="Default"> <FROM>0</FROM> <INC>1</INC> <TOKEN\_PREFIX/> <TOKEN\_SUFFIX/> <OUT\_PARAM\_NAME\_COUNT>TOKEN\_COUNT</OUT\_PARAM\_NAME\_COUNT> <OUT\_PARAM\_NAME\_LAST\_ID>LAST\_TOKEN\_ID</OUT\_PARAM\_NAME\_LAST\_ID> </Parameters> <ReturnParameters> <Loop> <Setup> <Param>CUR\_ID</Param> <From>\#FROM\#</From> <Inc>\#INC\#</Inc> <While> <Arg NotEmpty="\#TOKEN\_PREFIX\#\#CUR\_ID\#\#TOKEN\_SUFFIX\#"/> </While> </Setup> <Do/> <Then> <\#OUT\_PARAM\_NAME\_COUNT\# Process="Int">\#CUR\_ID\# \#FROM\# -</\#OUT\_PARAM\_NAME\_COUNT\#> <\#OUT\_PARAM\_NAME\_LAST\_ID\# Process="Int">\#CUR\_ID\# 1 -</\#OUT\_PARAM\_NAME\_LAST\_ID\#> </Then> </Loop> </ReturnParameters> </ParametersFn> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <Macro Name="Lerp">(F:Lerp)</Macro><!-- Ex: 0.5 0 100 @Lerp = 50 --> <Macro Name="MapRange">(F:MapRange)</Macro><!-- Ex: 12550 100 25000 0 1 @MapRange = 0.5 --> <Macro Name="Clamp">(F:Clamp)</Macro><!-- Ex: 110 0 100 @Clamp = 100 --> <Macro Name="Ratio">(F:Ratio)</Macro><!-- Ex: 125 50 150 @Ratio = 0.75 --> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <ParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Parameters"> <ReturnParameters> <SET\_ACTIVE\_RANGE>(>O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Max) (>O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Min)</SET\_ACTIVE\_RANGE> <CLAMP\_IN\_ACTIVE\_RANGE>(O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Min) (O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Max) @Clamp</CLAMP\_IN\_ACTIVE\_RANGE> <ACTIVE\_RANGE\_MIN>(O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Min)</ACTIVE\_RANGE\_MIN> <ACTIVE\_RANGE\_MAX>(O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Max)</ACTIVE\_RANGE\_MAX> <GET\_IS\_LOCKED\_IN\_RANGE>(O:\_Input\_\#THROTTLE\_NAME\#\_Is\_Locked\_In\_Range)</GET\_IS\_LOCKED\_IN\_RANGE> <SET\_IS\_LOCKED\_IN\_RANGE>(>O:\_Input\_\#THROTTLE\_NAME\#\_Is\_Locked\_In\_Range)</SET\_IS\_LOCKED\_IN\_RANGE> <Condition NotEmpty="THROTTLE\_INDEX"> <True> <SET\_BLOCKED\_BY\_UPPER\_BOUNDS>(>A:THROTTLE INPUT BLOCKED BY UPPER BOUNDS:\#THROTTLE\_INDEX\#, Bool)</SET\_BLOCKED\_BY\_UPPER\_BOUNDS> <SET\_BLOCKED\_BY\_LOWER\_BOUNDS>(>A:THROTTLE INPUT BLOCKED BY LOWER BOUNDS:\#THROTTLE\_INDEX\#, Bool)</SET\_BLOCKED\_BY\_LOWER\_BOUNDS> <GET\_BLOCKED\_BY\_UPPER\_BOUNDS>(A:THROTTLE INPUT BLOCKED BY UPPER BOUNDS:\#THROTTLE\_INDEX\#, Bool)</GET\_BLOCKED\_BY\_UPPER\_BOUNDS> <GET\_BLOCKED\_BY\_LOWER\_BOUNDS>(A:THROTTLE INPUT BLOCKED BY LOWER BOUNDS:\#THROTTLE\_INDEX\#, Bool)</GET\_BLOCKED\_BY\_LOWER\_BOUNDS> </True> <False> <SET\_BLOCKED\_BY\_UPPER\_BOUNDS>(>A:THROTTLE INPUT BLOCKED BY UPPER BOUNDS, Bool)</SET\_BLOCKED\_BY\_UPPER\_BOUNDS> <SET\_BLOCKED\_BY\_LOWER\_BOUNDS>(>A:THROTTLE INPUT BLOCKED BY LOWER BOUNDS, Bool)</SET\_BLOCKED\_BY\_LOWER\_BOUNDS> <GET\_BLOCKED\_BY\_UPPER\_BOUNDS>(A:THROTTLE INPUT BLOCKED BY UPPER BOUNDS, Bool)</GET\_BLOCKED\_BY\_UPPER\_BOUNDS> <GET\_BLOCKED\_BY\_LOWER\_BOUNDS>(A:THROTTLE INPUT BLOCKED BY LOWER BOUNDS, Bool)</GET\_BLOCKED\_BY\_LOWER\_BOUNDS> </False> </Condition> <DETENT\_COMPARISON\_DELTA>0.001</DETENT\_COMPARISON\_DELTA> </ReturnParameters> </ParametersFn> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <ParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Key\_Events\_To\_Intercepts"> <Parameters Type="Override"> <LoadParameters ID="Input\_Detents"/> </Parameters> <Parameters Type="Default"> <UseParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Parameters" /> <IS\_ALLOWED\_TO\_RESET\_BOUNDS>False</IS\_ALLOWED\_TO\_RESET\_BOUNDS> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Count\_Token\_Helper"> <TOKEN\_PREFIX>DETENT\_</TOKEN\_PREFIX> <OUT\_PARAM\_NAME\_LAST\_ID>LAST\_DETENT\_ID</OUT\_PARAM\_NAME\_LAST\_ID> </UseParametersFn> <Condition NotEmpty="THROTTLE\_INCR\_IN\_RANGE\_VALUE"> <THROTTLE\_INCR\_IN\_RANGE>\#THROTTLE\_INCR\_IN\_RANGE\_VALUE\# \#CLAMP\_IN\_ACTIVE\_RANGE\# sp0 \#THROTTLE\_SET\_TO\_L0\#</THROTTLE\_INCR\_IN\_RANGE> </Condition> <Condition NotEmpty="THROTTLE\_DECR\_IN\_RANGE\_VALUE"> <THROTTLE\_DECR\_IN\_RANGE>\#THROTTLE\_DECR\_IN\_RANGE\_VALUE\# \#CLAMP\_IN\_ACTIVE\_RANGE\# sp0 \#THROTTLE\_SET\_TO\_L0\#</THROTTLE\_DECR\_IN\_RANGE> </Condition> </Parameters> <Parameters Type="Override"> <Loop> <Setup> <Param>DETENT\_ID</Param> <From>0</From> <Inc>1</Inc> <While> <Arg Check="DETENT\_\#DETENT\_ID\#"/> </While> </Setup> <Do> <Parameters Type="Override"> <PREV\_DETENT\_ID Process="Int">\#DETENT\_ID\# 1 - 0 max</PREV\_DETENT\_ID> <NEXT\_DETENT\_ID Process="Int">\#DETENT\_ID\# 1 + \#LAST\_DETENT\_ID\# min</NEXT\_DETENT\_ID> </Parameters> <Parameters Type="Override"> <DETENT\_POSITION Process="Param">DETENT\_\#DETENT\_ID\#</DETENT\_POSITION> <PREV\_DETENT\_POSITION Process="Param">DETENT\_\#PREV\_DETENT\_ID\#</PREV\_DETENT\_POSITION> <NEXT\_DETENT\_POSITION Process="Param">DETENT\_\#NEXT\_DETENT\_ID\#</NEXT\_DETENT\_POSITION> </Parameters> <Parameters Type="Override"> <DETENT\_POSITION\_POS Process="Float">\#DETENT\_POSITION\# \#DETENT\_COMPARISON\_DELTA\# +</DETENT\_POSITION\_POS> <DETENT\_POSITION\_NEG Process="Float">\#DETENT\_POSITION\# \#DETENT\_COMPARISON\_DELTA\# -</DETENT\_POSITION\_NEG> <PREV\_DETENT\_POSITION\_NEG Process="Float">\#PREV\_DETENT\_POSITION\# \#DETENT\_COMPARISON\_DELTA\# -</PREV\_DETENT\_POSITION\_NEG> <NEXT\_DETENT\_POSITION\_NEG Process="Float">\#NEXT\_DETENT\_POSITION\# \#DETENT\_COMPARISON\_DELTA\# -</NEXT\_DETENT\_POSITION\_NEG> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <Condition Check="PREV\_DETENT\_ID" Different="\#DETENT\_ID\#"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_DETENT\_CHECK</PARAM> <OUT\_PARAM\_NAME>GET\_DETENT\_BELOW</OUT\_PARAM\_NAME> <Condition Check="PREV\_DETENT\_ID" Match="0"> <True> <THIS\_DETENT\_CHECK>l0 \#DETENT\_POSITION\_POS\# <= if{ \#PREV\_DETENT\_POSITION\# g0 }</THIS\_DETENT\_CHECK> </True> <False> <THIS\_DETENT\_CHECK>l0 \#PREV\_DETENT\_POSITION\_NEG\# > l0 \#DETENT\_POSITION\_POS\# <= and if{ \#PREV\_DETENT\_POSITION\# g0 }</THIS\_DETENT\_CHECK> </False> </Condition> </UseParametersFn> </Condition> <Condition Check="NEXT\_DETENT\_ID" Different="\#DETENT\_ID\#"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_DETENT\_CHECK</PARAM> <OUT\_PARAM\_NAME>GET\_DETENT\_ABOVE</OUT\_PARAM\_NAME> <Condition Check="NEXT\_DETENT\_ID" Match="\#LAST\_DETENT\_ID\#"> <True> <THIS\_DETENT\_CHECK>l0 \#DETENT\_POSITION\_NEG\# >= if{ \#NEXT\_DETENT\_POSITION\# g0 }</THIS\_DETENT\_CHECK> </True> <False> <THIS\_DETENT\_CHECK>l0 \#NEXT\_DETENT\_POSITION\_NEG\# < l0 \#DETENT\_POSITION\_NEG\# >= and if{ \#NEXT\_DETENT\_POSITION\# g0 }</THIS\_DETENT\_CHECK> </False> </Condition> </UseParametersFn> </Condition> <Condition> <Test> <Or> <Equal> <Number>\#PREV\_DETENT\_ID\#</Number> <Number>\#DETENT\_ID\#</Number> </Equal> <Equal> <Number>\#NEXT\_DETENT\_ID\#</Number> <Number>\#DETENT\_ID\#</Number> </Equal> </Or> </Test> <False> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_DETENT\_CHECK</PARAM> <OUT\_PARAM\_NAME>GET\_RANGE\_IN\_BETWEEN\_DETENTS</OUT\_PARAM\_NAME> <THIS\_DETENT\_CHECK> \#PREV\_DETENT\_POSITION\# \#NEXT\_DETENT\_POSITION\# l0 rng if{ l0 \#DETENT\_POSITION\# < if{ \#PREV\_DETENT\_POSITION\# \#DETENT\_POSITION\# } els{ \#DETENT\_POSITION\# \#NEXT\_DETENT\_POSITION\# } } </THIS\_DETENT\_CHECK> </UseParametersFn> </False> </Condition> </Parameters> </Do> <Then> <UseParametersFn Name="ASOBO\_Add\_Update\_Helper"> <UPDATE\_ONCE>True</UPDATE\_ONCE> <!-- active range cover full range and not locked --> <UPDATE\_CODE>0 \#SET\_IS\_LOCKED\_IN\_RANGE\# 0 1 \#SET\_ACTIVE\_RANGE\#</UPDATE\_CODE> </UseParametersFn> <Condition Valid="IS\_ALLOWED\_TO\_RESET\_BOUNDS"> <UseParametersFn Name="ASOBO\_Add\_Update\_Helper"> <!-- Reset lock if out of bounds (using other mappings of manually interacting) --> <UPDATE\_CODE> \#GET\_IS\_LOCKED\_IN\_RANGE\# \#ACTIVE\_RANGE\_MIN\# \#DETENT\_COMPARISON\_DELTA\# - \#ACTIVE\_RANGE\_MAX\# \#DETENT\_COMPARISON\_DELTA\# + \#GET\_THROTTLE\_POSITION\# rng ! and if{ 0 \#SET\_IS\_LOCKED\_IN\_RANGE\# 0 1 \#SET\_ACTIVE\_RANGE\# 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# } \#GET\_BLOCKED\_BY\_LOWER\_BOUNDS\# \#GET\_THROTTLE\_POSITION\# \#ACTIVE\_RANGE\_MIN\# - abs \#DETENT\_COMPARISON\_DELTA\# > and if{ 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# } \#GET\_BLOCKED\_BY\_UPPER\_BOUNDS\# \#GET\_THROTTLE\_POSITION\# \#ACTIVE\_RANGE\_MAX\# - abs \#DETENT\_COMPARISON\_DELTA\# > and if{ 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# } </UPDATE\_CODE> <UPDATE\_FREQUENCY>5</UPDATE\_FREQUENCY> </UseParametersFn> </Condition> <SaveParameters ID="Throttle\_Key\_Events\_To\_Intercept" Append="Override"> <!-- active range is settled past the first increment after a prev/next input --> <\#EV\_RANGE\_INC\_THROTTLE\#> \#GET\_THROTTLE\_POSITION\# sp1 \#THROTTLE\_INCR\_IN\_RANGE\# \#GET\_THROTTLE\_POSITION\# sp2 l1 l2 - abs \#DETENT\_COMPARISON\_DELTA\# < \#ACTIVE\_RANGE\_MAX\# 1 != and \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# \#GET\_IS\_LOCKED\_IN\_RANGE\# ! if{ 1 \#SET\_IS\_LOCKED\_IN\_RANGE\# l2 sp0 \#GET\_RANGE\_IN\_BETWEEN\_DETENTS\# \#SET\_ACTIVE\_RANGE\# } </\#EV\_RANGE\_INC\_THROTTLE\#> <\#EV\_RANGE\_DEC\_THROTTLE\#> \#GET\_THROTTLE\_POSITION\# sp1 \#THROTTLE\_DECR\_IN\_RANGE\# \#GET\_THROTTLE\_POSITION\# sp2 l1 l2 - abs \#DETENT\_COMPARISON\_DELTA\# < \#ACTIVE\_RANGE\_MIN\# 0 != and \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# \#GET\_IS\_LOCKED\_IN\_RANGE\# ! if{ 1 \#SET\_IS\_LOCKED\_IN\_RANGE\# l2 sp0 \#GET\_RANGE\_IN\_BETWEEN\_DETENTS\# \#SET\_ACTIVE\_RANGE\# } </\#EV\_RANGE\_DEC\_THROTTLE\#> <\#EV\_RANGE\_NEXT\_DETENT\#>\#GET\_THROTTLE\_POSITION\# sp0 \#GET\_IS\_LOCKED\_IN\_RANGE\# if{ \#ACTIVE\_RANGE\_MAX\# } els{ \#GET\_DETENT\_ABOVE\# :0 } sp0 \#THROTTLE\_SET\_TO\_L0\# 0 \#SET\_IS\_LOCKED\_IN\_RANGE\# 0 1 \#SET\_ACTIVE\_RANGE\# 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# </\#EV\_RANGE\_NEXT\_DETENT\#> <\#EV\_RANGE\_PREV\_DETENT\#>\#GET\_THROTTLE\_POSITION\# sp0 \#GET\_IS\_LOCKED\_IN\_RANGE\# if{ \#ACTIVE\_RANGE\_MIN\# } els{ \#GET\_DETENT\_BELOW\# :0 } sp0 \#THROTTLE\_SET\_TO\_L0\# 0 \#SET\_IS\_LOCKED\_IN\_RANGE\# 0 1 \#SET\_ACTIVE\_RANGE\# 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# </\#EV\_RANGE\_PREV\_DETENT\#> </SaveParameters> </Then> </Loop> </Parameters> </ParametersFn> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <ParametersFn Name="ASOBO\_Get\_Throttle\_Key\_Events\_To\_Intercepts"> <Parameters Type="Default"> <!-- Amount added/removed on incr/decr events --> <THROTTLE\_INCREMENT\_SCALE>0.01</THROTTLE\_INCREMENT\_SCALE> <!-- Turn this setting off to make the individual throttle binding act similarly to how they used to in FS2020 --> <!-- off: the INCR & DECR events cover the full throttle range. Upon reaching a detent the input --> <!-- must be released for a configurable amount of time before being pressed again and allowing bypassing the detent --> <!-- on: the INCR & DECR events are confined to their active range. The active range can be moved using the CUT & FULL events --> <Condition CheckSavedParameters="Input\_Detents"> <True> <USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK>True</USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK> </True> <False> <USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK>False</USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK><!-- fallback to FS2020 behavior --> </False> </Condition> </Parameters> <Parameters Type="Default"> <INPUT\_VALUE>p1</INPUT\_VALUE> <MAP\_INPUT\_VALUE>@16K /</MAP\_INPUT\_VALUE> <MAP\_AXIS\_VALUE>@16K / 1 + 0.5 \*</MAP\_AXIS\_VALUE> <DECREMENT>p0 \#THROTTLE\_INCREMENT\_SCALE\# \* -</DECREMENT> <INCREMENT>p0 \#THROTTLE\_INCREMENT\_SCALE\# \* +</INCREMENT> <THROTTLE\_CUT\_VALUE>0</THROTTLE\_CUT\_VALUE> <THROTTLE\_FULL\_VALUE>1</THROTTLE\_FULL\_VALUE> <SET\_ALL\_REVERSE\_THRUST\_ENABLED>(>A:GENERAL ENG REVERSE THRUST ENGAGED:0, Bool)</SET\_ALL\_REVERSE\_THRUST\_ENABLED> <Condition CheckSavedParameters="Input\_Detents"> <CLAMP\_ALL\_THROTTLES>(O:\_Input\_ALL\_THROTTLES\_Range\_Min) (O:\_Input\_ALL\_THROTTLES\_Range\_Max) @Clamp</CLAMP\_ALL\_THROTTLES> </Condition> </Parameters> <Condition Check="THROTTLE\_CUT\_VALUE" Match="0"> <Parameters Type="Default"> <THROTTLE\_CUT\_AT\_ZERO>True</THROTTLE\_CUT\_AT\_ZERO> </Parameters> </Condition> <Parameters Type="Override"> <Loop> <Setup> <Param>THROTTLE\_NAME</Param> <Value>THROTTLE\_INDEX</Value> <Parameters> <LoadParameters ID="Throttles"/> <RemoveSavedParameters ID="Throttles"/> </Parameters> </Setup> <Do> <Parameters Type="Default"> <IS\_REVERSE\_THRUST\_ENABLED>(A:GENERAL ENG REVERSE THRUST ENGAGED:\#THROTTLE\_INDEX\#, Bool)</IS\_REVERSE\_THRUST\_ENABLED> <SET\_REVERSE\_THRUST\_ENABLED>(>A:GENERAL ENG REVERSE THRUST ENGAGED:\#THROTTLE\_INDEX\#, Bool)</SET\_REVERSE\_THRUST\_ENABLED> <GET\_POSITION\_PCT\_OVER\_100>(B:\#THROTTLE\_NAME\#, percent over 100)</GET\_POSITION\_PCT\_OVER\_100> <GET\_GATES>\#THROTTLE\_NAME\#\_CURVE</GET\_GATES> <GET\_GATES\_CONFIG>\#THROTTLE\_NAME\#\_CURVE\_CONFIG</GET\_GATES\_CONFIG> </Parameters> <Parameters Type="Default"> <Condition NotEmpty="PFN\_MAP\_SETTABLE\_VALUE"> <True> <UseParametersFn Name="\#PFN\_MAP\_SETTABLE\_VALUE\#" /> </True> <False> <Condition Valid="THROTTLE\_CUT\_AT\_ZERO"> <True> <!-- No remap needed send axis mapped between 0 and 1 --> <MAP\_SETTABLE\_VALUE/> </True> <False> <MAP\_SETTABLE\_VALUE>0 1 \#THROTTLE\_CUT\_VALUE\# 0 \#THROTTLE\_FULL\_VALUE\# \#IS\_REVERSE\_THRUST\_ENABLED\# ? @MapRange</MAP\_SETTABLE\_VALUE> </False> </Condition> </False> </Condition> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <INPUT\_NAME>KEY\_THROTTLE\_INCR</INPUT\_NAME> <OUT\_PARAM\_NAME>GLB\_CLAMP\_THROTTLE\_INCR</OUT\_PARAM\_NAME> <VAR\_UID>\#THROTTLE\_NAME\#</VAR\_UID> <OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE>GLB\_SET\_CAN\_BYPASS\_GATE</OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE> </UseParametersFn> <UseParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <INPUT\_NAME>KEY\_THROTTLE\_DECR</INPUT\_NAME> <OUT\_PARAM\_NAME>GLB\_CLAMP\_THROTTLE\_DECR</OUT\_PARAM\_NAME> <VAR\_UID>\#THROTTLE\_NAME\#</VAR\_UID> <OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE>GLB\_SET\_CAN\_BYPASS\_GATE</OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE> </UseParametersFn> <Condition Valid="USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK"> <False> <UseParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <INPUT\_NAME>KEY\_THROTTLE\#THROTTLE\_INDEX\#\_INCR</INPUT\_NAME> <OUT\_PARAM\_NAME>CLAMP\_THROTTLE\_INCR</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <INPUT\_NAME>KEY\_THROTTLE\#THROTTLE\_INDEX\#\_DECR</INPUT\_NAME> <OUT\_PARAM\_NAME>CLAMP\_THROTTLE\_DECR</OUT\_PARAM\_NAME> </UseParametersFn> </False> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK"> <True> <SET\_CAN\_BYPASS\_GATE\_TO\_TRUE>1 \#GLB\_SET\_CAN\_BYPASS\_GATE\#</SET\_CAN\_BYPASS\_GATE\_TO\_TRUE> </True> <False> <SET\_CAN\_BYPASS\_GATE\_TO\_TRUE>1 \#SET\_CAN\_BYPASS\_GATE\# 1 \#GLB\_SET\_CAN\_BYPASS\_GATE\#</SET\_CAN\_BYPASS\_GATE\_TO\_TRUE> </False> </Condition> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Add\_Update\_Helper"> <UPDATE\_ONCE>True</UPDATE\_ONCE> <UPDATE\_CODE>\#GET\_POSITION\_PCT\_OVER\_100\# sp0 \#IS\_AT\_ANY\_GATE\_CHECK\# if{ \#SET\_CAN\_BYPASS\_GATE\_TO\_TRUE\# }</UPDATE\_CODE> </UseParametersFn> <Condition NotEmpty="THROTTLE\_FULL\_ALIAS\_ID"> <True> <THIS\_THROTTLE\_FULL>(>B:\#THROTTLE\_NAME\#\_\#THROTTLE\_FULL\_ALIAS\_ID\#)</THIS\_THROTTLE\_FULL> </True> <False> <THIS\_THROTTLE\_FULL>\#THROTTLE\_FULL\_VALUE\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_FULL> </False> </Condition> <Condition NotEmpty="THROTTLE\_CUT\_ALIAS\_ID"> <True> <THIS\_THROTTLE\_CUT>(>B:\#THROTTLE\_NAME\#\_\#THROTTLE\_CUT\_ALIAS\_ID\#)</THIS\_THROTTLE\_CUT> </True> <False> <THIS\_THROTTLE\_CUT>\#THROTTLE\_CUT\_VALUE\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_CUT> </False> </Condition> <INCREMENT\_THIS\_THROTTLE>\#GET\_POSITION\_PCT\_OVER\_100\# \#INCREMENT\#</INCREMENT\_THIS\_THROTTLE> <DECREMENT\_THIS\_THROTTLE>\#GET\_POSITION\_PCT\_OVER\_100\# \#DECREMENT\#</DECREMENT\_THIS\_THROTTLE> <THIS\_THROTTLE\_SET>\#INPUT\_VALUE\# \#MAP\_INPUT\_VALUE\# \#MAP\_SETTABLE\_VALUE\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_SET> <THIS\_THROTTLE\_AXIS\_SET>\#INPUT\_VALUE\# \#MAP\_AXIS\_VALUE\# \#MAP\_SETTABLE\_VALUE\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_AXI\_SET> <THIS\_THROTTLE\_RESET\_IN\_RANGE> \#GET\_POSITION\_PCT\_OVER\_100\# sp0 \#IS\_REVERSE\_THRUST\_ENABLED\# if{ l0 \#THROTTLE\_CUT\_VALUE\# > if{ l0 \#THROTTLE\_CUT\_VALUE\# \#THROTTLE\_FULL\_VALUE\# \#THROTTLE\_CUT\_VALUE\# 0 @MapRange (>B:\#THROTTLE\_NAME\#\_SET) } } els{ l0 \#THROTTLE\_CUT\_VALUE\# < if{ l0 0 \#THROTTLE\_CUT\_VALUE\# \#THROTTLE\_FULL\_VALUE\# \#THROTTLE\_CUT\_VALUE\# @MapRange (>B:\#THROTTLE\_NAME\#\_SET) } } </THIS\_THROTTLE\_RESET\_IN\_RANGE> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_INCR</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_INCR</OUT\_PARAM\_NAME> <THIS\_THROTTLE\_INCR>\#INCREMENT\_THIS\_THROTTLE\# \#GLB\_CLAMP\_THROTTLE\_INCR\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_INCR> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_DECR</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_DECR</OUT\_PARAM\_NAME> <THIS\_THROTTLE\_DECR>\#DECREMENT\_THIS\_THROTTLE\# \#GLB\_CLAMP\_THROTTLE\_DECR\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_DECR> </UseParametersFn> <Condition CheckSavedParameters="Input\_Detents"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_INCR\_IN\_RANGE</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_INCR\_IN\_RANGE</OUT\_PARAM\_NAME> <THIS\_THROTTLE\_INCR\_IN\_RANGE>\#INCREMENT\_THIS\_THROTTLE\# \#CLAMP\_ALL\_THROTTLES\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_INCR\_IN\_RANGE> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_DECR\_IN\_RANGE</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_DECR\_IN\_RANGE</OUT\_PARAM\_NAME> <THIS\_THROTTLE\_DECR\_IN\_RANGE>\#DECREMENT\_THIS\_THROTTLE\# \#CLAMP\_ALL\_THROTTLES\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_DECR\_IN\_RANGE> </UseParametersFn> </Condition> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_FULL</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_FULL</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_CUT</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_CUT</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_SET</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_SET</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_AXIS\_SET</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_AXIS\_SET</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_RESET\_IN\_RANGE</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_RESET\_IN\_RANGE</OUT\_PARAM\_NAME> </UseParametersFn> <Condition CheckSavedParameters="Input\_Detents"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THROTTLE\_SET\_TO\_L0</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_SET\_TO\_L0</OUT\_PARAM\_NAME> <THROTTLE\_SET\_TO\_L0>l0 (>B:\#THROTTLE\_NAME\#\_SET)</THROTTLE\_SET\_TO\_L0> </UseParametersFn> <Condition Check="GET\_1ST\_THROTTLE\_POSITION"> <False> <GET\_1ST\_THROTTLE\_POSITION>\#GET\_POSITION\_PCT\_OVER\_100\#</GET\_1ST\_THROTTLE\_POSITION> </False> </Condition> </Condition> </Parameters> <SaveParameters ID="Throttle\_Key\_Events\_To\_Intercept" Append="Override"> <Condition Valid="USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK"> <False> <THROTTLE\#THROTTLE\_INDEX\#\_INCR>\#INCREMENT\_THIS\_THROTTLE\# \#CLAMP\_THROTTLE\_INCR\# (>B:\#THROTTLE\_NAME\#\_SET)</THROTTLE\#THROTTLE\_INDEX\#\_INCR> <THROTTLE\#THROTTLE\_INDEX\#\_DECR>\#DECREMENT\_THIS\_THROTTLE\# \#CLAMP\_THROTTLE\_DECR\# (>B:\#THROTTLE\_NAME\#\_SET)</THROTTLE\#THROTTLE\_INDEX\#\_DECR> <THROTTLE\#THROTTLE\_INDEX\#\_FULL>\#THIS\_THROTTLE\_FULL\#</THROTTLE\#THROTTLE\_INDEX\#\_FULL> <THROTTLE\#THROTTLE\_INDEX\#\_CUT>\#THIS\_THROTTLE\_CUT\#</THROTTLE\#THROTTLE\_INDEX\#\_CUT> </False> </Condition> <THROTTLE\#THROTTLE\_INDEX\#\_SET>\#THIS\_THROTTLE\_SET\#</THROTTLE\#THROTTLE\_INDEX\#\_SET> <THROTTLE\#THROTTLE\_INDEX\#\_AXIS\_SET\_EX1>\#THIS\_THROTTLE\_AXIS\_SET\#</THROTTLE\#THROTTLE\_INDEX\#\_AXIS\_SET\_EX1> <THROTTLE\#THROTTLE\_INDEX\#\_IDLE>\#THIS\_THROTTLE\_CUT\#</THROTTLE\#THROTTLE\_INDEX\#\_IDLE> <TOGGLE\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST>\#IS\_REVERSE\_THRUST\_ENABLED\# ! \#SET\_REVERSE\_THRUST\_ENABLED\# \#THIS\_THROTTLE\_RESET\_IN\_RANGE\#</TOGGLE\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST> <SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_ON>1 \#SET\_REVERSE\_THRUST\_ENABLED\# \#THIS\_THROTTLE\_RESET\_IN\_RANGE\#</SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_ON> <SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_OFF>0 \#SET\_REVERSE\_THRUST\_ENABLED\# \#THIS\_THROTTLE\_RESET\_IN\_RANGE\#</SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_OFF> </SaveParameters> <Condition CheckSavedParameters="Input\_Detents"> <Condition Valid="USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK"> <UseParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Key\_Events\_To\_Intercepts"> <GET\_THROTTLE\_POSITION>\#GET\_POSITION\_PCT\_OVER\_100\#</GET\_THROTTLE\_POSITION> <THROTTLE\_INCR\_IN\_RANGE\_VALUE>\#INCREMENT\_THIS\_THROTTLE\#</THROTTLE\_INCR\_IN\_RANGE\_VALUE> <THROTTLE\_DECR\_IN\_RANGE\_VALUE>\#DECREMENT\_THIS\_THROTTLE\#</THROTTLE\_DECR\_IN\_RANGE\_VALUE> <THROTTLE\_SET\_TO\_L0>l0 (>B:\#THROTTLE\_NAME\#\_SET)</THROTTLE\_SET\_TO\_L0> <!-- By default overrides FS2020 key events as we removed specific key events created for this purpose for retrocompatibility reasons.. --> <EV\_RANGE\_INC\_THROTTLE>THROTTLE\#THROTTLE\_INDEX\#\_INCR</EV\_RANGE\_INC\_THROTTLE><!-- THROTTLE\#THROTTLE\_INDEX\#\_RANGE\_INCR --> <EV\_RANGE\_DEC\_THROTTLE>THROTTLE\#THROTTLE\_INDEX\#\_DECR</EV\_RANGE\_DEC\_THROTTLE><!-- THROTTLE\#THROTTLE\_INDEX\#\_RANGE\_DECR --> <EV\_RANGE\_NEXT\_DETENT>THROTTLE\#THROTTLE\_INDEX\#\_FULL</EV\_RANGE\_NEXT\_DETENT><!-- THROTTLE\#THROTTLE\_INDEX\#\_DETENT\_NEXT --> <EV\_RANGE\_PREV\_DETENT>THROTTLE\#THROTTLE\_INDEX\#\_CUT</EV\_RANGE\_PREV\_DETENT><!-- THROTTLE\#THROTTLE\_INDEX\#\_DETENT\_PREV --> </UseParametersFn> </Condition> </Condition> </Do> <Then> <SaveParameters ID="Throttle\_Key\_Events\_To\_Intercept" Append="Override"> <THROTTLE\_INCR>\#ALL\_THROTTLE\_INCR\#</THROTTLE\_INCR> <THROTTLE\_DECR>\#ALL\_THROTTLE\_DECR\#</THROTTLE\_DECR> <THROTTLE\_CUT>\#ALL\_THROTTLE\_CUT\#</THROTTLE\_CUT> <THROTTLE\_IDLE>\#ALL\_THROTTLE\_CUT\#</THROTTLE\_IDLE> <THROTTLE\_FULL>\#ALL\_THROTTLE\_FULL\#</THROTTLE\_FULL> <THROTTLE\_SET>\#ALL\_THROTTLE\_SET\#</THROTTLE\_SET> <THROTTLE\_AXIS\_SET\_EX1>\#ALL\_THROTTLE\_AXIS\_SET\#</THROTTLE\_AXIS\_SET\_EX1> <THROTTLE\_REVERSE\_THRUST\_TOGGLE>(A:GENERAL ENG REVERSE THRUST ENGAGED:1, Bool) ! \#SET\_ALL\_REVERSE\_THRUST\_ENABLED\# \#ALL\_THROTTLE\_RESET\_IN\_RANGE\#</THROTTLE\_REVERSE\_THRUST\_TOGGLE> <THROTTLE\_REVERSE\_THRUST\_HOLD>p1 \#SET\_ALL\_REVERSE\_THRUST\_ENABLED\# \#ALL\_THROTTLE\_RESET\_IN\_RANGE\#</THROTTLE\_REVERSE\_THRUST\_HOLD> <SET\_THROTTLE\_REVERSE\_THRUST\_ON>1 \#SET\_ALL\_REVERSE\_THRUST\_ENABLED\# \#ALL\_THROTTLE\_RESET\_IN\_RANGE\#</SET\_THROTTLE\_REVERSE\_THRUST\_ON> <SET\_THROTTLE\_REVERSE\_THRUST\_OFF>0 \#SET\_ALL\_REVERSE\_THRUST\_ENABLED\# \#ALL\_THROTTLE\_RESET\_IN\_RANGE\#</SET\_THROTTLE\_REVERSE\_THRUST\_OFF> </SaveParameters> <Condition CheckSavedParameters="Input\_Detents"> <ALL\_THROTTLE\_SET\_TO\_L0>\#ALL\_THROTTLE\_SET\_TO\_L0\#</ALL\_THROTTLE\_SET\_TO\_L0> <ALL\_THROTTLE\_INCR\_IN\_RANGE>\#ALL\_THROTTLE\_INCR\_IN\_RANGE\#</ALL\_THROTTLE\_INCR\_IN\_RANGE> <ALL\_THROTTLE\_DECR\_IN\_RANGE>\#ALL\_THROTTLE\_DECR\_IN\_RANGE\#</ALL\_THROTTLE\_DECR\_IN\_RANGE> <GET\_1ST\_THROTTLE\_POSITION>\#GET\_1ST\_THROTTLE\_POSITION\#</GET\_1ST\_THROTTLE\_POSITION> </Condition> </Then> </Loop> </Parameters> <Condition CheckSavedParameters="Input\_Detents"> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Key\_Events\_To\_Intercepts"> <GET\_THROTTLE\_POSITION>\#GET\_1ST\_THROTTLE\_POSITION\#</GET\_THROTTLE\_POSITION> <THROTTLE\_INCR\_IN\_RANGE>\#ALL\_THROTTLE\_INCR\_IN\_RANGE\#</THROTTLE\_INCR\_IN\_RANGE> <THROTTLE\_DECR\_IN\_RANGE>\#ALL\_THROTTLE\_DECR\_IN\_RANGE\#</THROTTLE\_DECR\_IN\_RANGE> <THROTTLE\_SET\_TO\_L0>\#ALL\_THROTTLE\_SET\_TO\_L0\#</THROTTLE\_SET\_TO\_L0> <THROTTLE\_NAME>ALL\_THROTTLES</THROTTLE\_NAME> <IS\_ALLOWED\_TO\_RESET\_BOUNDS>False</IS\_ALLOWED\_TO\_RESET\_BOUNDS> <!-- By default overrides FS2020 key events as we removed specific key events created for this purpose for retrocompatibility reasons.. --> <EV\_RANGE\_INC\_THROTTLE>THROTTLE\_INCR</EV\_RANGE\_INC\_THROTTLE><!-- THROTTLE\_RANGE\_INCR --> <EV\_RANGE\_DEC\_THROTTLE>THROTTLE\_DECR</EV\_RANGE\_DEC\_THROTTLE><!-- THROTTLE\_RANGE\_DECR --> <EV\_RANGE\_NEXT\_DETENT>THROTTLE\_FULL</EV\_RANGE\_NEXT\_DETENT><!-- THROTTLE\_DETENT\_NEXT --> <EV\_RANGE\_PREV\_DETENT>THROTTLE\_CUT</EV\_RANGE\_PREV\_DETENT><!-- THROTTLE\_DETENT\_PREV --> </UseParametersFn> </Parameters> </Condition> <ReturnParameters> <LoadParameters ID="Throttle\_Key\_Events\_To\_Intercept"/> <RemoveSavedParameters ID="Throttle\_Key\_Events\_To\_Intercept"/> </ReturnParameters> </ParametersFn> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> </ModelBehaviors>     ### Templates Template list 1. [ASOBO\_GT\_Helper\_Recursive\_Param\_Builder](#ASOBO_GT_Helper_Recursive_Param_Builder) 2. [ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2](#ASOBO_GT_Helper_Recursive_Param_Builder_2) 3. [ASOBO\_GT\_Helper\_Param\_Builder\_INC](#ASOBO_GT_Helper_Param_Builder_INC) 4. [ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1](#ASOBO_GT_Helper_Param_Builder_INC_1) 5. [ASOBO\_GT\_Helper\_Increasing\_ID](#ASOBO_GT_Helper_Increasing_ID) 6. [ASOBO\_GT\_Helper\_Increasing\_ID\_2](#ASOBO_GT_Helper_Increasing_ID_2) 7. [ASOBO\_GT\_Helper\_Recursive\_ID](#ASOBO_GT_Helper_Recursive_ID) 8. [ASOBO\_GT\_Helper\_Recursive\_ID\_2](#ASOBO_GT_Helper_Recursive_ID_2) 9. [ASOBO\_GT\_Helper\_Suffix\_ID\_Appender](#ASOBO_GT_Helper_Suffix_ID_Appender) 10. [ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code](#ASOBO_GT_Helper_Non_Linear_Animation_Code) 11. [ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2](#ASOBO_GT_Helper_Non_Linear_Animation_Code_2) 12. [ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_3](#ASOBO_GT_Helper_Non_Linear_Animation_Code_3) 13. [ASOBO\_GT\_Procedure\_Template](#ASOBO_GT_Procedure_Template) 14. [ASOBO\_Intercept\_Key\_Events\_Template](#ASOBO_Intercept_Key_Events_Template) 15. [ASOBO\_Process\_Saved\_Updates\_Template](#ASOBO_Process_Saved_Updates_Template) 16. [ASOBO\_Process\_Saved\_Elements\_Template](#ASOBO_Process_Saved_Elements_Template) - #### ASOBO\_GT\_Helper\_Recursive\_Param\_Builder Definition from XML <Template Name="ASOBO\_GT\_Helper\_Recursive\_Param\_Builder"> <DefaultTemplateParameters> <PARAM\_REPEATED\_START/> <PARAM\_REPEATED\_END/> <PARAM\_START/> <PARAM\_END/> <ID>1</ID> </DefaultTemplateParameters> <OverrideTemplateParameters> <PARAM\_TO\_BUILD/> <NEXT\_ID>2</NEXT\_ID> </OverrideTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2"/> </Template> Parameters initialization: - Default Parameters set: - PARAM\_REPEATED\_START - PARAM\_REPEATED\_END - PARAM\_START - PARAM\_END - ID - Override Parameters set: - PARAM\_TO\_BUILD - NEXT\_ID   Templates used: - [ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2](helpers/#ASOBO_GT_Helper_Recursive_Param_Builder_2) - May include a subtemplate using the parameter 'EXIT\_TEMPLATE' (Values it may resolve to were not found) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2 Definition from XML <Template Name="ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2"> <DefaultTemplateParameters> <PARAM\_REPEATED\_2\_START/> <PARAM\_REPEATED\_2\_END/> </DefaultTemplateParameters> <OverrideTemplateParameters> <Condition> <Test> <Or> <Arg NotEmpty="PARAM\_REPEATED\_2\_START"/> <Arg NotEmpty="PARAM\_REPEATED\_2\_END"/> </Or> </Test> <True> <PARAM\_TO\_BUILD>\#PARAM\_TO\_BUILD\#\#PARAM\_REPEATED\_START\#\#ID\#\#PARAM\_REPEATED\_END\#\#PARAM\_REPEATED\_2\_START\#\#ID\#\#PARAM\_REPEATED\_2\_END\#</PARAM\_TO\_BUILD> </True> <False> <PARAM\_TO\_BUILD>\#PARAM\_TO\_BUILD\#\#PARAM\_REPEATED\_START\#\#ID\#\#PARAM\_REPEATED\_END\#</PARAM\_TO\_BUILD> </False> </Condition> <TEST\_ID Process="Param">ID\#NEXT\_ID\#</TEST\_ID> </OverrideTemplateParameters> <Condition NotEmpty="TEST\_ID"> <True> <UseTemplate Name="ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2"> <ID>\#TEST\_ID\#</ID> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 +</NEXT\_ID> </UseTemplate> </True> <False> <UseTemplate Name="\#EXIT\_TEMPLATE\#"> <\#PARAM\_NAME\#>\#PARAM\_START\#\#PARAM\_TO\_BUILD\#\#PARAM\_END\#</\#PARAM\_NAME\#> </UseTemplate> </False> </Condition> </Template> Parameters initialization: - Default Parameters set: - PARAM\_REPEATED\_2\_START - PARAM\_REPEATED\_2\_END - Override Parameters set: - TEST\_ID (using NEXT\_ID) Condition: Test(PARAM\_REPEATED\_2\_START, PARAM\_REPEATED\_2\_END) - Case: True Parameters set: - PARAM\_TO\_BUILD (using PARAM\_TO\_BUILD, PARAM\_REPEATED\_START, ID, PARAM\_REPEATED\_END, PARAM\_REPEATED\_2\_START, PARAM\_REPEATED\_2\_END) - Case: False Parameters set: - PARAM\_TO\_BUILD (using PARAM\_TO\_BUILD, PARAM\_REPEATED\_START, ID, PARAM\_REPEATED\_END) Condition: NotEmpty(TEST\_ID) - Case: True   Templates used: - [ASOBO\_GT\_Helper\_Recursive\_Param\_Builder\_2](helpers/#ASOBO_GT_Helper_Recursive_Param_Builder_2) - May include a subtemplate using the parameter 'EXIT\_TEMPLATE' (Values it may resolve to were not found) Parameters set: - ID (using TEST\_ID) - NEXT\_ID (using NEXT\_ID) - Case: False Parameters read: - EXIT\_TEMPLATE   Templates used: - \#EXIT\_TEMPLATE\# - (Values for 'EXIT\_TEMPLATE' and templates it may resolve to were not found) Parameters set: - \#PARAM\_NAME\# (using PARAM\_START, PARAM\_TO\_BUILD, PARAM\_END) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Param\_Builder\_INC Definition from XML <Template Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC"> <DefaultTemplateParameters> <CONTENT/> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1"> <PARAM\_ID>1</PARAM\_ID> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - CONTENT   Templates used: - [ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1](helpers/#ASOBO_GT_Helper_Param_Builder_INC_1) - May include a subtemplate using the parameter 'EXIT\_TEMPLATE' (Values it may resolve to were not found) Parameters set: - PARAM\_ID [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1 Definition from XML <Template Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1"> <OverrideTemplateParameters> <Condition Valid="PARAM\#PARAM\_ID\#"> <Condition Valid="PROCESS\_PARAM\#PARAM\_ID\#"> <PROCESS\_PARAM>True</PROCESS\_PARAM> </Condition> <PARAM\_NAME Process="Param">PARAM\#PARAM\_ID\#</PARAM\_NAME> <Condition Valid="PARAM\#PARAM\_ID\#\_PREFIX"> <True> <PREFIX Process="Param">PARAM\#PARAM\_ID\#\_PREFIX</PREFIX> </True> <False> <PREFIX/> </False> </Condition> <Condition Valid="PARAM\#PARAM\_ID\#\_SUFFIX"> <True> <SUFFIX Process="Param">PARAM\#PARAM\_ID\#\_SUFFIX</SUFFIX> </True> <False> <SUFFIX/> </False> </Condition> </Condition> </OverrideTemplateParameters> <Switch> <Case Valid="PARAM\#PARAM\_ID\#"> <UseTemplate Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1"> <PARAM\_ID Process="Int">\#PARAM\_ID\# 1 +</PARAM\_ID> <Condition Valid="PROCESS\_PARAM"> <True> <Condition NotEmpty="\#PREFIX\#\#CONTENT\#\#SUFFIX\#"> <\#PARAM\_NAME\# Process="Param">\#PREFIX\#\#CONTENT\#\#SUFFIX\#</\#PARAM\_NAME\#> <PROCESS\_PARAM>False</PROCESS\_PARAM> </Condition> </True> <False> <\#PARAM\_NAME\#>\#PREFIX\#\#CONTENT\#\#SUFFIX\#</\#PARAM\_NAME\#> </False> </Condition> </UseTemplate> </Case> <Default> <UseTemplate Name="\#EXIT\_TEMPLATE\#"/> </Default> </Switch> </Template> Parameters initialization: - Override Condition: Valid(PARAM\#PARAM\_ID\#) - Case: True Parameters set: - PARAM\_NAME (using PARAM\_ID) Condition: Valid(PROCESS\_PARAM\#PARAM\_ID\#) - Case: True Parameters set: - PROCESS\_PARAM Condition: Valid(PARAM\#PARAM\_ID\#\_PREFIX) - Case: True Parameters set: - PREFIX (using PARAM\_ID) - Case: False Parameters set: - PREFIX Condition: Valid(PARAM\#PARAM\_ID\#\_SUFFIX) - Case: True Parameters set: - SUFFIX (using PARAM\_ID) - Case: False Parameters set: - SUFFIX Condition: Switch - Case: Valid(PARAM\#PARAM\_ID\#) Parameters read: - PARAM\_ID   Templates used: - [ASOBO\_GT\_Helper\_Param\_Builder\_INC\_1](helpers/#ASOBO_GT_Helper_Param_Builder_INC_1) - May include a subtemplate using the parameter 'EXIT\_TEMPLATE' (Values it may resolve to were not found) Parameters set: - PARAM\_ID (using PARAM\_ID) Condition: Valid(PROCESS\_PARAM) - Case: True Condition: NotEmpty(\#PREFIX\#\#CONTENT\#\#SUFFIX\#) - Case: True Parameters set: - \#PARAM\_NAME\# (using PREFIX, CONTENT, SUFFIX) - PROCESS\_PARAM - Case: False Parameters set: - \#PARAM\_NAME\# (using PREFIX, CONTENT, SUFFIX) - Default case: Parameters read: - EXIT\_TEMPLATE   Templates used: - \#EXIT\_TEMPLATE\# - (Values for 'EXIT\_TEMPLATE' and templates it may resolve to were not found) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Increasing\_ID Definition from XML <Template Name="ASOBO\_GT\_Helper\_Increasing\_ID"> <DefaultTemplateParameters> <FIRST\_ID>1</FIRST\_ID> <MAX\_ID>1</MAX\_ID> <PARAM>BTN\_ID</PARAM> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Increasing\_ID\_2"> <NEXT\_ID>\#FIRST\_ID\#</NEXT\_ID> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - FIRST\_ID - MAX\_ID - PARAM   Templates used: - [ASOBO\_GT\_Helper\_Increasing\_ID\_2](helpers/#ASOBO_GT_Helper_Increasing_ID_2) - May include a subtemplate using the parameter 'EXIT\_TEMPLATE' (Values it may resolve to were not found) Parameters set: - NEXT\_ID (using FIRST\_ID) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Increasing\_ID\_2 Definition from XML <Template Name="ASOBO\_GT\_Helper\_Increasing\_ID\_2"> <UseTemplate Name="\#EXIT\_TEMPLATE\#"> <\#PARAM\#>\#NEXT\_ID\#</\#PARAM\#> </UseTemplate> <Condition> <Test> <Lower> <Number>\#NEXT\_ID\#</Number> <Number>\#MAX\_ID\#</Number> </Lower> </Test> <True> <UseTemplate Name="ASOBO\_GT\_Helper\_Increasing\_ID\_2"> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 +</NEXT\_ID> </UseTemplate> </True> </Condition> </Template> Parameters read: - EXIT\_TEMPLATE   Templates used: - \#EXIT\_TEMPLATE\# - (Values for 'EXIT\_TEMPLATE' and templates it may resolve to were not found) Parameters set: - \#PARAM\# (using NEXT\_ID) Condition: Test - Case: True   Templates used: - [ASOBO\_GT\_Helper\_Increasing\_ID\_2](helpers/#ASOBO_GT_Helper_Increasing_ID_2) - May include a subtemplate using the parameter 'EXIT\_TEMPLATE' (Values it may resolve to were not found) Parameters set: - NEXT\_ID (using NEXT\_ID) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Recursive\_ID Definition from XML <Template Name="ASOBO\_GT\_Helper\_Recursive\_ID"> <DefaultTemplateParameters> <FIRST\_ID>1</FIRST\_ID> <MAX\_ID>1</MAX\_ID> <PARAM1>ID</PARAM1> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Recursive\_ID\_2"> <NEXT\_ID>\#FIRST\_ID\#</NEXT\_ID> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - FIRST\_ID - MAX\_ID - PARAM1   Templates used: - [ASOBO\_GT\_Helper\_Recursive\_ID\_2](helpers/#ASOBO_GT_Helper_Recursive_ID_2) Parameters set: - NEXT\_ID (using FIRST\_ID) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Recursive\_ID\_2 Definition from XML <Template Name="ASOBO\_GT\_Helper\_Recursive\_ID\_2"> <UseTemplate Name="ASOBO\_GT\_Helper\_Param\_Builder\_INC"> <CONTENT>\#NEXT\_ID\#</CONTENT> </UseTemplate> <Condition> <Test> <Lower> <Number>\#NEXT\_ID\#</Number> <Number>\#MAX\_ID\#</Number> </Lower> </Test> <True> <UseTemplate Name="ASOBO\_GT\_Helper\_Recursive\_ID\_2"> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 +</NEXT\_ID> </UseTemplate> </True> </Condition> </Template>   Templates used: - [ASOBO\_GT\_Helper\_Param\_Builder\_INC](helpers/#ASOBO_GT_Helper_Param_Builder_INC) Parameters set: - CONTENT (using NEXT\_ID) Condition: Test - Case: True   Templates used: - [ASOBO\_GT\_Helper\_Recursive\_ID\_2](helpers/#ASOBO_GT_Helper_Recursive_ID_2) Parameters set: - NEXT\_ID (using NEXT\_ID) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Suffix\_ID\_Appender Definition from XML <Template Name="ASOBO\_GT\_Helper\_Suffix\_ID\_Appender"> <DefaultTemplateParameters> <Switch> <Case Valid="DONT\_APPEND\_ID"> <SUFFIX\_ID/> </Case> <Default> <Condition NotEmpty="CONTAINER\_ID"> <True> <SUFFIX\_ID>\_\#CONTAINER\_ID\#</SUFFIX\_ID> </True> <False> <SUFFIX\_ID>\_\#ID\#</SUFFIX\_ID> </False> </Condition> </Default> </Switch> </DefaultTemplateParameters> <UseTemplate Name="\#TEMPLATE\_TO\_CALL\#"/> </Template> Parameters initialization: - Default Condition: Switch - Case: Valid(DONT\_APPEND\_ID) Parameters set: - SUFFIX\_ID - Default case: Condition: NotEmpty(CONTAINER\_ID) - Case: True Parameters set: - SUFFIX\_ID (using CONTAINER\_ID) - Case: False Parameters set: - SUFFIX\_ID (using ID) Parameters read: - TEMPLATE\_TO\_CALL   Templates used: - \#TEMPLATE\_TO\_CALL\# - (Values for 'TEMPLATE\_TO\_CALL' and templates it may resolve to were not found) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code Definition from XML <Template Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code"> <DefaultTemplateParameters> <SELECTION>50</SELECTION> <ANIM\_VALUE\_0>0</ANIM\_VALUE\_0> <REF\_VALUE\_0>0</REF\_VALUE\_0> <ANIM\_VALUE\_1>100</ANIM\_VALUE\_1> <REF\_VALUE\_1>100</REF\_VALUE\_1> <ANIM\_LENGTH>100</ANIM\_LENGTH> <MAX\_POINT\_INDEX>1</MAX\_POINT\_INDEX> <MAX\_DISPLAYABLE>100</MAX\_DISPLAYABLE> <MIN\_DISPLAYABLE>0</MIN\_DISPLAYABLE> <EXIT\_TEMPLATE>ASOBO\_GT\_Anim\_Code</EXIT\_TEMPLATE> <EXIT\_PARAM\_NAME>ANIM\_CODE</EXIT\_PARAM\_NAME> <CONTENT/> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2"> <NEXT\_ID Process="Int">\#MAX\_POINT\_INDEX\#</NEXT\_ID> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - SELECTION - ANIM\_VALUE\_0 - REF\_VALUE\_0 - ANIM\_VALUE\_1 - REF\_VALUE\_1 - ANIM\_LENGTH - MAX\_POINT\_INDEX - MAX\_DISPLAYABLE - MIN\_DISPLAYABLE - EXIT\_TEMPLATE - EXIT\_PARAM\_NAME - CONTENT   Templates used: - [ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2](helpers/#ASOBO_GT_Helper_Non_Linear_Animation_Code_2) Parameters set: - NEXT\_ID (using MAX\_POINT\_INDEX) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2 Definition from XML <Template Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2"> <OverrideTemplateParameters> <ANIM\_VAL\_CURRENT\_POINT Process="Param">ANIM\_VALUE\_\#NEXT\_ID\#</ANIM\_VAL\_CURRENT\_POINT> <REF\_VAL\_CURRENT\_POINT Process="Param">REF\_VALUE\_\#NEXT\_ID\#</REF\_VAL\_CURRENT\_POINT> </OverrideTemplateParameters> <Condition> <Test> <GreaterOrEqual> <Number>\#NEXT\_ID\#</Number> <Number>0</Number> </GreaterOrEqual> </Test> <True> <Condition> <Test> <Equal> <Number>\#NEXT\_ID\#</Number> <Number>\#MAX\_POINT\_INDEX\#</Number> </Equal> </Test> <True> <UseTemplate Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2"> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 -</NEXT\_ID> <ANIM\_VAL\_PREVIOUS\_POINT Process="Param">ANIM\_VALUE\_\#NEXT\_ID\#</ANIM\_VAL\_PREVIOUS\_POINT> <REF\_VAL\_PREVIOUS\_POINT Process="Param">REF\_VALUE\_\#NEXT\_ID\#</REF\_VAL\_PREVIOUS\_POINT> </UseTemplate> </True> <False> <UseTemplate Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2"> <NEXT\_ID Process="Int">\#NEXT\_ID\# 1 -</NEXT\_ID> <CONTENT> \#CONTENT\# l0 \#REF\_VAL\_CURRENT\_POINT\# > if{ l0 \#REF\_VAL\_CURRENT\_POINT\# - \#REF\_VAL\_PREVIOUS\_POINT\# \#REF\_VAL\_CURRENT\_POINT\# - / \#ANIM\_VAL\_PREVIOUS\_POINT\# \#ANIM\_VAL\_CURRENT\_POINT\# - \* \#ANIM\_VAL\_CURRENT\_POINT\# + sp1 g1 } </CONTENT> <ANIM\_VAL\_PREVIOUS\_POINT Process="Param">ANIM\_VALUE\_\#NEXT\_ID\#</ANIM\_VAL\_PREVIOUS\_POINT> <REF\_VAL\_PREVIOUS\_POINT Process="Param">REF\_VALUE\_\#NEXT\_ID\#</REF\_VAL\_PREVIOUS\_POINT> </UseTemplate> </False> </Condition> </True> <False> <UseTemplate Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_3"/> </False> </Condition> </Template> Parameters initialization: - Override Parameters set: - ANIM\_VAL\_CURRENT\_POINT (using NEXT\_ID) - REF\_VAL\_CURRENT\_POINT (using NEXT\_ID) Condition: Test - Case: True Condition: Test - Case: True   Templates used: - [ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2](helpers/#ASOBO_GT_Helper_Non_Linear_Animation_Code_2) Parameters set: - NEXT\_ID (using NEXT\_ID) - ANIM\_VAL\_PREVIOUS\_POINT (using NEXT\_ID) - REF\_VAL\_PREVIOUS\_POINT (using NEXT\_ID) - Case: False   Templates used: - [ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_2](helpers/#ASOBO_GT_Helper_Non_Linear_Animation_Code_2) Parameters set: - NEXT\_ID (using NEXT\_ID) - CONTENT (using CONTENT, REF\_VAL\_CURRENT\_POINT, REF\_VAL\_PREVIOUS\_POINT, ANIM\_VAL\_PREVIOUS\_POINT, ANIM\_VAL\_CURRENT\_POINT) - ANIM\_VAL\_PREVIOUS\_POINT (using NEXT\_ID) - REF\_VAL\_PREVIOUS\_POINT (using NEXT\_ID) - Case: False   Templates used: - [ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_3](helpers/#ASOBO_GT_Helper_Non_Linear_Animation_Code_3) - May include a subtemplate using the parameter 'EXIT\_TEMPLATE' (Values it may resolve to were not found) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_3 Definition from XML <Template Name="ASOBO\_GT\_Helper\_Non\_Linear\_Animation\_Code\_3"> <UseTemplate Name="\#EXIT\_TEMPLATE\#"> <\#EXIT\_PARAM\_NAME\#> \#SELECTION\# \#MAX\_DISPLAYABLE\# min \#MIN\_DISPLAYABLE\# max sp0 \#CONTENT\# :1 l1 </\#EXIT\_PARAM\_NAME\#> </UseTemplate> </Template> Parameters read: - EXIT\_TEMPLATE   Templates used: - \#EXIT\_TEMPLATE\# - (Values for 'EXIT\_TEMPLATE' and templates it may resolve to were not found) Parameters set: - \#EXIT\_PARAM\_NAME\# (using SELECTION, MAX\_DISPLAYABLE, MIN\_DISPLAYABLE, CONTENT) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Procedure\_Template Definition from XML <Template Name="ASOBO\_GT\_Procedure\_Template"> <Parameters Type="Default"> <VALUE\_UNITS/> <VALUE\_CODE/> <INIT\_CODE/> <INC\_CODE/> <DEC\_CODE/> <SET\_CODE/> </Parameters> <UseInputEvent ID="ASOBO\_GIE\_Base"> <INPUT\_EVENT\_ID\_SOURCE>PROCEDURE</INPUT\_EVENT\_ID\_SOURCE> <IE\_NAME>\#IE\_NAME\#</IE\_NAME> <TT\_INOP>True</TT\_INOP> <TT\_ICON/> <TT\_INTERACTION/> <TT\_INTERACTION\_LOCKABLE/> <TT\_DESCRIPTION/> <TT\_DESCRIPTION\_IS\_DYNAMIC>False</TT\_DESCRIPTION\_IS\_DYNAMIC> <TT\_VALUE/> <TT\_VALUE\_IS\_DYNAMIC>False</TT\_VALUE\_IS\_DYNAMIC> <Loop> <Setup> <Value>SIMVAR\_TO\_WATCH</Value> <Parameters> <LoadParameters ID="Simvars\_To\_Watch"/> <RemoveSavedParameters ID="Simvars\_To\_Watch"/> </Parameters> </Setup> <Do> <Parameters Type="Override" Lifetime="Loop"> <Condition Check="ID"> <True> <ID Process="Int">\#ID\# 1 +</ID> </True> <False> <ID>0</ID> </False> </Condition> </Parameters> <SIMVAR\_TO\_WATCH\_\#ID\#>\#SIMVAR\_TO\_WATCH\#</SIMVAR\_TO\_WATCH\_\#ID\#> </Do> </Loop> <Loop> <Setup> <Value>LOCAL\_VAR\_TO\_WATCH</Value> <Parameters> <LoadParameters ID="LocalVars\_To\_Watch"/> <RemoveSavedParameters ID="LocalVars\_To\_Watch"/> </Parameters> </Setup> <Do> <Parameters Type="Override" Lifetime="Loop"> <Condition Check="ID"> <True> <ID Process="Int">\#ID\# 1 +</ID> </True> <False> <ID>0</ID> </False> </Condition> </Parameters> <LOCAL\_VAR\_TO\_WATCH\_\#ID\#>\#LOCAL\_VAR\_TO\_WATCH\#</LOCAL\_VAR\_TO\_WATCH\_\#ID\#> </Do> </Loop> </UseInputEvent> <UseTemplate Name="ASOBO\_Process\_Saved\_Updates\_Template"/> </Template> Parameters initialization: - Default Parameters set: - VALUE\_UNITS - VALUE\_CODE - INIT\_CODE - INC\_CODE - DEC\_CODE - SET\_CODE Parameters read: - SIMVAR\_TO\_WATCH - LOCAL\_VAR\_TO\_WATCH Parameters set: - INPUT\_EVENT\_ID\_SOURCE - IE\_NAME (using IE\_NAME) - TT\_INOP - TT\_ICON - TT\_INTERACTION - TT\_INTERACTION\_LOCKABLE - TT\_DESCRIPTION - TT\_DESCRIPTION\_IS\_DYNAMIC - TT\_VALUE - TT\_VALUE\_IS\_DYNAMIC - SIMVAR\_TO\_WATCH\_\#ID\# (using SIMVAR\_TO\_WATCH) - LOCAL\_VAR\_TO\_WATCH\_\#ID\# (using LOCAL\_VAR\_TO\_WATCH)   Templates used: - [ASOBO\_Process\_Saved\_Updates\_Template](helpers/#ASOBO_Process_Saved_Updates_Template) Condition: Check(ID) - Case: True Parameters set: - ID (using ID) - Case: False Parameters set: - ID Condition: Check(ID) - Case: True Parameters set: - ID (using ID) - Case: False Parameters set: - ID [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_Intercept\_Key\_Events\_Template Definition from XML <Template Name="ASOBO\_Intercept\_Key\_Events\_Template"> <Parameters Type="Override"> <Condition CheckSavedParameters="GET\_KEY\_EVENTS\_TO\_INTERCEPT"> <Loop> <Setup> <Param>PFN\_GET\_KEY\_EVENTS\_TO\_INTERCEPT</Param> <Parameters> <LoadParameters ID="GET\_KEY\_EVENTS\_TO\_INTERCEPT"/> <RemoveSavedParameters ID="GET\_KEY\_EVENTS\_TO\_INTERCEPT"/> </Parameters> </Setup> <Do> <SaveParameters ID="Key\_Events\_To\_Intercept" Append="Override"> <UseParametersFn Name="\#PFN\_GET\_KEY\_EVENTS\_TO\_INTERCEPT\#"/> </SaveParameters> </Do> </Loop> </Condition> </Parameters> <UseTemplate Name="ASOBO\_GT\_Procedure\_Template"> <IE\_NAME>Intercept\_Key\_Events</IE\_NAME> <SET\_ARG\_COUNT>1</SET\_ARG\_COUNT> <SET\_PARAM\_0>p0</SET\_PARAM\_0> <SET\_PARAM\_0\_TYPE>Float</SET\_PARAM\_0\_TYPE> <SET\_PARAM\_0\_IS\_DYNAMIC>True</SET\_PARAM\_0\_IS\_DYNAMIC> <Loop> <Setup> <Param>EVENT\_ID</Param> <Value>EVENT\_CODE</Value> <Parameters> <LoadParameters ID="Key\_Events\_To\_Intercept"/> <RemoveSavedParameters ID="Key\_Events\_To\_Intercept"/> </Parameters> </Setup> <Do> <Parameters Type="Override" Lifetime="Loop"> <Condition Check="ID"> <True> <ID Process="Int">\#ID\# 1 +</ID> </True> <False> <ID>0</ID> </False> </Condition> </Parameters> <BINDING\_SET\_\#ID\#>\#EVENT\_ID\#</BINDING\_SET\_\#ID\#> <BINDING\_SET\_\#ID\#\_EVENT\_ID>\#EVENT\_ID\#</BINDING\_SET\_\#ID\#\_EVENT\_ID> <BINDING\_SET\_\#ID\#\_EVENT\_ID\_ONLY>True</BINDING\_SET\_\#ID\#\_EVENT\_ID\_ONLY> <BINDING\_SET\_\#ID\#\_PARAM\_0>\#EVENT\_CODE\#</BINDING\_SET\_\#ID\#\_PARAM\_0> <BINDING\_SET\_\#ID\#\_PARAM\_0\_IS\_DYNAMIC>True</BINDING\_SET\_\#ID\#\_PARAM\_0\_IS\_DYNAMIC> </Do> </Loop> </UseTemplate> </Template> Parameters initialization: - Override Condition: CheckSavedParameters(GET\_KEY\_EVENTS\_TO\_INTERCEPT) - Case: True Parameters read: - PFN\_GET\_KEY\_EVENTS\_TO\_INTERCEPT Parameters set: - PFN\_GET\_KEY\_EVENTS\_TO\_INTERCEPT ParametersFn used: - \#PFN\_GET\_KEY\_EVENTS\_TO\_INTERCEPT\#   Templates used: - [ASOBO\_GT\_Procedure\_Template](helpers/#ASOBO_GT_Procedure_Template) Parameters read: - EVENT\_CODE Parameters set: - IE\_NAME - SET\_ARG\_COUNT - SET\_PARAM\_0 - SET\_PARAM\_0\_TYPE - SET\_PARAM\_0\_IS\_DYNAMIC - EVENT\_ID - BINDING\_SET\_\#ID\# (using EVENT\_ID) - BINDING\_SET\_\#ID\#\_EVENT\_ID (using EVENT\_ID) - BINDING\_SET\_\#ID\#\_EVENT\_ID\_ONLY - BINDING\_SET\_\#ID\#\_PARAM\_0 (using EVENT\_CODE) - BINDING\_SET\_\#ID\#\_PARAM\_0\_IS\_DYNAMIC Condition: Check(ID) - Case: True Parameters set: - ID (using ID) - Case: False Parameters set: - ID [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_Process\_Saved\_Updates\_Template Definition from XML <Template Name="ASOBO\_Process\_Saved\_Updates\_Template"> <Parameters Type="Override"> <Condition Check="ELEMENT\_TYPE\_NAME"> <GET\_SAVED\_ELEMENT\_PREFIX>Saved\_\#ELEMENT\_TYPE\_NAME\#\_Update</GET\_SAVED\_ELEMENT\_PREFIX> <GET\_SAVED\_INCREMENT\_TO>Saved\_\#ELEMENT\_TYPE\_NAME\#\_Update\_Parameters</GET\_SAVED\_INCREMENT\_TO> </Condition> </Parameters> <UseTemplate Name="ASOBO\_Process\_Saved\_Elements\_Template"> <ELEMENT\_TYPE\_NAME>Update</ELEMENT\_TYPE\_NAME> </UseTemplate> </Template> Parameters initialization: - Override Condition: Check(ELEMENT\_TYPE\_NAME) - Case: True Parameters set: - GET\_SAVED\_ELEMENT\_PREFIX (using ELEMENT\_TYPE\_NAME) - GET\_SAVED\_INCREMENT\_TO (using ELEMENT\_TYPE\_NAME)   Templates used: - [ASOBO\_Process\_Saved\_Elements\_Template](helpers/#ASOBO_Process_Saved_Elements_Template) - May include a subtemplate using the parameter 'TEMPLATE\_TO\_USE' and resolve to the following template(s): - \#ELEMENT\_TYPE\_NAME\_UC\#\_TEMPLATE Parameters set: - ELEMENT\_TYPE\_NAME [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_Process\_Saved\_Elements\_Template Definition from XML <Template Name="ASOBO\_Process\_Saved\_Elements\_Template"> <Parameters Type="Default"> <GET\_SAVED\_ELEMENT\_PREFIX>Saved\_\#ELEMENT\_TYPE\_NAME\#</GET\_SAVED\_ELEMENT\_PREFIX> <GET\_SAVED\_INCREMENT\_TO>Saved\_\#ELEMENT\_TYPE\_NAME\#\_Parameters</GET\_SAVED\_INCREMENT\_TO> </Parameters> <Parameters Type="Override"> <Condition CheckSavedParameters="\#GET\_SAVED\_INCREMENT\_TO\#"> <UseParametersFn Name="ASOBO\_Load\_Then\_Remove\_Parameters\_Helper"> <SAVED\_PARAMETERS>GET\_SAVED\_INCREMENT\_TO</SAVED\_PARAMETERS> </UseParametersFn> <ELEMENT\_TYPE\_NAME\_UC Process="String">'\#ELEMENT\_TYPE\_NAME\#' uc</ELEMENT\_TYPE\_NAME\_UC> <\_\_PROCESS\_ELEMENTS\_\_>True</\_\_PROCESS\_ELEMENTS\_\_> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="\_\_PROCESS\_ELEMENTS\_\_"> <LAST\_ID\_USED Process="Param">\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED</LAST\_ID\_USED> </Condition> </Parameters> <Condition Valid="\_\_PROCESS\_ELEMENTS\_\_"> <Loop> <Setup> <Param>ELEMENT\_ID</Param> <From>0</From> <Inc>1</Inc> <To>\#LAST\_ID\_USED\#</To> </Setup> <Do> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Load\_Then\_Remove\_Parameters\_Helper"> <PLOAD\_\#ELEMENT\_TYPE\_NAME\_UC\#\_PARAMETERS>\#GET\_SAVED\_ELEMENT\_PREFIX\#\_\#ELEMENT\_ID\#</PLOAD\_\#ELEMENT\_TYPE\_NAME\_UC\#\_PARAMETERS> <SAVED\_PARAMETERS>PLOAD\_\#ELEMENT\_TYPE\_NAME\_UC\#\_PARAMETERS</SAVED\_PARAMETERS> </UseParametersFn> <\#ELEMENT\_TYPE\_NAME\_UC\#\_ID>\#ELEMENT\_ID\#</\#ELEMENT\_TYPE\_NAME\_UC\#\_ID> </Parameters> <Parameters Type="Override"> <TEMPLATE\_TO\_USE Process="Param">\#ELEMENT\_TYPE\_NAME\_UC\#\_TEMPLATE</TEMPLATE\_TO\_USE> </Parameters> <UseTemplate Name="\#TEMPLATE\_TO\_USE\#"/> </Do> </Loop> </Condition> </Template> Parameters initialization: - Default Parameters set: - GET\_SAVED\_ELEMENT\_PREFIX (using ELEMENT\_TYPE\_NAME) - GET\_SAVED\_INCREMENT\_TO (using ELEMENT\_TYPE\_NAME) - Override Condition: CheckSavedParameters(\#GET\_SAVED\_INCREMENT\_TO\#) - Case: True Parameters set: - ELEMENT\_TYPE\_NAME\_UC (using ELEMENT\_TYPE\_NAME) - \_\_PROCESS\_ELEMENTS\_\_ ParametersFn used: - [ASOBO\_Load\_Then\_Remove\_Parameters\_Helper](helpers/#ASOBO_Load_Then_Remove_Parameters_Helper) Parameters set: - SAVED\_PARAMETERS - Override Condition: Valid(\_\_PROCESS\_ELEMENTS\_\_) - Case: True Parameters set: - LAST\_ID\_USED (using ELEMENT\_TYPE\_NAME\_UC) Condition: Valid(\_\_PROCESS\_ELEMENTS\_\_) - Case: True Parameters read: - LAST\_ID\_USED - TEMPLATE\_TO\_USE Parameters set: - ELEMENT\_ID - \#ELEMENT\_TYPE\_NAME\_UC\#\_ID (using ELEMENT\_ID) - TEMPLATE\_TO\_USE (using ELEMENT\_TYPE\_NAME\_UC)   Templates used: - \#TEMPLATE\_TO\_USE\# - May resolve to the following template(s): - \#ELEMENT\_TYPE\_NAME\_UC\#\_TEMPLATE ParametersFn used: - [ASOBO\_Load\_Then\_Remove\_Parameters\_Helper](helpers/#ASOBO_Load_Then_Remove_Parameters_Helper) Parameters set: - PLOAD\_\#ELEMENT\_TYPE\_NAME\_UC\#\_PARAMETERS (using GET\_SAVED\_ELEMENT\_PREFIX, ELEMENT\_ID) - SAVED\_PARAMETERS (using ELEMENT\_TYPE\_NAME\_UC) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) ### ParametersFn - #### Get\_Max\_Param\_Iteration Definition from XML <ParametersFn Name="Get\_Max\_Param\_Iteration"> <Parameters Type="Default"> <MAX\_VALUE>-1</MAX\_VALUE> <PARAM\_PREFIX/> <PARAM\_SUFFIX/> <MAX\_ITERATION>0</MAX\_ITERATION> <OUTGOING\_PARAM>OUT\_VALUE</OUTGOING\_PARAM> </Parameters> <Parameters Type="Override"> <Loop> <Setup> <Param>CUR\_ID</Param> <From>1</From> <Inc>1</Inc> <While> <Not> <Arg Valid="INFINITE"/> </Not> </While> </Setup> <Do> <SaveParameters ID="Prop\_\#ID\#\_FoundValue"> <FOUND\_VALUE>False</FOUND\_VALUE> <MAX\_ITERATION>\#MAX\_ITERATION\#</MAX\_ITERATION> </SaveParameters> <Parameters Type="Override" Lifetime="Loop"> <Loop> <Setup> <Param>CUR\_PARAM\_ID</Param> <From>0</From> <Inc>1</Inc> <While> <Or> <Arg NotEmpty="PARAM\_PREFIX\_\#CUR\_PARAM\_ID\#"/> <Arg NotEmpty="PARAM\_SUFIX\_\#CUR\_PARAM\_ID\#"/> </Or> </While> </Setup> <Do> <Parameters Type="Override" Lifetime="Iteration"> <PARAM\_PREFIX Process="Param">PARAM\_PREFIX\_\#CUR\_PARAM\_ID\#</PARAM\_PREFIX> <PARAM\_SUFIX Process="Param">PARAM\_SUFIX\_\#CUR\_PARAM\_ID\#</PARAM\_SUFIX> </Parameters> <Parameters Type="Override" Lifetime="Iteration"> <PARAM\_FINAL Process="Param">\#PARAM\_PREFIX\#\#CUR\_ID\#\#PARAM\_SUFFIX\#</PARAM\_FINAL> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <Condition NotEmpty="PARAM\_FINAL"> <SaveParameters ID="Prop\_\#ID\#\_FoundValue"> <FOUND\_VALUE>True</FOUND\_VALUE> <MAX\_ITERATION Process="Int">\#MAX\_ITERATION\# \#CUR\_ID\# max</MAX\_ITERATION> </SaveParameters> </Condition> </Parameters> </Do> </Loop> <LoadParameters ID="Prop\_\#ID\#\_FoundValue"/> <Condition Valid="FOUND\_VALUE"> <False> <Break/> </False> </Condition> </Parameters> </Do> </Loop> <LoadParameters ID="Prop\_\#ID\#\_FoundValue"/> </Parameters> <ReturnParameters> <\#OUTGOING\_PARAM\# Process="Int">\#MAX\_ITERATION\#</\#OUTGOING\_PARAM\#> </ReturnParameters> </ParametersFn> Parameters initialization: - Default Parameters set: - MAX\_VALUE - PARAM\_PREFIX - PARAM\_SUFFIX - MAX\_ITERATION - OUTGOING\_PARAM - Override Parameters read: - ID - CUR\_PARAM\_ID Parameters set: - CUR\_ID - FOUND\_VALUE - MAX\_ITERATION (using MAX\_ITERATION) - CUR\_PARAM\_ID - PARAM\_PREFIX (using CUR\_PARAM\_ID) - PARAM\_SUFIX (using CUR\_PARAM\_ID) - PARAM\_FINAL (using PARAM\_PREFIX, CUR\_ID, PARAM\_SUFFIX) Condition: NotEmpty(PARAM\_FINAL) - Case: True Parameters read: - ID Parameters set: - FOUND\_VALUE - MAX\_ITERATION (using MAX\_ITERATION, CUR\_ID) Condition: Valid(FOUND\_VALUE) - Case: False Return parameters: Parameters set: - \#OUTGOING\_PARAM\# (using MAX\_ITERATION) - #### ASOBO\_Append\_If\_Necessary\_Helper Definition from XML <ParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <Parameters Type="Default"> <OUT\_PARAM\_NAME>\#PARAM\#</OUT\_PARAM\_NAME> </Parameters> <Parameters Type="Override"> <PARAM\_CONTENT Process="Param">\#PARAM\#</PARAM\_CONTENT> <PREV\_CONTENT Process="Param">\#OUT\_PARAM\_NAME\#</PREV\_CONTENT> </Parameters> <ReturnParameters> <Condition NotEmpty="PARAM\_CONTENT"> <Condition NotEmpty="PREV\_CONTENT"> <True> <Switch> <Case Valid="APPEND\_BEFORE"> <\#OUT\_PARAM\_NAME\#>\#PARAM\_CONTENT\# \#PREV\_CONTENT\#</\#OUT\_PARAM\_NAME\#> </Case> <Default> <\#OUT\_PARAM\_NAME\#>\#PREV\_CONTENT\# \#PARAM\_CONTENT\#</\#OUT\_PARAM\_NAME\#> </Default> </Switch> </True> <False> <\#OUT\_PARAM\_NAME\#>\#PARAM\_CONTENT\#</\#OUT\_PARAM\_NAME\#> </False> </Condition> </Condition> </ReturnParameters> </ParametersFn> Parameters initialization: - Default Parameters set: - OUT\_PARAM\_NAME (using PARAM) - Override Parameters set: - PARAM\_CONTENT (using PARAM) - PREV\_CONTENT (using OUT\_PARAM\_NAME) Return parameters: Condition: NotEmpty(PARAM\_CONTENT) - Case: True Condition: NotEmpty(PREV\_CONTENT) - Case: True Condition: Switch - Case: Valid(APPEND\_BEFORE) Parameters set: - \#OUT\_PARAM\_NAME\# (using PARAM\_CONTENT, PREV\_CONTENT) - Default case: Parameters set: - \#OUT\_PARAM\_NAME\# (using PREV\_CONTENT, PARAM\_CONTENT) - Case: False Parameters set: - \#OUT\_PARAM\_NAME\# (using PARAM\_CONTENT) - #### ASOBO\_Gates\_Input\_Handling Definition from XML <ParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <Parameters Type="Default"> <VAR\_UID/> <GET\_GATES>Lever\_Gates</GET\_GATES> <GET\_GATES\_CONFIG>Lever\_Gates\_Config</GET\_GATES\_CONFIG> <OUT\_PARAM\_NAME>GATE\_CLAMP\_VALUE\_CHECK</OUT\_PARAM\_NAME> <OUT\_PARAM\_IS\_AT\_GATE>IS\_AT\_ANY\_GATE\_CHECK</OUT\_PARAM\_IS\_AT\_GATE> <OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE>SET\_CAN\_BYPASS\_GATE</OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE> <INC\_HOLD\_DURATION\_TO\_BYPASS\_GATE>0.0</INC\_HOLD\_DURATION\_TO\_BYPASS\_GATE> <DEC\_HOLD\_DURATION\_TO\_BYPASS\_GATE>0.3</DEC\_HOLD\_DURATION\_TO\_BYPASS\_GATE> <IN\_RANGE\_OFFSET>0.0001</IN\_RANGE\_OFFSET> </Parameters> <Parameters Type="Override"> <LoadParameters ID="\#GET\_GATES\_CONFIG\#"/> <Condition NotEmpty="VAR\_UID"> <True> <VAR\_UID\_PREFIX>\_\#VAR\_UID\#</VAR\_UID\_PREFIX> </True> <False> <VAR\_UID\_PREFIX/> </False> </Condition> </Parameters> <ReturnParameters> <Loop> <Setup> <Value>GATE\_NAME</Value> <Parameters> <LoadParameters ID="\#GET\_GATES\#"/> </Parameters> </Setup> <Do> <Parameters Type="Override"> <GATE\_POSITION Process="Param">\#GATE\_NAME\#\_IE\_PERCENT\_SET</GATE\_POSITION> <GATE\_DIRECTION Process="Param">\#GATE\_NAME\#\_GATE\_DIRECTION</GATE\_DIRECTION> <GATE\_DEC\_HOLD\_DURATION Process="Param">\#GATE\_NAME\#\_DEC\_HOLD\_DURATION</GATE\_DEC\_HOLD\_DURATION> <GATE\_INC\_HOLD\_DURATION Process="Param">\#GATE\_NAME\#\_INC\_HOLD\_DURATION</GATE\_INC\_HOLD\_DURATION> </Parameters> <Parameters Type="Override"> <GATE\_POS\_NORMALIZED Process="Float">\#GATE\_POSITION\# 100 /</GATE\_POS\_NORMALIZED> <Condition NotEmpty="GATE\_INC\_HOLD\_DURATION"> <False> <GATE\_INC\_HOLD\_DURATION>\#INC\_HOLD\_DURATION\_TO\_BYPASS\_GATE\#</GATE\_INC\_HOLD\_DURATION> </False> </Condition> <Condition NotEmpty="GATE\_DEC\_HOLD\_DURATION"> <False> <GATE\_DEC\_HOLD\_DURATION>\#DEC\_HOLD\_DURATION\_TO\_BYPASS\_GATE\#</GATE\_DEC\_HOLD\_DURATION> </False> </Condition> </Parameters> <Parameters Type="Override"> <GATE\_POS\_NORMALIZED\_UP Process="Float">\#GATE\_POS\_NORMALIZED\# \#IN\_RANGE\_OFFSET\# +</GATE\_POS\_NORMALIZED\_UP> <GATE\_POS\_NORMALIZED\_DN Process="Float">\#GATE\_POS\_NORMALIZED\# \#IN\_RANGE\_OFFSET\# -</GATE\_POS\_NORMALIZED\_DN> </Parameters> <Parameters Type="Override"> <IS\_AT\_GATE\_CHECK>\#GATE\_POS\_NORMALIZED\_DN\# \#GATE\_POS\_NORMALIZED\_UP\# l0 rng</IS\_AT\_GATE\_CHECK> </Parameters> <Parameters Type="Override"> <Switch Param="GATE\_DIRECTION"> <Case Value="Both"> <THIS\_GATE\_CHECK> l1 \#GATE\_POS\_NORMALIZED\_UP\# > l0 \#GATE\_POS\_NORMALIZED\_DN\# <= and l1 \#GATE\_POS\_NORMALIZED\_UP\# < l0 \#GATE\_POS\_NORMALIZED\_DN\# >= and or \#IS\_AT\_GATE\_CHECK\# or </THIS\_GATE\_CHECK> <THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION> \#GATE\_POS\_NORMALIZED\# sp4 l1 l0 > if{ \#GATE\_INC\_HOLD\_DURATION\# sp6 } els{ \#GATE\_DEC\_HOLD\_DURATION\# sp6 } </THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION> </Case> <Case Value="Inc"> <THIS\_GATE\_CHECK>l1 \#GATE\_POS\_NORMALIZED\_UP\# > l0 \#GATE\_POS\_NORMALIZED\_DN\# <= and \#IS\_AT\_GATE\_CHECK\# or</THIS\_GATE\_CHECK> <THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION>\#GATE\_POS\_NORMALIZED\# sp4 \#GATE\_INC\_HOLD\_DURATION\# sp6</THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION> </Case> <Case Value="Dec"> <THIS\_GATE\_CHECK>l1 \#GATE\_POS\_NORMALIZED\_UP\# < l0 \#GATE\_POS\_NORMALIZED\_DN\# >= and \#IS\_AT\_GATE\_CHECK\# or</THIS\_GATE\_CHECK> <THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION>\#GATE\_POS\_NORMALIZED\# sp4 \#GATE\_DEC\_HOLD\_DURATION\# sp6</THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION> </Case> </Switch> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <Condition NotEmpty="THIS\_GATE\_CHECK"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_CHECK\_GATE\_BYPASSED</PARAM> <OUT\_PARAM\_NAME>CHECK\_GATE\_BYPASSED</OUT\_PARAM\_NAME> <THIS\_CHECK\_GATE\_BYPASSED>\#THIS\_GATE\_CHECK\# if{ 1 sp3 \#THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION\# }</THIS\_CHECK\_GATE\_BYPASSED> </UseParametersFn> <Condition NotEmpty="CHECK\_IS\_AT\_ANY\_GATE"> <True> <CHECK\_IS\_AT\_ANY\_GATE>\#CHECK\_IS\_AT\_ANY\_GATE\# \#IS\_AT\_GATE\_CHECK\# or</CHECK\_IS\_AT\_ANY\_GATE> </True> <False> <CHECK\_IS\_AT\_ANY\_GATE>\#IS\_AT\_GATE\_CHECK\#</CHECK\_IS\_AT\_ANY\_GATE> </False> </Condition> </Condition> </Parameters> </Do> <Then> <Condition NotEmpty="CHECK\_GATE\_BYPASSED"> <True> <\#OUT\_PARAM\_NAME\#> sp1 '\#INPUT\_NAME\#' 'pressed\_or\_down'\_n (F:InputAction) if{ \#GET\_POSITION\_PCT\_OVER\_100\# sp0 \#CHECK\_GATE\_BYPASSED\# l3 if{ '\#INPUT\_NAME\#' 'pressed\_or\_down\_time'\_n (F:InputAction) sp5 (O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate) ! if{ l5 (O:XMLVAR\#VAR\_UID\_PREFIX\#\_Last\_Pressed\_Time) < if{ (\* we release the button and started pressing again \*) 1 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate) 0 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Last\_Pressed\_Time) } els{ l5 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Last\_Pressed\_Time) l4 sp1 } } (O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate) if{ l5 l6 < if{ l4 sp1 } els{ 0 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate) } } } els{ 0 (>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Last\_Pressed\_Time) } } l1 </\#OUT\_PARAM\_NAME\#> <\#OUT\_PARAM\_IS\_AT\_GATE\#>\#CHECK\_IS\_AT\_ANY\_GATE\#</\#OUT\_PARAM\_IS\_AT\_GATE\#> <\#OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE\#>(>O:XMLVAR\#VAR\_UID\_PREFIX\#\_Can\_Bypass\_Gate)</\#OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE\#> </True> <False> <\#OUT\_PARAM\_NAME\#/> <\#OUT\_PARAM\_IS\_AT\_GATE\#/> <\#OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE\#/> </False> </Condition> </Then> </Loop> </ReturnParameters> </ParametersFn> Parameters initialization: - Default Parameters set: - VAR\_UID - GET\_GATES - GET\_GATES\_CONFIG - OUT\_PARAM\_NAME - OUT\_PARAM\_IS\_AT\_GATE - OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE - INC\_HOLD\_DURATION\_TO\_BYPASS\_GATE - DEC\_HOLD\_DURATION\_TO\_BYPASS\_GATE - IN\_RANGE\_OFFSET - Override Parameters read: - GET\_GATES\_CONFIG Condition: NotEmpty(VAR\_UID) - Case: True Parameters set: - VAR\_UID\_PREFIX (using VAR\_UID) - Case: False Parameters set: - VAR\_UID\_PREFIX Return parameters: Parameters read: - GATE\_NAME - GET\_GATES Parameters set: - GATE\_POSITION (using GATE\_NAME) - GATE\_DIRECTION (using GATE\_NAME) - GATE\_DEC\_HOLD\_DURATION (using GATE\_NAME) - GATE\_INC\_HOLD\_DURATION (using GATE\_NAME) - GATE\_POS\_NORMALIZED (using GATE\_POSITION) - GATE\_POS\_NORMALIZED\_UP (using GATE\_POS\_NORMALIZED, IN\_RANGE\_OFFSET) - GATE\_POS\_NORMALIZED\_DN (using GATE\_POS\_NORMALIZED, IN\_RANGE\_OFFSET) - IS\_AT\_GATE\_CHECK (using GATE\_POS\_NORMALIZED\_DN, GATE\_POS\_NORMALIZED\_UP) Condition: NotEmpty(GATE\_INC\_HOLD\_DURATION) - Case: False Parameters set: - GATE\_INC\_HOLD\_DURATION (using INC\_HOLD\_DURATION\_TO\_BYPASS\_GATE) Condition: NotEmpty(GATE\_DEC\_HOLD\_DURATION) - Case: False Parameters set: - GATE\_DEC\_HOLD\_DURATION (using DEC\_HOLD\_DURATION\_TO\_BYPASS\_GATE) Condition: Switch(GATE\_DIRECTION) - Case: Both Parameters set: - THIS\_GATE\_CHECK (using GATE\_POS\_NORMALIZED\_UP, GATE\_POS\_NORMALIZED\_DN, IS\_AT\_GATE\_CHECK) - THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION (using GATE\_POS\_NORMALIZED, GATE\_INC\_HOLD\_DURATION, GATE\_DEC\_HOLD\_DURATION) - Case: Inc Parameters set: - THIS\_GATE\_CHECK (using GATE\_POS\_NORMALIZED\_UP, GATE\_POS\_NORMALIZED\_DN, IS\_AT\_GATE\_CHECK) - THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION (using GATE\_POS\_NORMALIZED, GATE\_INC\_HOLD\_DURATION) - Case: Dec Parameters set: - THIS\_GATE\_CHECK (using GATE\_POS\_NORMALIZED\_UP, GATE\_POS\_NORMALIZED\_DN, IS\_AT\_GATE\_CHECK) - THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION (using GATE\_POS\_NORMALIZED, GATE\_DEC\_HOLD\_DURATION) Condition: NotEmpty(THIS\_GATE\_CHECK) - Case: True ParametersFn used: - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - THIS\_CHECK\_GATE\_BYPASSED (using THIS\_GATE\_CHECK, THIS\_GATE\_VALUE\_AND\_HOLD\_DURATION) Condition: NotEmpty(CHECK\_IS\_AT\_ANY\_GATE) - Case: True Parameters set: - CHECK\_IS\_AT\_ANY\_GATE (using CHECK\_IS\_AT\_ANY\_GATE, IS\_AT\_GATE\_CHECK) - Case: False Parameters set: - CHECK\_IS\_AT\_ANY\_GATE (using IS\_AT\_GATE\_CHECK) Condition: NotEmpty(CHECK\_GATE\_BYPASSED) - Case: True Parameters set: - \#OUT\_PARAM\_NAME\# (using INPUT\_NAME, GET\_POSITION\_PCT\_OVER\_100, CHECK\_GATE\_BYPASSED, VAR\_UID\_PREFIX) - \#OUT\_PARAM\_IS\_AT\_GATE\# (using CHECK\_IS\_AT\_ANY\_GATE) - \#OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE\# (using VAR\_UID\_PREFIX) - Case: False Parameters set: - \#OUT\_PARAM\_NAME\# - \#OUT\_PARAM\_IS\_AT\_GATE\# - \#OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE\# - #### ASOBO\_Save\_Update\_Helper Definition from XML <ParametersFn Name="ASOBO\_Save\_Update\_Helper"> <Parameters Type="Default"> <UPDATE\_CODE/> <UPDATE\_INTERACTION\_MODEL>All</UPDATE\_INTERACTION\_MODEL> <UPDATE\_FREQUENCY>1</UPDATE\_FREQUENCY> <UPDATE\_TEMPLATE>ASOBO\_GT\_Update</UPDATE\_TEMPLATE> <SAVE\_UPDATE\_TO>Temp\_Update</SAVE\_UPDATE\_TO> </Parameters> <Parameters Type="Override"> <SaveParameters ID="\#SAVE\_UPDATE\_TO\#" Append="Default"> <UPDATE\_TEMPLATE>\#UPDATE\_TEMPLATE\#</UPDATE\_TEMPLATE> <UPDATE\_CODE>\#UPDATE\_CODE\#</UPDATE\_CODE> <Condition Check="UPDATE\_ONCE"> <True> <UPDATE\_ONCE>\#UPDATE\_ONCE\#</UPDATE\_ONCE> </True> <False> <FREQUENCY>\#UPDATE\_FREQUENCY\#</FREQUENCY> </False> </Condition> <INTERACTION\_MODEL>\#UPDATE\_INTERACTION\_MODEL\#</INTERACTION\_MODEL> </SaveParameters> </Parameters> </ParametersFn> Parameters initialization: - Default Parameters set: - UPDATE\_CODE - UPDATE\_INTERACTION\_MODEL - UPDATE\_FREQUENCY - UPDATE\_TEMPLATE - SAVE\_UPDATE\_TO - Override Parameters read: - SAVE\_UPDATE\_TO Parameters set: - UPDATE\_TEMPLATE (using UPDATE\_TEMPLATE) - UPDATE\_CODE (using UPDATE\_CODE) - INTERACTION\_MODEL (using UPDATE\_INTERACTION\_MODEL) Condition: Check(UPDATE\_ONCE) - Case: True Parameters set: - UPDATE\_ONCE (using UPDATE\_ONCE) - Case: False Parameters set: - FREQUENCY (using UPDATE\_FREQUENCY) - #### ASOBO\_Increment\_ID\_Helper Definition from XML <ParametersFn Name="ASOBO\_Increment\_ID\_Helper"> <Parameters Type="Default"> <OUT\_PARAM\_ID\_NAME>CUR\_ID</OUT\_PARAM\_ID\_NAME> <OUT\_FIRST\_ID>0</OUT\_FIRST\_ID> <INCREMENT\_COUNT>1</INCREMENT\_COUNT> </Parameters> <Parameters Type="Override"> <Condition Check="\#OUT\_PARAM\_ID\_NAME\#"> <CUR\_VALUE Process="Param">\#OUT\_PARAM\_ID\_NAME\#</CUR\_VALUE> </Condition> </Parameters> <ReturnParameters> <Condition Check="\#OUT\_PARAM\_ID\_NAME\#"> <True> <\#OUT\_PARAM\_ID\_NAME\# Process="Int">\#CUR\_VALUE\# \#INCREMENT\_COUNT\# +</\#OUT\_PARAM\_ID\_NAME\#> </True> <False> <\#OUT\_PARAM\_ID\_NAME\#>\#OUT\_FIRST\_ID\#</\#OUT\_PARAM\_ID\_NAME\#> </False> </Condition> </ReturnParameters> </ParametersFn> Parameters initialization: - Default Parameters set: - OUT\_PARAM\_ID\_NAME - OUT\_FIRST\_ID - INCREMENT\_COUNT - Override Condition: Check(\#OUT\_PARAM\_ID\_NAME\#) - Case: True Parameters set: - CUR\_VALUE (using OUT\_PARAM\_ID\_NAME) Return parameters: Condition: Check(\#OUT\_PARAM\_ID\_NAME\#) - Case: True Parameters set: - \#OUT\_PARAM\_ID\_NAME\# (using CUR\_VALUE, INCREMENT\_COUNT) - Case: False Parameters set: - \#OUT\_PARAM\_ID\_NAME\# (using OUT\_FIRST\_ID) - #### ASOBO\_Incremental\_Save\_Helper Definition from XML <ParametersFn Name="ASOBO\_Incremental\_Save\_Helper"> <Parameters Type="Default"> <SAVE\_ELEMENT\_PREFIX>Saved\_\#ELEMENT\_TYPE\_NAME\#</SAVE\_ELEMENT\_PREFIX> <APPEND\_ELEMENT>Append\_With\_\#ELEMENT\_TYPE\_NAME\#</APPEND\_ELEMENT> <SAVE\_INCREMENT\_TO>Saved\_\#ELEMENT\_TYPE\_NAME\#\_Parameters</SAVE\_INCREMENT\_TO> <SAVE\_ELEMENT>ASOBO\_Save\_\#ELEMENT\_TYPE\_NAME\#\_Helper</SAVE\_ELEMENT> </Parameters> <Parameters Type="Override"> <LoadParameters ID="\#SAVE\_INCREMENT\_TO\#"/> <ELEMENT\_TYPE\_NAME\_UC Process="String">'\#ELEMENT\_TYPE\_NAME\#' uc</ELEMENT\_TYPE\_NAME\_UC> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Increment\_ID\_Helper"> <OUT\_PARAM\_ID\_NAME>\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED</OUT\_PARAM\_ID\_NAME> </UseParametersFn> </Parameters> <Parameters Type="Override"> <LAST\_ID\_USED Process="Param">\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED</LAST\_ID\_USED> </Parameters> <Parameters Type="Default"> <SAVE\_\#ELEMENT\_TYPE\_NAME\_UC\#\_TO>\#SAVE\_ELEMENT\_PREFIX\#\_\#LAST\_ID\_USED\#</SAVE\_\#ELEMENT\_TYPE\_NAME\_UC\#\_TO> <Condition CheckSavedParameters="\#APPEND\_ELEMENT\#"> <APPEND\_WITH\_SAVED\_\#ELEMENT\_TYPE\_NAME\_UC\#>\#APPEND\_ELEMENT\#</APPEND\_WITH\_SAVED\_\#ELEMENT\_TYPE\_NAME\_UC\#> </Condition> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="\#SAVE\_ELEMENT\#"/> <SaveParameters ID="\#SAVE\_INCREMENT\_TO\#" Append="Override"> <\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED>\#LAST\_ID\_USED\#</\#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED> </SaveParameters> </Parameters> </ParametersFn> Parameters initialization: - Default Parameters set: - SAVE\_ELEMENT\_PREFIX (using ELEMENT\_TYPE\_NAME) - APPEND\_ELEMENT (using ELEMENT\_TYPE\_NAME) - SAVE\_INCREMENT\_TO (using ELEMENT\_TYPE\_NAME) - SAVE\_ELEMENT (using ELEMENT\_TYPE\_NAME) - Override Parameters read: - SAVE\_INCREMENT\_TO Parameters set: - ELEMENT\_TYPE\_NAME\_UC (using ELEMENT\_TYPE\_NAME) - Override ParametersFn used: - [ASOBO\_Increment\_ID\_Helper](helpers/#ASOBO_Increment_ID_Helper) Parameters set: - OUT\_PARAM\_ID\_NAME (using ELEMENT\_TYPE\_NAME\_UC) - Override Parameters set: - LAST\_ID\_USED (using ELEMENT\_TYPE\_NAME\_UC) - Default Parameters set: - SAVE\_\#ELEMENT\_TYPE\_NAME\_UC\#\_TO (using SAVE\_ELEMENT\_PREFIX, LAST\_ID\_USED) Condition: CheckSavedParameters(\#APPEND\_ELEMENT\#) - Case: True Parameters set: - APPEND\_WITH\_SAVED\_\#ELEMENT\_TYPE\_NAME\_UC\# (using APPEND\_ELEMENT) - Override Parameters read: - SAVE\_ELEMENT - SAVE\_INCREMENT\_TO Parameters set: - \#ELEMENT\_TYPE\_NAME\_UC\#\_LAST\_ID\_USED (using LAST\_ID\_USED) ParametersFn used: - \#SAVE\_ELEMENT\# - #### ASOBO\_Add\_Update\_Helper Definition from XML <ParametersFn Name="ASOBO\_Add\_Update\_Helper"> <Parameters Type="Override"> <Condition Check="UPDATE\_TYPE\_NAME"> <SAVE\_ELEMENT\_PREFIX>Saved\_\#UPDATE\_TYPE\_NAME\#\_Update</SAVE\_ELEMENT\_PREFIX> <SAVE\_INCREMENT\_TO>Saved\_\#UPDATE\_TYPE\_NAME\#\_Update\_Parameters</SAVE\_INCREMENT\_TO> </Condition> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Incremental\_Save\_Helper"> <ELEMENT\_TYPE\_NAME>Update</ELEMENT\_TYPE\_NAME> </UseParametersFn> </Parameters> </ParametersFn> Parameters initialization: - Override Condition: Check(UPDATE\_TYPE\_NAME) - Case: True Parameters set: - SAVE\_ELEMENT\_PREFIX (using UPDATE\_TYPE\_NAME) - SAVE\_INCREMENT\_TO (using UPDATE\_TYPE\_NAME) - Override ParametersFn used: - [ASOBO\_Incremental\_Save\_Helper](helpers/#ASOBO_Incremental_Save_Helper) Parameters set: - ELEMENT\_TYPE\_NAME - #### ASOBO\_Load\_Then\_Remove\_Parameters\_Helper Definition from XML <ParametersFn Name="ASOBO\_Load\_Then\_Remove\_Parameters\_Helper"> <Parameters Type="Default"> <REMOVE\_\#SAVED\_PARAMETERS\#>True</REMOVE\_\#SAVED\_PARAMETERS\#> </Parameters> <Parameters Type="Override"> <\_\_SAVED\_PARAMETERS\_\_ Process="Param">\#SAVED\_PARAMETERS\#</\_\_SAVED\_PARAMETERS\_\_> </Parameters> <ReturnParameters> <Condition CheckSavedParameters="\#\_\_SAVED\_PARAMETERS\_\_\#"> <LoadParameters ID="\#\_\_SAVED\_PARAMETERS\_\_\#"/> <Condition Valid="REMOVE\_\#SAVED\_PARAMETERS\#"> <RemoveSavedParameters ID="\#\_\_SAVED\_PARAMETERS\_\_\#"/> </Condition> </Condition> </ReturnParameters> </ParametersFn> Parameters initialization: - Default Parameters set: - REMOVE\_\#SAVED\_PARAMETERS\# - Override Parameters set: - \_\_SAVED\_PARAMETERS\_\_ (using SAVED\_PARAMETERS) Return parameters: Condition: CheckSavedParameters(\#\_\_SAVED\_PARAMETERS\_\_\#) - Case: True Parameters read: - \_\_SAVED\_PARAMETERS\_\_ Condition: Valid(REMOVE\_\#SAVED\_PARAMETERS\#) - Case: True Parameters read: - \_\_SAVED\_PARAMETERS\_\_ - #### ASOBO\_Count\_Token\_Helper Definition from XML <ParametersFn Name="ASOBO\_Count\_Token\_Helper"> <Parameters Type="Default"> <FROM>0</FROM> <INC>1</INC> <TOKEN\_PREFIX/> <TOKEN\_SUFFIX/> <OUT\_PARAM\_NAME\_COUNT>TOKEN\_COUNT</OUT\_PARAM\_NAME\_COUNT> <OUT\_PARAM\_NAME\_LAST\_ID>LAST\_TOKEN\_ID</OUT\_PARAM\_NAME\_LAST\_ID> </Parameters> <ReturnParameters> <Loop> <Setup> <Param>CUR\_ID</Param> <From>\#FROM\#</From> <Inc>\#INC\#</Inc> <While> <Arg NotEmpty="\#TOKEN\_PREFIX\#\#CUR\_ID\#\#TOKEN\_SUFFIX\#"/> </While> </Setup> <Do/> <Then> <\#OUT\_PARAM\_NAME\_COUNT\# Process="Int">\#CUR\_ID\# \#FROM\# -</\#OUT\_PARAM\_NAME\_COUNT\#> <\#OUT\_PARAM\_NAME\_LAST\_ID\# Process="Int">\#CUR\_ID\# 1 -</\#OUT\_PARAM\_NAME\_LAST\_ID\#> </Then> </Loop> </ReturnParameters> </ParametersFn> Parameters initialization: - Default Parameters set: - FROM - INC - TOKEN\_PREFIX - TOKEN\_SUFFIX - OUT\_PARAM\_NAME\_COUNT - OUT\_PARAM\_NAME\_LAST\_ID Return parameters: Parameters read: - FROM - INC - TOKEN\_PREFIX - CUR\_ID - TOKEN\_SUFFIX Parameters set: - CUR\_ID - \#OUT\_PARAM\_NAME\_COUNT\# (using CUR\_ID, FROM) - \#OUT\_PARAM\_NAME\_LAST\_ID\# (using CUR\_ID) - #### ASOBO\_Get\_Throttle\_Detent\_Parameters Definition from XML <ParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Parameters"> <ReturnParameters> <SET\_ACTIVE\_RANGE>(>O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Max) (>O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Min)</SET\_ACTIVE\_RANGE> <CLAMP\_IN\_ACTIVE\_RANGE>(O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Min) (O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Max) @Clamp</CLAMP\_IN\_ACTIVE\_RANGE> <ACTIVE\_RANGE\_MIN>(O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Min)</ACTIVE\_RANGE\_MIN> <ACTIVE\_RANGE\_MAX>(O:\_Input\_\#THROTTLE\_NAME\#\_Range\_Max)</ACTIVE\_RANGE\_MAX> <GET\_IS\_LOCKED\_IN\_RANGE>(O:\_Input\_\#THROTTLE\_NAME\#\_Is\_Locked\_In\_Range)</GET\_IS\_LOCKED\_IN\_RANGE> <SET\_IS\_LOCKED\_IN\_RANGE>(>O:\_Input\_\#THROTTLE\_NAME\#\_Is\_Locked\_In\_Range)</SET\_IS\_LOCKED\_IN\_RANGE> <Condition NotEmpty="THROTTLE\_INDEX"> <True> <SET\_BLOCKED\_BY\_UPPER\_BOUNDS>(>A:THROTTLE INPUT BLOCKED BY UPPER BOUNDS:\#THROTTLE\_INDEX\#, Bool)</SET\_BLOCKED\_BY\_UPPER\_BOUNDS> <SET\_BLOCKED\_BY\_LOWER\_BOUNDS>(>A:THROTTLE INPUT BLOCKED BY LOWER BOUNDS:\#THROTTLE\_INDEX\#, Bool)</SET\_BLOCKED\_BY\_LOWER\_BOUNDS> <GET\_BLOCKED\_BY\_UPPER\_BOUNDS>(A:THROTTLE INPUT BLOCKED BY UPPER BOUNDS:\#THROTTLE\_INDEX\#, Bool)</GET\_BLOCKED\_BY\_UPPER\_BOUNDS> <GET\_BLOCKED\_BY\_LOWER\_BOUNDS>(A:THROTTLE INPUT BLOCKED BY LOWER BOUNDS:\#THROTTLE\_INDEX\#, Bool)</GET\_BLOCKED\_BY\_LOWER\_BOUNDS> </True> <False> <SET\_BLOCKED\_BY\_UPPER\_BOUNDS>(>A:THROTTLE INPUT BLOCKED BY UPPER BOUNDS, Bool)</SET\_BLOCKED\_BY\_UPPER\_BOUNDS> <SET\_BLOCKED\_BY\_LOWER\_BOUNDS>(>A:THROTTLE INPUT BLOCKED BY LOWER BOUNDS, Bool)</SET\_BLOCKED\_BY\_LOWER\_BOUNDS> <GET\_BLOCKED\_BY\_UPPER\_BOUNDS>(A:THROTTLE INPUT BLOCKED BY UPPER BOUNDS, Bool)</GET\_BLOCKED\_BY\_UPPER\_BOUNDS> <GET\_BLOCKED\_BY\_LOWER\_BOUNDS>(A:THROTTLE INPUT BLOCKED BY LOWER BOUNDS, Bool)</GET\_BLOCKED\_BY\_LOWER\_BOUNDS> </False> </Condition> <DETENT\_COMPARISON\_DELTA>0.001</DETENT\_COMPARISON\_DELTA> </ReturnParameters> </ParametersFn> Return parameters: Parameters set: - SET\_ACTIVE\_RANGE (using THROTTLE\_NAME) - CLAMP\_IN\_ACTIVE\_RANGE (using THROTTLE\_NAME) - ACTIVE\_RANGE\_MIN (using THROTTLE\_NAME) - ACTIVE\_RANGE\_MAX (using THROTTLE\_NAME) - GET\_IS\_LOCKED\_IN\_RANGE (using THROTTLE\_NAME) - SET\_IS\_LOCKED\_IN\_RANGE (using THROTTLE\_NAME) - DETENT\_COMPARISON\_DELTA Condition: NotEmpty(THROTTLE\_INDEX) - Case: True Parameters set: - SET\_BLOCKED\_BY\_UPPER\_BOUNDS (using THROTTLE\_INDEX) - SET\_BLOCKED\_BY\_LOWER\_BOUNDS (using THROTTLE\_INDEX) - GET\_BLOCKED\_BY\_UPPER\_BOUNDS (using THROTTLE\_INDEX) - GET\_BLOCKED\_BY\_LOWER\_BOUNDS (using THROTTLE\_INDEX) - Case: False Parameters set: - SET\_BLOCKED\_BY\_UPPER\_BOUNDS - SET\_BLOCKED\_BY\_LOWER\_BOUNDS - GET\_BLOCKED\_BY\_UPPER\_BOUNDS - GET\_BLOCKED\_BY\_LOWER\_BOUNDS - #### ASOBO\_Get\_Throttle\_Detent\_Key\_Events\_To\_Intercepts Definition from XML <ParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Key\_Events\_To\_Intercepts"> <Parameters Type="Override"> <LoadParameters ID="Input\_Detents"/> </Parameters> <Parameters Type="Default"> <UseParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Parameters"/> <IS\_ALLOWED\_TO\_RESET\_BOUNDS>False</IS\_ALLOWED\_TO\_RESET\_BOUNDS> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Count\_Token\_Helper"> <TOKEN\_PREFIX>DETENT\_</TOKEN\_PREFIX> <OUT\_PARAM\_NAME\_LAST\_ID>LAST\_DETENT\_ID</OUT\_PARAM\_NAME\_LAST\_ID> </UseParametersFn> <Condition NotEmpty="THROTTLE\_INCR\_IN\_RANGE\_VALUE"> <THROTTLE\_INCR\_IN\_RANGE>\#THROTTLE\_INCR\_IN\_RANGE\_VALUE\# \#CLAMP\_IN\_ACTIVE\_RANGE\# sp0 \#THROTTLE\_SET\_TO\_L0\#</THROTTLE\_INCR\_IN\_RANGE> </Condition> <Condition NotEmpty="THROTTLE\_DECR\_IN\_RANGE\_VALUE"> <THROTTLE\_DECR\_IN\_RANGE>\#THROTTLE\_DECR\_IN\_RANGE\_VALUE\# \#CLAMP\_IN\_ACTIVE\_RANGE\# sp0 \#THROTTLE\_SET\_TO\_L0\#</THROTTLE\_DECR\_IN\_RANGE> </Condition> </Parameters> <Parameters Type="Override"> <Loop> <Setup> <Param>DETENT\_ID</Param> <From>0</From> <Inc>1</Inc> <While> <Arg Check="DETENT\_\#DETENT\_ID\#"/> </While> </Setup> <Do> <Parameters Type="Override"> <PREV\_DETENT\_ID Process="Int">\#DETENT\_ID\# 1 - 0 max</PREV\_DETENT\_ID> <NEXT\_DETENT\_ID Process="Int">\#DETENT\_ID\# 1 + \#LAST\_DETENT\_ID\# min</NEXT\_DETENT\_ID> </Parameters> <Parameters Type="Override"> <DETENT\_POSITION Process="Param">DETENT\_\#DETENT\_ID\#</DETENT\_POSITION> <PREV\_DETENT\_POSITION Process="Param">DETENT\_\#PREV\_DETENT\_ID\#</PREV\_DETENT\_POSITION> <NEXT\_DETENT\_POSITION Process="Param">DETENT\_\#NEXT\_DETENT\_ID\#</NEXT\_DETENT\_POSITION> </Parameters> <Parameters Type="Override"> <DETENT\_POSITION\_POS Process="Float">\#DETENT\_POSITION\# \#DETENT\_COMPARISON\_DELTA\# +</DETENT\_POSITION\_POS> <DETENT\_POSITION\_NEG Process="Float">\#DETENT\_POSITION\# \#DETENT\_COMPARISON\_DELTA\# -</DETENT\_POSITION\_NEG> <PREV\_DETENT\_POSITION\_NEG Process="Float">\#PREV\_DETENT\_POSITION\# \#DETENT\_COMPARISON\_DELTA\# -</PREV\_DETENT\_POSITION\_NEG> <NEXT\_DETENT\_POSITION\_NEG Process="Float">\#NEXT\_DETENT\_POSITION\# \#DETENT\_COMPARISON\_DELTA\# -</NEXT\_DETENT\_POSITION\_NEG> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <Condition Check="PREV\_DETENT\_ID" Different="\#DETENT\_ID\#"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_DETENT\_CHECK</PARAM> <OUT\_PARAM\_NAME>GET\_DETENT\_BELOW</OUT\_PARAM\_NAME> <Condition Check="PREV\_DETENT\_ID" Match="0"> <True> <THIS\_DETENT\_CHECK>l0 \#DETENT\_POSITION\_POS\# <= if{ \#PREV\_DETENT\_POSITION\# g0 }</THIS\_DETENT\_CHECK> </True> <False> <THIS\_DETENT\_CHECK>l0 \#PREV\_DETENT\_POSITION\_NEG\# > l0 \#DETENT\_POSITION\_POS\# <= and if{ \#PREV\_DETENT\_POSITION\# g0 }</THIS\_DETENT\_CHECK> </False> </Condition> </UseParametersFn> </Condition> <Condition Check="NEXT\_DETENT\_ID" Different="\#DETENT\_ID\#"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_DETENT\_CHECK</PARAM> <OUT\_PARAM\_NAME>GET\_DETENT\_ABOVE</OUT\_PARAM\_NAME> <Condition Check="NEXT\_DETENT\_ID" Match="\#LAST\_DETENT\_ID\#"> <True> <THIS\_DETENT\_CHECK>l0 \#DETENT\_POSITION\_NEG\# >= if{ \#NEXT\_DETENT\_POSITION\# g0 }</THIS\_DETENT\_CHECK> </True> <False> <THIS\_DETENT\_CHECK>l0 \#NEXT\_DETENT\_POSITION\_NEG\# < l0 \#DETENT\_POSITION\_NEG\# >= and if{ \#NEXT\_DETENT\_POSITION\# g0 }</THIS\_DETENT\_CHECK> </False> </Condition> </UseParametersFn> </Condition> <Condition> <Test> <Or> <Equal> <Number>\#PREV\_DETENT\_ID\#</Number> <Number>\#DETENT\_ID\#</Number> </Equal> <Equal> <Number>\#NEXT\_DETENT\_ID\#</Number> <Number>\#DETENT\_ID\#</Number> </Equal> </Or> </Test> <False> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_DETENT\_CHECK</PARAM> <OUT\_PARAM\_NAME>GET\_RANGE\_IN\_BETWEEN\_DETENTS</OUT\_PARAM\_NAME> <THIS\_DETENT\_CHECK> \#PREV\_DETENT\_POSITION\# \#NEXT\_DETENT\_POSITION\# l0 rng if{ l0 \#DETENT\_POSITION\# < if{ \#PREV\_DETENT\_POSITION\# \#DETENT\_POSITION\# } els{ \#DETENT\_POSITION\# \#NEXT\_DETENT\_POSITION\# } } </THIS\_DETENT\_CHECK> </UseParametersFn> </False> </Condition> </Parameters> </Do> <Then> <UseParametersFn Name="ASOBO\_Add\_Update\_Helper"> <UPDATE\_ONCE>True</UPDATE\_ONCE> <UPDATE\_CODE>0 \#SET\_IS\_LOCKED\_IN\_RANGE\# 0 1 \#SET\_ACTIVE\_RANGE\#</UPDATE\_CODE> </UseParametersFn> <Condition Valid="IS\_ALLOWED\_TO\_RESET\_BOUNDS"> <UseParametersFn Name="ASOBO\_Add\_Update\_Helper"> <UPDATE\_CODE> \#GET\_IS\_LOCKED\_IN\_RANGE\# \#ACTIVE\_RANGE\_MIN\# \#DETENT\_COMPARISON\_DELTA\# - \#ACTIVE\_RANGE\_MAX\# \#DETENT\_COMPARISON\_DELTA\# + \#GET\_THROTTLE\_POSITION\# rng ! and if{ 0 \#SET\_IS\_LOCKED\_IN\_RANGE\# 0 1 \#SET\_ACTIVE\_RANGE\# 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# } \#GET\_BLOCKED\_BY\_LOWER\_BOUNDS\# \#GET\_THROTTLE\_POSITION\# \#ACTIVE\_RANGE\_MIN\# - abs \#DETENT\_COMPARISON\_DELTA\# > and if{ 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# } \#GET\_BLOCKED\_BY\_UPPER\_BOUNDS\# \#GET\_THROTTLE\_POSITION\# \#ACTIVE\_RANGE\_MAX\# - abs \#DETENT\_COMPARISON\_DELTA\# > and if{ 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# } </UPDATE\_CODE> <UPDATE\_FREQUENCY>5</UPDATE\_FREQUENCY> </UseParametersFn> </Condition> <SaveParameters ID="Throttle\_Key\_Events\_To\_Intercept" Append="Override"> <\#EV\_RANGE\_INC\_THROTTLE\#> \#GET\_THROTTLE\_POSITION\# sp1 \#THROTTLE\_INCR\_IN\_RANGE\# \#GET\_THROTTLE\_POSITION\# sp2 l1 l2 - abs \#DETENT\_COMPARISON\_DELTA\# < \#ACTIVE\_RANGE\_MAX\# 1 != and \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# \#GET\_IS\_LOCKED\_IN\_RANGE\# ! if{ 1 \#SET\_IS\_LOCKED\_IN\_RANGE\# l2 sp0 \#GET\_RANGE\_IN\_BETWEEN\_DETENTS\# \#SET\_ACTIVE\_RANGE\# } </\#EV\_RANGE\_INC\_THROTTLE\#> <\#EV\_RANGE\_DEC\_THROTTLE\#> \#GET\_THROTTLE\_POSITION\# sp1 \#THROTTLE\_DECR\_IN\_RANGE\# \#GET\_THROTTLE\_POSITION\# sp2 l1 l2 - abs \#DETENT\_COMPARISON\_DELTA\# < \#ACTIVE\_RANGE\_MIN\# 0 != and \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# \#GET\_IS\_LOCKED\_IN\_RANGE\# ! if{ 1 \#SET\_IS\_LOCKED\_IN\_RANGE\# l2 sp0 \#GET\_RANGE\_IN\_BETWEEN\_DETENTS\# \#SET\_ACTIVE\_RANGE\# } </\#EV\_RANGE\_DEC\_THROTTLE\#> <\#EV\_RANGE\_NEXT\_DETENT\#>\#GET\_THROTTLE\_POSITION\# sp0 \#GET\_IS\_LOCKED\_IN\_RANGE\# if{ \#ACTIVE\_RANGE\_MAX\# } els{ \#GET\_DETENT\_ABOVE\# :0 } sp0 \#THROTTLE\_SET\_TO\_L0\# 0 \#SET\_IS\_LOCKED\_IN\_RANGE\# 0 1 \#SET\_ACTIVE\_RANGE\# 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# </\#EV\_RANGE\_NEXT\_DETENT\#> <\#EV\_RANGE\_PREV\_DETENT\#>\#GET\_THROTTLE\_POSITION\# sp0 \#GET\_IS\_LOCKED\_IN\_RANGE\# if{ \#ACTIVE\_RANGE\_MIN\# } els{ \#GET\_DETENT\_BELOW\# :0 } sp0 \#THROTTLE\_SET\_TO\_L0\# 0 \#SET\_IS\_LOCKED\_IN\_RANGE\# 0 1 \#SET\_ACTIVE\_RANGE\# 0 \#SET\_BLOCKED\_BY\_LOWER\_BOUNDS\# 0 \#SET\_BLOCKED\_BY\_UPPER\_BOUNDS\# </\#EV\_RANGE\_PREV\_DETENT\#> </SaveParameters> </Then> </Loop> </Parameters> </ParametersFn> Parameters initialization: - Override - Default Parameters set: - IS\_ALLOWED\_TO\_RESET\_BOUNDS ParametersFn used: - [ASOBO\_Get\_Throttle\_Detent\_Parameters](helpers/#ASOBO_Get_Throttle_Detent_Parameters) - Override ParametersFn used: - [ASOBO\_Count\_Token\_Helper](helpers/#ASOBO_Count_Token_Helper) Parameters set: - TOKEN\_PREFIX - OUT\_PARAM\_NAME\_LAST\_ID Condition: NotEmpty(THROTTLE\_INCR\_IN\_RANGE\_VALUE) - Case: True Parameters set: - THROTTLE\_INCR\_IN\_RANGE (using THROTTLE\_INCR\_IN\_RANGE\_VALUE, CLAMP\_IN\_ACTIVE\_RANGE, THROTTLE\_SET\_TO\_L0) Condition: NotEmpty(THROTTLE\_DECR\_IN\_RANGE\_VALUE) - Case: True Parameters set: - THROTTLE\_DECR\_IN\_RANGE (using THROTTLE\_DECR\_IN\_RANGE\_VALUE, CLAMP\_IN\_ACTIVE\_RANGE, THROTTLE\_SET\_TO\_L0) - Override Parameters read: - DETENT\_\#DETENT\_ID\# Parameters set: - DETENT\_ID - PREV\_DETENT\_ID (using DETENT\_ID) - NEXT\_DETENT\_ID (using DETENT\_ID, LAST\_DETENT\_ID) - DETENT\_POSITION (using DETENT\_ID) - PREV\_DETENT\_POSITION (using PREV\_DETENT\_ID) - NEXT\_DETENT\_POSITION (using NEXT\_DETENT\_ID) - DETENT\_POSITION\_POS (using DETENT\_POSITION, DETENT\_COMPARISON\_DELTA) - DETENT\_POSITION\_NEG (using DETENT\_POSITION, DETENT\_COMPARISON\_DELTA) - PREV\_DETENT\_POSITION\_NEG (using PREV\_DETENT\_POSITION, DETENT\_COMPARISON\_DELTA) - NEXT\_DETENT\_POSITION\_NEG (using NEXT\_DETENT\_POSITION, DETENT\_COMPARISON\_DELTA) - \#EV\_RANGE\_INC\_THROTTLE\# (using GET\_THROTTLE\_POSITION, THROTTLE\_INCR\_IN\_RANGE, DETENT\_COMPARISON\_DELTA, ACTIVE\_RANGE\_MAX, SET\_BLOCKED\_BY\_UPPER\_BOUNDS, SET\_BLOCKED\_BY\_LOWER\_BOUNDS, GET\_IS\_LOCKED\_IN\_RANGE, SET\_IS\_LOCKED\_IN\_RANGE, GET\_RANGE\_IN\_BETWEEN\_DETENTS, SET\_ACTIVE\_RANGE) - \#EV\_RANGE\_DEC\_THROTTLE\# (using GET\_THROTTLE\_POSITION, THROTTLE\_DECR\_IN\_RANGE, DETENT\_COMPARISON\_DELTA, ACTIVE\_RANGE\_MIN, SET\_BLOCKED\_BY\_LOWER\_BOUNDS, SET\_BLOCKED\_BY\_UPPER\_BOUNDS, GET\_IS\_LOCKED\_IN\_RANGE, SET\_IS\_LOCKED\_IN\_RANGE, GET\_RANGE\_IN\_BETWEEN\_DETENTS, SET\_ACTIVE\_RANGE) - \#EV\_RANGE\_NEXT\_DETENT\# (using GET\_THROTTLE\_POSITION, GET\_IS\_LOCKED\_IN\_RANGE, ACTIVE\_RANGE\_MAX, GET\_DETENT\_ABOVE, THROTTLE\_SET\_TO\_L0, SET\_IS\_LOCKED\_IN\_RANGE, SET\_ACTIVE\_RANGE, SET\_BLOCKED\_BY\_LOWER\_BOUNDS, SET\_BLOCKED\_BY\_UPPER\_BOUNDS) - \#EV\_RANGE\_PREV\_DETENT\# (using GET\_THROTTLE\_POSITION, GET\_IS\_LOCKED\_IN\_RANGE, ACTIVE\_RANGE\_MIN, GET\_DETENT\_BELOW, THROTTLE\_SET\_TO\_L0, SET\_IS\_LOCKED\_IN\_RANGE, SET\_ACTIVE\_RANGE, SET\_BLOCKED\_BY\_LOWER\_BOUNDS, SET\_BLOCKED\_BY\_UPPER\_BOUNDS) ParametersFn used: - [ASOBO\_Add\_Update\_Helper](helpers/#ASOBO_Add_Update_Helper) Parameters set: - UPDATE\_ONCE - UPDATE\_CODE (using SET\_IS\_LOCKED\_IN\_RANGE, SET\_ACTIVE\_RANGE) Condition: Check(PREV\_DETENT\_ID) - Case: True ParametersFn used: - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME Condition: Check(PREV\_DETENT\_ID) - Case: True Parameters set: - THIS\_DETENT\_CHECK (using DETENT\_POSITION\_POS, PREV\_DETENT\_POSITION) - Case: False Parameters set: - THIS\_DETENT\_CHECK (using PREV\_DETENT\_POSITION\_NEG, DETENT\_POSITION\_POS, PREV\_DETENT\_POSITION) Condition: Check(NEXT\_DETENT\_ID) - Case: True ParametersFn used: - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME Condition: Check(NEXT\_DETENT\_ID) - Case: True Parameters set: - THIS\_DETENT\_CHECK (using DETENT\_POSITION\_NEG, NEXT\_DETENT\_POSITION) - Case: False Parameters set: - THIS\_DETENT\_CHECK (using NEXT\_DETENT\_POSITION\_NEG, DETENT\_POSITION\_NEG, NEXT\_DETENT\_POSITION) Condition: Test - Case: False ParametersFn used: - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - THIS\_DETENT\_CHECK (using PREV\_DETENT\_POSITION, NEXT\_DETENT\_POSITION, DETENT\_POSITION) Condition: Valid(IS\_ALLOWED\_TO\_RESET\_BOUNDS) - Case: True ParametersFn used: - [ASOBO\_Add\_Update\_Helper](helpers/#ASOBO_Add_Update_Helper) Parameters set: - UPDATE\_CODE (using GET\_IS\_LOCKED\_IN\_RANGE, ACTIVE\_RANGE\_MIN, DETENT\_COMPARISON\_DELTA, ACTIVE\_RANGE\_MAX, GET\_THROTTLE\_POSITION, SET\_IS\_LOCKED\_IN\_RANGE, SET\_ACTIVE\_RANGE, SET\_BLOCKED\_BY\_LOWER\_BOUNDS, SET\_BLOCKED\_BY\_UPPER\_BOUNDS, GET\_BLOCKED\_BY\_LOWER\_BOUNDS, GET\_BLOCKED\_BY\_UPPER\_BOUNDS) - UPDATE\_FREQUENCY - #### ASOBO\_Get\_Throttle\_Key\_Events\_To\_Intercepts Definition from XML <ParametersFn Name="ASOBO\_Get\_Throttle\_Key\_Events\_To\_Intercepts"> <Parameters Type="Default"> <THROTTLE\_INCREMENT\_SCALE>0.01</THROTTLE\_INCREMENT\_SCALE> <Condition CheckSavedParameters="Input\_Detents"> <True> <USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK>True</USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK> </True> <False> <USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK>False</USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK> </False> </Condition> </Parameters> <Parameters Type="Default"> <INPUT\_VALUE>p1</INPUT\_VALUE> <MAP\_INPUT\_VALUE>@16K /</MAP\_INPUT\_VALUE> <MAP\_AXIS\_VALUE>@16K / 1 + 0.5 \*</MAP\_AXIS\_VALUE> <DECREMENT>p0 \#THROTTLE\_INCREMENT\_SCALE\# \* -</DECREMENT> <INCREMENT>p0 \#THROTTLE\_INCREMENT\_SCALE\# \* +</INCREMENT> <THROTTLE\_CUT\_VALUE>0</THROTTLE\_CUT\_VALUE> <THROTTLE\_FULL\_VALUE>1</THROTTLE\_FULL\_VALUE> <SET\_ALL\_REVERSE\_THRUST\_ENABLED>(>A:GENERAL ENG REVERSE THRUST ENGAGED:0, Bool)</SET\_ALL\_REVERSE\_THRUST\_ENABLED> <Condition CheckSavedParameters="Input\_Detents"> <CLAMP\_ALL\_THROTTLES>(O:\_Input\_ALL\_THROTTLES\_Range\_Min) (O:\_Input\_ALL\_THROTTLES\_Range\_Max) @Clamp</CLAMP\_ALL\_THROTTLES> </Condition> </Parameters> <Condition Check="THROTTLE\_CUT\_VALUE" Match="0"> <Parameters Type="Default"> <THROTTLE\_CUT\_AT\_ZERO>True</THROTTLE\_CUT\_AT\_ZERO> </Parameters> </Condition> <Parameters Type="Override"> <Loop> <Setup> <Param>THROTTLE\_NAME</Param> <Value>THROTTLE\_INDEX</Value> <Parameters> <LoadParameters ID="Throttles"/> <RemoveSavedParameters ID="Throttles"/> </Parameters> </Setup> <Do> <Parameters Type="Default"> <IS\_REVERSE\_THRUST\_ENABLED>(A:GENERAL ENG REVERSE THRUST ENGAGED:\#THROTTLE\_INDEX\#, Bool)</IS\_REVERSE\_THRUST\_ENABLED> <SET\_REVERSE\_THRUST\_ENABLED>(>A:GENERAL ENG REVERSE THRUST ENGAGED:\#THROTTLE\_INDEX\#, Bool)</SET\_REVERSE\_THRUST\_ENABLED> <GET\_POSITION\_PCT\_OVER\_100>(B:\#THROTTLE\_NAME\#, percent over 100)</GET\_POSITION\_PCT\_OVER\_100> <GET\_GATES>\#THROTTLE\_NAME\#\_CURVE</GET\_GATES> <GET\_GATES\_CONFIG>\#THROTTLE\_NAME\#\_CURVE\_CONFIG</GET\_GATES\_CONFIG> </Parameters> <Parameters Type="Default"> <Condition NotEmpty="PFN\_MAP\_SETTABLE\_VALUE"> <True> <UseParametersFn Name="\#PFN\_MAP\_SETTABLE\_VALUE\#"/> </True> <False> <Condition Valid="THROTTLE\_CUT\_AT\_ZERO"> <True> <MAP\_SETTABLE\_VALUE/> </True> <False> <MAP\_SETTABLE\_VALUE>0 1 \#THROTTLE\_CUT\_VALUE\# 0 \#THROTTLE\_FULL\_VALUE\# \#IS\_REVERSE\_THRUST\_ENABLED\# ? @MapRange</MAP\_SETTABLE\_VALUE> </False> </Condition> </False> </Condition> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <INPUT\_NAME>KEY\_THROTTLE\_INCR</INPUT\_NAME> <OUT\_PARAM\_NAME>GLB\_CLAMP\_THROTTLE\_INCR</OUT\_PARAM\_NAME> <VAR\_UID>\#THROTTLE\_NAME\#</VAR\_UID> <OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE>GLB\_SET\_CAN\_BYPASS\_GATE</OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE> </UseParametersFn> <UseParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <INPUT\_NAME>KEY\_THROTTLE\_DECR</INPUT\_NAME> <OUT\_PARAM\_NAME>GLB\_CLAMP\_THROTTLE\_DECR</OUT\_PARAM\_NAME> <VAR\_UID>\#THROTTLE\_NAME\#</VAR\_UID> <OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE>GLB\_SET\_CAN\_BYPASS\_GATE</OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE> </UseParametersFn> <Condition Valid="USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK"> <False> <UseParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <INPUT\_NAME>KEY\_THROTTLE\#THROTTLE\_INDEX\#\_INCR</INPUT\_NAME> <OUT\_PARAM\_NAME>CLAMP\_THROTTLE\_INCR</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Gates\_Input\_Handling"> <INPUT\_NAME>KEY\_THROTTLE\#THROTTLE\_INDEX\#\_DECR</INPUT\_NAME> <OUT\_PARAM\_NAME>CLAMP\_THROTTLE\_DECR</OUT\_PARAM\_NAME> </UseParametersFn> </False> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK"> <True> <SET\_CAN\_BYPASS\_GATE\_TO\_TRUE>1 \#GLB\_SET\_CAN\_BYPASS\_GATE\#</SET\_CAN\_BYPASS\_GATE\_TO\_TRUE> </True> <False> <SET\_CAN\_BYPASS\_GATE\_TO\_TRUE>1 \#SET\_CAN\_BYPASS\_GATE\# 1 \#GLB\_SET\_CAN\_BYPASS\_GATE\#</SET\_CAN\_BYPASS\_GATE\_TO\_TRUE> </False> </Condition> </Parameters> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Add\_Update\_Helper"> <UPDATE\_ONCE>True</UPDATE\_ONCE> <UPDATE\_CODE>\#GET\_POSITION\_PCT\_OVER\_100\# sp0 \#IS\_AT\_ANY\_GATE\_CHECK\# if{ \#SET\_CAN\_BYPASS\_GATE\_TO\_TRUE\# }</UPDATE\_CODE> </UseParametersFn> <Condition NotEmpty="THROTTLE\_FULL\_ALIAS\_ID"> <True> <THIS\_THROTTLE\_FULL>(>B:\#THROTTLE\_NAME\#\_\#THROTTLE\_FULL\_ALIAS\_ID\#)</THIS\_THROTTLE\_FULL> </True> <False> <THIS\_THROTTLE\_FULL>\#THROTTLE\_FULL\_VALUE\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_FULL> </False> </Condition> <Condition NotEmpty="THROTTLE\_CUT\_ALIAS\_ID"> <True> <THIS\_THROTTLE\_CUT>(>B:\#THROTTLE\_NAME\#\_\#THROTTLE\_CUT\_ALIAS\_ID\#)</THIS\_THROTTLE\_CUT> </True> <False> <THIS\_THROTTLE\_CUT>\#THROTTLE\_CUT\_VALUE\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_CUT> </False> </Condition> <INCREMENT\_THIS\_THROTTLE>\#GET\_POSITION\_PCT\_OVER\_100\# \#INCREMENT\#</INCREMENT\_THIS\_THROTTLE> <DECREMENT\_THIS\_THROTTLE>\#GET\_POSITION\_PCT\_OVER\_100\# \#DECREMENT\#</DECREMENT\_THIS\_THROTTLE> <THIS\_THROTTLE\_SET>\#INPUT\_VALUE\# \#MAP\_INPUT\_VALUE\# \#MAP\_SETTABLE\_VALUE\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_SET> <THIS\_THROTTLE\_AXIS\_SET>\#INPUT\_VALUE\# \#MAP\_AXIS\_VALUE\# \#MAP\_SETTABLE\_VALUE\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_AXIS\_SET> <THIS\_THROTTLE\_RESET\_IN\_RANGE> \#GET\_POSITION\_PCT\_OVER\_100\# sp0 \#IS\_REVERSE\_THRUST\_ENABLED\# if{ l0 \#THROTTLE\_CUT\_VALUE\# > if{ l0 \#THROTTLE\_CUT\_VALUE\# \#THROTTLE\_FULL\_VALUE\# \#THROTTLE\_CUT\_VALUE\# 0 @MapRange (>B:\#THROTTLE\_NAME\#\_SET) } } els{ l0 \#THROTTLE\_CUT\_VALUE\# < if{ l0 0 \#THROTTLE\_CUT\_VALUE\# \#THROTTLE\_FULL\_VALUE\# \#THROTTLE\_CUT\_VALUE\# @MapRange (>B:\#THROTTLE\_NAME\#\_SET) } } </THIS\_THROTTLE\_RESET\_IN\_RANGE> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_INCR</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_INCR</OUT\_PARAM\_NAME> <THIS\_THROTTLE\_INCR>\#INCREMENT\_THIS\_THROTTLE\# \#GLB\_CLAMP\_THROTTLE\_INCR\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_INCR> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_DECR</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_DECR</OUT\_PARAM\_NAME> <THIS\_THROTTLE\_DECR>\#DECREMENT\_THIS\_THROTTLE\# \#GLB\_CLAMP\_THROTTLE\_DECR\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_DECR> </UseParametersFn> <Condition CheckSavedParameters="Input\_Detents"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_INCR\_IN\_RANGE</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_INCR\_IN\_RANGE</OUT\_PARAM\_NAME> <THIS\_THROTTLE\_INCR\_IN\_RANGE>\#INCREMENT\_THIS\_THROTTLE\# \#CLAMP\_ALL\_THROTTLES\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_INCR\_IN\_RANGE> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_DECR\_IN\_RANGE</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_DECR\_IN\_RANGE</OUT\_PARAM\_NAME> <THIS\_THROTTLE\_DECR\_IN\_RANGE>\#DECREMENT\_THIS\_THROTTLE\# \#CLAMP\_ALL\_THROTTLES\# (>B:\#THROTTLE\_NAME\#\_SET)</THIS\_THROTTLE\_DECR\_IN\_RANGE> </UseParametersFn> </Condition> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_FULL</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_FULL</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_CUT</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_CUT</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_SET</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_SET</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_AXIS\_SET</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_AXIS\_SET</OUT\_PARAM\_NAME> </UseParametersFn> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THIS\_THROTTLE\_RESET\_IN\_RANGE</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_RESET\_IN\_RANGE</OUT\_PARAM\_NAME> </UseParametersFn> <Condition CheckSavedParameters="Input\_Detents"> <UseParametersFn Name="ASOBO\_Append\_If\_Necessary\_Helper"> <PARAM>THROTTLE\_SET\_TO\_L0</PARAM> <OUT\_PARAM\_NAME>ALL\_THROTTLE\_SET\_TO\_L0</OUT\_PARAM\_NAME> <THROTTLE\_SET\_TO\_L0>l0 (>B:\#THROTTLE\_NAME\#\_SET)</THROTTLE\_SET\_TO\_L0> </UseParametersFn> <Condition Check="GET\_1ST\_THROTTLE\_POSITION"> <False> <GET\_1ST\_THROTTLE\_POSITION>\#GET\_POSITION\_PCT\_OVER\_100\#</GET\_1ST\_THROTTLE\_POSITION> </False> </Condition> </Condition> </Parameters> <SaveParameters ID="Throttle\_Key\_Events\_To\_Intercept" Append="Override"> <Condition Valid="USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK"> <False> <THROTTLE\#THROTTLE\_INDEX\#\_INCR>\#INCREMENT\_THIS\_THROTTLE\# \#CLAMP\_THROTTLE\_INCR\# (>B:\#THROTTLE\_NAME\#\_SET)</THROTTLE\#THROTTLE\_INDEX\#\_INCR> <THROTTLE\#THROTTLE\_INDEX\#\_DECR>\#DECREMENT\_THIS\_THROTTLE\# \#CLAMP\_THROTTLE\_DECR\# (>B:\#THROTTLE\_NAME\#\_SET)</THROTTLE\#THROTTLE\_INDEX\#\_DECR> <THROTTLE\#THROTTLE\_INDEX\#\_FULL>\#THIS\_THROTTLE\_FULL\#</THROTTLE\#THROTTLE\_INDEX\#\_FULL> <THROTTLE\#THROTTLE\_INDEX\#\_CUT>\#THIS\_THROTTLE\_CUT\#</THROTTLE\#THROTTLE\_INDEX\#\_CUT> </False> </Condition> <THROTTLE\#THROTTLE\_INDEX\#\_SET>\#THIS\_THROTTLE\_SET\#</THROTTLE\#THROTTLE\_INDEX\#\_SET> <THROTTLE\#THROTTLE\_INDEX\#\_AXIS\_SET\_EX1>\#THIS\_THROTTLE\_AXIS\_SET\#</THROTTLE\#THROTTLE\_INDEX\#\_AXIS\_SET\_EX1> <THROTTLE\#THROTTLE\_INDEX\#\_IDLE>\#THIS\_THROTTLE\_CUT\#</THROTTLE\#THROTTLE\_INDEX\#\_IDLE> <TOGGLE\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST>\#IS\_REVERSE\_THRUST\_ENABLED\# ! \#SET\_REVERSE\_THRUST\_ENABLED\# \#THIS\_THROTTLE\_RESET\_IN\_RANGE\#</TOGGLE\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST> <SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_ON>1 \#SET\_REVERSE\_THRUST\_ENABLED\# \#THIS\_THROTTLE\_RESET\_IN\_RANGE\#</SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_ON> <SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_OFF>0 \#SET\_REVERSE\_THRUST\_ENABLED\# \#THIS\_THROTTLE\_RESET\_IN\_RANGE\#</SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_OFF> </SaveParameters> <Condition CheckSavedParameters="Input\_Detents"> <Condition Valid="USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK"> <UseParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Key\_Events\_To\_Intercepts"> <GET\_THROTTLE\_POSITION>\#GET\_POSITION\_PCT\_OVER\_100\#</GET\_THROTTLE\_POSITION> <THROTTLE\_INCR\_IN\_RANGE\_VALUE>\#INCREMENT\_THIS\_THROTTLE\#</THROTTLE\_INCR\_IN\_RANGE\_VALUE> <THROTTLE\_DECR\_IN\_RANGE\_VALUE>\#DECREMENT\_THIS\_THROTTLE\#</THROTTLE\_DECR\_IN\_RANGE\_VALUE> <THROTTLE\_SET\_TO\_L0>l0 (>B:\#THROTTLE\_NAME\#\_SET)</THROTTLE\_SET\_TO\_L0> <EV\_RANGE\_INC\_THROTTLE>THROTTLE\#THROTTLE\_INDEX\#\_INCR</EV\_RANGE\_INC\_THROTTLE> <EV\_RANGE\_DEC\_THROTTLE>THROTTLE\#THROTTLE\_INDEX\#\_DECR</EV\_RANGE\_DEC\_THROTTLE> <EV\_RANGE\_NEXT\_DETENT>THROTTLE\#THROTTLE\_INDEX\#\_FULL</EV\_RANGE\_NEXT\_DETENT> <EV\_RANGE\_PREV\_DETENT>THROTTLE\#THROTTLE\_INDEX\#\_CUT</EV\_RANGE\_PREV\_DETENT> </UseParametersFn> </Condition> </Condition> </Do> <Then> <SaveParameters ID="Throttle\_Key\_Events\_To\_Intercept" Append="Override"> <THROTTLE\_INCR>\#ALL\_THROTTLE\_INCR\#</THROTTLE\_INCR> <THROTTLE\_DECR>\#ALL\_THROTTLE\_DECR\#</THROTTLE\_DECR> <THROTTLE\_CUT>\#ALL\_THROTTLE\_CUT\#</THROTTLE\_CUT> <THROTTLE\_IDLE>\#ALL\_THROTTLE\_CUT\#</THROTTLE\_IDLE> <THROTTLE\_FULL>\#ALL\_THROTTLE\_FULL\#</THROTTLE\_FULL> <THROTTLE\_SET>\#ALL\_THROTTLE\_SET\#</THROTTLE\_SET> <THROTTLE\_AXIS\_SET\_EX1>\#ALL\_THROTTLE\_AXIS\_SET\#</THROTTLE\_AXIS\_SET\_EX1> <THROTTLE\_REVERSE\_THRUST\_TOGGLE>(A:GENERAL ENG REVERSE THRUST ENGAGED:1, Bool) ! \#SET\_ALL\_REVERSE\_THRUST\_ENABLED\# \#ALL\_THROTTLE\_RESET\_IN\_RANGE\#</THROTTLE\_REVERSE\_THRUST\_TOGGLE> <THROTTLE\_REVERSE\_THRUST\_HOLD>p1 \#SET\_ALL\_REVERSE\_THRUST\_ENABLED\# \#ALL\_THROTTLE\_RESET\_IN\_RANGE\#</THROTTLE\_REVERSE\_THRUST\_HOLD> <SET\_THROTTLE\_REVERSE\_THRUST\_ON>1 \#SET\_ALL\_REVERSE\_THRUST\_ENABLED\# \#ALL\_THROTTLE\_RESET\_IN\_RANGE\#</SET\_THROTTLE\_REVERSE\_THRUST\_ON> <SET\_THROTTLE\_REVERSE\_THRUST\_OFF>0 \#SET\_ALL\_REVERSE\_THRUST\_ENABLED\# \#ALL\_THROTTLE\_RESET\_IN\_RANGE\#</SET\_THROTTLE\_REVERSE\_THRUST\_OFF> </SaveParameters> <Condition CheckSavedParameters="Input\_Detents"> <ALL\_THROTTLE\_SET\_TO\_L0>\#ALL\_THROTTLE\_SET\_TO\_L0\#</ALL\_THROTTLE\_SET\_TO\_L0> <ALL\_THROTTLE\_INCR\_IN\_RANGE>\#ALL\_THROTTLE\_INCR\_IN\_RANGE\#</ALL\_THROTTLE\_INCR\_IN\_RANGE> <ALL\_THROTTLE\_DECR\_IN\_RANGE>\#ALL\_THROTTLE\_DECR\_IN\_RANGE\#</ALL\_THROTTLE\_DECR\_IN\_RANGE> <GET\_1ST\_THROTTLE\_POSITION>\#GET\_1ST\_THROTTLE\_POSITION\#</GET\_1ST\_THROTTLE\_POSITION> </Condition> </Then> </Loop> </Parameters> <Condition CheckSavedParameters="Input\_Detents"> <Parameters Type="Override"> <UseParametersFn Name="ASOBO\_Get\_Throttle\_Detent\_Key\_Events\_To\_Intercepts"> <GET\_THROTTLE\_POSITION>\#GET\_1ST\_THROTTLE\_POSITION\#</GET\_THROTTLE\_POSITION> <THROTTLE\_INCR\_IN\_RANGE>\#ALL\_THROTTLE\_INCR\_IN\_RANGE\#</THROTTLE\_INCR\_IN\_RANGE> <THROTTLE\_DECR\_IN\_RANGE>\#ALL\_THROTTLE\_DECR\_IN\_RANGE\#</THROTTLE\_DECR\_IN\_RANGE> <THROTTLE\_SET\_TO\_L0>\#ALL\_THROTTLE\_SET\_TO\_L0\#</THROTTLE\_SET\_TO\_L0> <THROTTLE\_NAME>ALL\_THROTTLES</THROTTLE\_NAME> <IS\_ALLOWED\_TO\_RESET\_BOUNDS>False</IS\_ALLOWED\_TO\_RESET\_BOUNDS> <EV\_RANGE\_INC\_THROTTLE>THROTTLE\_INCR</EV\_RANGE\_INC\_THROTTLE> <EV\_RANGE\_DEC\_THROTTLE>THROTTLE\_DECR</EV\_RANGE\_DEC\_THROTTLE> <EV\_RANGE\_NEXT\_DETENT>THROTTLE\_FULL</EV\_RANGE\_NEXT\_DETENT> <EV\_RANGE\_PREV\_DETENT>THROTTLE\_CUT</EV\_RANGE\_PREV\_DETENT> </UseParametersFn> </Parameters> </Condition> <ReturnParameters> <LoadParameters ID="Throttle\_Key\_Events\_To\_Intercept"/> <RemoveSavedParameters ID="Throttle\_Key\_Events\_To\_Intercept"/> </ReturnParameters> </ParametersFn> Parameters initialization: - Default Parameters set: - THROTTLE\_INCREMENT\_SCALE Condition: CheckSavedParameters(Input\_Detents) - Case: True Parameters set: - USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK - Case: False Parameters set: - USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK - Default Parameters set: - INPUT\_VALUE - MAP\_INPUT\_VALUE - MAP\_AXIS\_VALUE - DECREMENT (using THROTTLE\_INCREMENT\_SCALE) - INCREMENT (using THROTTLE\_INCREMENT\_SCALE) - THROTTLE\_CUT\_VALUE - THROTTLE\_FULL\_VALUE - SET\_ALL\_REVERSE\_THRUST\_ENABLED Condition: CheckSavedParameters(Input\_Detents) - Case: True Parameters set: - CLAMP\_ALL\_THROTTLES - Override Parameters read: - THROTTLE\_INDEX Parameters set: - THROTTLE\_NAME - IS\_REVERSE\_THRUST\_ENABLED (using THROTTLE\_INDEX) - SET\_REVERSE\_THRUST\_ENABLED (using THROTTLE\_INDEX) - GET\_POSITION\_PCT\_OVER\_100 (using THROTTLE\_NAME) - GET\_GATES (using THROTTLE\_NAME) - GET\_GATES\_CONFIG (using THROTTLE\_NAME) - INCREMENT\_THIS\_THROTTLE (using GET\_POSITION\_PCT\_OVER\_100, INCREMENT) - DECREMENT\_THIS\_THROTTLE (using GET\_POSITION\_PCT\_OVER\_100, DECREMENT) - THIS\_THROTTLE\_SET (using INPUT\_VALUE, MAP\_INPUT\_VALUE, MAP\_SETTABLE\_VALUE, THROTTLE\_NAME) - THIS\_THROTTLE\_AXIS\_SET (using INPUT\_VALUE, MAP\_AXIS\_VALUE, MAP\_SETTABLE\_VALUE, THROTTLE\_NAME) - THIS\_THROTTLE\_RESET\_IN\_RANGE (using GET\_POSITION\_PCT\_OVER\_100, IS\_REVERSE\_THRUST\_ENABLED, THROTTLE\_CUT\_VALUE, THROTTLE\_FULL\_VALUE, THROTTLE\_NAME) - THROTTLE\#THROTTLE\_INDEX\#\_SET (using THIS\_THROTTLE\_SET) - THROTTLE\#THROTTLE\_INDEX\#\_AXIS\_SET\_EX1 (using THIS\_THROTTLE\_AXIS\_SET) - THROTTLE\#THROTTLE\_INDEX\#\_IDLE (using THIS\_THROTTLE\_CUT) - TOGGLE\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST (using IS\_REVERSE\_THRUST\_ENABLED, SET\_REVERSE\_THRUST\_ENABLED, THIS\_THROTTLE\_RESET\_IN\_RANGE) - SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_ON (using SET\_REVERSE\_THRUST\_ENABLED, THIS\_THROTTLE\_RESET\_IN\_RANGE) - SET\_THROTTLE\#THROTTLE\_INDEX\#\_REVERSE\_THRUST\_OFF (using SET\_REVERSE\_THRUST\_ENABLED, THIS\_THROTTLE\_RESET\_IN\_RANGE) - THROTTLE\_INCR (using ALL\_THROTTLE\_INCR) - THROTTLE\_DECR (using ALL\_THROTTLE\_DECR) - THROTTLE\_CUT (using ALL\_THROTTLE\_CUT) - THROTTLE\_IDLE (using ALL\_THROTTLE\_CUT) - THROTTLE\_FULL (using ALL\_THROTTLE\_FULL) - THROTTLE\_SET (using ALL\_THROTTLE\_SET) - THROTTLE\_AXIS\_SET\_EX1 (using ALL\_THROTTLE\_AXIS\_SET) - THROTTLE\_REVERSE\_THRUST\_TOGGLE (using SET\_ALL\_REVERSE\_THRUST\_ENABLED, ALL\_THROTTLE\_RESET\_IN\_RANGE) - THROTTLE\_REVERSE\_THRUST\_HOLD (using SET\_ALL\_REVERSE\_THRUST\_ENABLED, ALL\_THROTTLE\_RESET\_IN\_RANGE) - SET\_THROTTLE\_REVERSE\_THRUST\_ON (using SET\_ALL\_REVERSE\_THRUST\_ENABLED, ALL\_THROTTLE\_RESET\_IN\_RANGE) - SET\_THROTTLE\_REVERSE\_THRUST\_OFF (using SET\_ALL\_REVERSE\_THRUST\_ENABLED, ALL\_THROTTLE\_RESET\_IN\_RANGE) ParametersFn used: - [ASOBO\_Gates\_Input\_Handling](helpers/#ASOBO_Gates_Input_Handling) Parameters set: - INPUT\_NAME - OUT\_PARAM\_NAME - VAR\_UID (using THROTTLE\_NAME) - OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE - [ASOBO\_Gates\_Input\_Handling](helpers/#ASOBO_Gates_Input_Handling) Parameters set: - INPUT\_NAME - OUT\_PARAM\_NAME - VAR\_UID (using THROTTLE\_NAME) - OUT\_PARAM\_SET\_CAN\_BYPASS\_GATE - [ASOBO\_Add\_Update\_Helper](helpers/#ASOBO_Add_Update_Helper) Parameters set: - UPDATE\_ONCE - UPDATE\_CODE (using GET\_POSITION\_PCT\_OVER\_100, IS\_AT\_ANY\_GATE\_CHECK, SET\_CAN\_BYPASS\_GATE\_TO\_TRUE) - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - THIS\_THROTTLE\_INCR (using INCREMENT\_THIS\_THROTTLE, GLB\_CLAMP\_THROTTLE\_INCR, THROTTLE\_NAME) - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - THIS\_THROTTLE\_DECR (using DECREMENT\_THIS\_THROTTLE, GLB\_CLAMP\_THROTTLE\_DECR, THROTTLE\_NAME) - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME Condition: NotEmpty(PFN\_MAP\_SETTABLE\_VALUE) - Case: True Parameters read: - PFN\_MAP\_SETTABLE\_VALUE ParametersFn used: - \#PFN\_MAP\_SETTABLE\_VALUE\# - Case: False Condition: Valid(THROTTLE\_CUT\_AT\_ZERO) - Case: True Parameters set: - MAP\_SETTABLE\_VALUE - Case: False Parameters set: - MAP\_SETTABLE\_VALUE (using THROTTLE\_CUT\_VALUE, THROTTLE\_FULL\_VALUE, IS\_REVERSE\_THRUST\_ENABLED) Condition: Valid(USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK) - Case: False ParametersFn used: - [ASOBO\_Gates\_Input\_Handling](helpers/#ASOBO_Gates_Input_Handling) Parameters set: - INPUT\_NAME (using THROTTLE\_INDEX) - OUT\_PARAM\_NAME - [ASOBO\_Gates\_Input\_Handling](helpers/#ASOBO_Gates_Input_Handling) Parameters set: - INPUT\_NAME (using THROTTLE\_INDEX) - OUT\_PARAM\_NAME Condition: Valid(USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK) - Case: True Parameters set: - SET\_CAN\_BYPASS\_GATE\_TO\_TRUE (using GLB\_SET\_CAN\_BYPASS\_GATE) - Case: False Parameters set: - SET\_CAN\_BYPASS\_GATE\_TO\_TRUE (using SET\_CAN\_BYPASS\_GATE, GLB\_SET\_CAN\_BYPASS\_GATE) Condition: NotEmpty(THROTTLE\_FULL\_ALIAS\_ID) - Case: True Parameters set: - THIS\_THROTTLE\_FULL (using THROTTLE\_NAME, THROTTLE\_FULL\_ALIAS\_ID) - Case: False Parameters set: - THIS\_THROTTLE\_FULL (using THROTTLE\_FULL\_VALUE, THROTTLE\_NAME) Condition: NotEmpty(THROTTLE\_CUT\_ALIAS\_ID) - Case: True Parameters set: - THIS\_THROTTLE\_CUT (using THROTTLE\_NAME, THROTTLE\_CUT\_ALIAS\_ID) - Case: False Parameters set: - THIS\_THROTTLE\_CUT (using THROTTLE\_CUT\_VALUE, THROTTLE\_NAME) Condition: CheckSavedParameters(Input\_Detents) - Case: True ParametersFn used: - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - THIS\_THROTTLE\_INCR\_IN\_RANGE (using INCREMENT\_THIS\_THROTTLE, CLAMP\_ALL\_THROTTLES, THROTTLE\_NAME) - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - THIS\_THROTTLE\_DECR\_IN\_RANGE (using DECREMENT\_THIS\_THROTTLE, CLAMP\_ALL\_THROTTLES, THROTTLE\_NAME) Condition: CheckSavedParameters(Input\_Detents) - Case: True ParametersFn used: - [ASOBO\_Append\_If\_Necessary\_Helper](helpers/#ASOBO_Append_If_Necessary_Helper) Parameters set: - PARAM - OUT\_PARAM\_NAME - THROTTLE\_SET\_TO\_L0 (using THROTTLE\_NAME) Condition: Check(GET\_1ST\_THROTTLE\_POSITION) - Case: False Parameters set: - GET\_1ST\_THROTTLE\_POSITION (using GET\_POSITION\_PCT\_OVER\_100) Condition: Valid(USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK) - Case: False Parameters set: - THROTTLE\#THROTTLE\_INDEX\#\_INCR (using INCREMENT\_THIS\_THROTTLE, CLAMP\_THROTTLE\_INCR, THROTTLE\_NAME) - THROTTLE\#THROTTLE\_INDEX\#\_DECR (using DECREMENT\_THIS\_THROTTLE, CLAMP\_THROTTLE\_DECR, THROTTLE\_NAME) - THROTTLE\#THROTTLE\_INDEX\#\_FULL (using THIS\_THROTTLE\_FULL) - THROTTLE\#THROTTLE\_INDEX\#\_CUT (using THIS\_THROTTLE\_CUT) Condition: CheckSavedParameters(Input\_Detents) - Case: True Condition: Valid(USE\_INDIVIDUAL\_THROTTLE\_RANGE\_LOCK) - Case: True ParametersFn used: - [ASOBO\_Get\_Throttle\_Detent\_Key\_Events\_To\_Intercepts](helpers/#ASOBO_Get_Throttle_Detent_Key_Events_To_Intercepts) Parameters set: - GET\_THROTTLE\_POSITION (using GET\_POSITION\_PCT\_OVER\_100) - THROTTLE\_INCR\_IN\_RANGE\_VALUE (using INCREMENT\_THIS\_THROTTLE) - THROTTLE\_DECR\_IN\_RANGE\_VALUE (using DECREMENT\_THIS\_THROTTLE) - THROTTLE\_SET\_TO\_L0 (using THROTTLE\_NAME) - EV\_RANGE\_INC\_THROTTLE (using THROTTLE\_INDEX) - EV\_RANGE\_DEC\_THROTTLE (using THROTTLE\_INDEX) - EV\_RANGE\_NEXT\_DETENT (using THROTTLE\_INDEX) - EV\_RANGE\_PREV\_DETENT (using THROTTLE\_INDEX) Condition: CheckSavedParameters(Input\_Detents) - Case: True Parameters set: - ALL\_THROTTLE\_SET\_TO\_L0 (using ALL\_THROTTLE\_SET\_TO\_L0) - ALL\_THROTTLE\_INCR\_IN\_RANGE (using ALL\_THROTTLE\_INCR\_IN\_RANGE) - ALL\_THROTTLE\_DECR\_IN\_RANGE (using ALL\_THROTTLE\_DECR\_IN\_RANGE) - GET\_1ST\_THROTTLE\_POSITION (using GET\_1ST\_THROTTLE\_POSITION)