[Go back to index]

Asobo\Generic\Subtemplates\Interactions_Subtemplates.xml

Source XML
<ModelBehaviors> <Macro Name="IsUsingRelativePos">(M:InputType) 1 ==</Macro> <Macro Name="DragLockResetTimer">0.05 0.10 @IsUsingRelativePos ?</Macro> <Template Name = "ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate1"> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate2"> <Condition Check="WHEEL_DOWN_CODE"> <MOUSEFLAGS>#MOUSEFLAGS#+WheelDown</MOUSEFLAGS> <MOUSE_WHEEL_INPUTS> els{ (M:Event) 'WheelDown' scmi 0 == if{ #WHEEL_DOWN_CODE# } #MOUSE_WHEEL_INPUTS# }</MOUSE_WHEEL_INPUTS> </Condition> </UseTemplate> </Template> <Template Name = "ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate2"> <DefaultTemplateParameters> </DefaultTemplateParameters> <UseTemplate Name="ASOBO_GT_MouseRect"> <CALLBACKCODE> (M:Event) 'Lock' scmi 0 == if{ #LEFT_SINGLE_CODE# } els{ (M:Event) 'Unlock' scmi 0 == if{ #LEFT_LEAVE_CODE# } #MOUSE_WHEEL_INPUTS# } </CALLBACKCODE> </UseTemplate> </Template> <!-- DO NOT CALL THIS TEMPLATE - Use GT_Interaction_LeftSingle_MultiStates instead --> <Template Name = "ASOBO_GT_Interaction_LeftSingle_ParamSetup"> <DefaultTemplateParameters> <ON_STATE_CHANGED_EXTERNAL_CODE/> <Condition Check="MOMENTARY_SWITCH"> <STATE0_TIMER>0</STATE0_TIMER> <Condition NotEmpty="STATEMAX_TIMER"> <!-- This allows STATEMAX_TIMER to be equivalent to STATE_MAX_TIMER, which is more logical considering STATE0_TIMER doesn't have a space between STATE and 0 --> <True> <STATE_MAX_TIMER>#STATEMAX_TIMER#</STATE_MAX_TIMER> </True> <False> <STATE_MAX_TIMER>0</STATE_MAX_TIMER> </False> </Condition> </Condition> <MOMENTARY_REPEAT_DELAY>0.5</MOMENTARY_REPEAT_DELAY> </DefaultTemplateParameters> <OverrideTemplateParameters> <START_STATE Process="Int">#NUM_STATES# 1 -</START_STATE> <Condition Check="MOMENTARY_SWITCH"> <True> <MOMENTARY_UP_0> #STATE0_TIMER# 0 &gt; if{ (E:SIMULATION TIME, seconds) #STATE0_TIMER# + (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) (E:SIMULATION TIME, seconds) #MOMENTARY_REPEAT_DELAY# + (&gt;O:XMLVAR_Repeat_StartTime) } els{ 0 (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } 0 1 l1 ? (&gt;#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#) </MOMENTARY_UP_0> <CODE_RELEASE>0 (&gt;#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#)</CODE_RELEASE> </True> <False> <MOMENTARY_UP_0></MOMENTARY_UP_0> </False> </Condition> <Condition Valid="DISABLE_ON_STATE_CHANGED_EXTERNAL_CODE_IN_MR"> <ON_STATE_CHANGED_EXTERNAL_CODE/> </Condition> </OverrideTemplateParameters> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1"> <CURRENT_ID>#START_STATE#</CURRENT_ID> <POS_MAX>#START_STATE#</POS_MAX> </UseTemplate> </Template> <Template Name = "ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1"> <DefaultTemplateParameters> <CODE_POS_#CURRENT_ID#_VERIF>1</CODE_POS_#CURRENT_ID#_VERIF> <ANIMTIP_#CURRENT_ID#_ON_PERCENT Process="Float">#CURRENT_ID# #POS_MAX# /</ANIMTIP_#CURRENT_ID#_ON_PERCENT> </DefaultTemplateParameters> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_2"> <CURRENT_ENUM_VAL_POS Process="Param">ENUM_VAL_POS_#CURRENT_ID#</CURRENT_ENUM_VAL_POS> </UseTemplate> </Template> <Template Name = "ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_2"> <DefaultTemplateParameters> <Condition NotEmpty="CURRENT_ENUM_VAL_POS"> <True> <CODE_POS_#CURRENT_ID#> (A:#ENUM_SIMVAR#, Enum) #CURRENT_ENUM_VAL_POS# != if{ #CURRENT_ENUM_VAL_POS# (&gt;K:#ENUM_KEY#) } </CODE_POS_#CURRENT_ID#> </True> <False> <CODE_POS_#CURRENT_ID#/> </False> </Condition> </DefaultTemplateParameters> <OverrideTemplateParameters> <CURRENT_ID Process="Int">#CURRENT_ID# 1 -</CURRENT_ID> </OverrideTemplateParameters> <Condition> <Test> <GreaterOrEqual> <Value>CURRENT_ID</Value> <Number>0</Number> </GreaterOrEqual> </Test> <True> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1"> </UseTemplate> </True> <False> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive"> <CURRENT_ID>#START_STATE#</CURRENT_ID> <NEXT_ID Process="Int">#START_STATE# 1 -</NEXT_ID> <CODE_POS_MAX Process="Param">CODE_POS_#START_STATE#</CODE_POS_MAX> <CODE_POS_MAX_VERIF Process="Param">CODE_POS_#START_STATE#_VERIF</CODE_POS_MAX_VERIF> <ELSE_BRACKET_OPENING>els{</ELSE_BRACKET_OPENING> <ELSE_BRACKET_CLOSING>}</ELSE_BRACKET_CLOSING> </UseTemplate> </False> </Condition> </Template> <Template Name = "ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive"> <DefaultTemplateParameters> <Condition Check="MOMENTARY_SWITCH"> <True> <Condition Check="MOMENTARY_SWITCH_DOWN_SET"> <True> <MOMENTARY_UP_#CURRENT_ID#></MOMENTARY_UP_#CURRENT_ID#> </True> <False> <MOMENTARY_SWITCH_DOWN_SET/> <MOMENTARY_UP_#CURRENT_ID#> #STATE_MAX_TIMER# 0 &gt; if{ (E:SIMULATION TIME, seconds) #STATE_MAX_TIMER# + (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) (E:SIMULATION TIME, seconds) #MOMENTARY_REPEAT_DELAY# + (&gt;O:XMLVAR_Repeat_StartTime) } els{ 0 (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } 0 1 l1 ? (&gt;#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#) </MOMENTARY_UP_#CURRENT_ID#> <MOMENTARY_SWITCH_DOWN_INDEX>#CURRENT_ID#</MOMENTARY_SWITCH_DOWN_INDEX> <REST_STATE>#NEXT_ID#</REST_STATE> <CODE_POS_RETURN Process="Param">CODE_POS_#NEXT_ID#</CODE_POS_RETURN> </False> </Condition> </True> <False> <MOMENTARY_UP_#CURRENT_ID#></MOMENTARY_UP_#CURRENT_ID#> </False> </Condition> <THRESHOLD_MOUSE>0.03</THRESHOLD_MOUSE> <THRESHOLD_INPUT>0.05</THRESHOLD_INPUT> </DefaultTemplateParameters> <OverrideTemplateParameters> <CURRENT_POS_VERIF Process="Param">CODE_POS_#CURRENT_ID#_VERIF</CURRENT_POS_VERIF> <NEXT_POS_VERIF Process="Param">CODE_POS_#NEXT_ID#_VERIF</NEXT_POS_VERIF> <CURRENT_CODE_POS Process="Param">CODE_POS_#CURRENT_ID#</CURRENT_CODE_POS> <NEXT_CODE_POS Process="Param">CODE_POS_#NEXT_ID#</NEXT_CODE_POS> <CURRENT_MOMENTARY_UP Process="Param">MOMENTARY_UP_#CURRENT_ID#</CURRENT_MOMENTARY_UP> <NEXT_MOMENTARY_UP Process="Param">MOMENTARY_UP_#NEXT_ID#</NEXT_MOMENTARY_UP> <CURRENT_CODE_REPEAT Process="Param">CODE_REPEAT_#CURRENT_ID#</CURRENT_CODE_REPEAT> <!-- <NEXT_CODE_REPEAT Process="Param">CODE_REPEAT_#NEXT_ID#</NEXT_CODE_REPEAT> --> </OverrideTemplateParameters> <Condition> <Test> <GreaterOrEqual> <Value>NEXT_ID</Value> <Number>0</Number> </GreaterOrEqual> </Test> <True> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive"> <CODE_UP> #CODE_UP# (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CURRENT_ID# == if{ #NEXT_POS_VERIF# if{ #NEXT_ID# (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #NEXT_CODE_POS# #ON_STATE_CHANGED_EXTERNAL_CODE# #NEXT_MOMENTARY_UP# } } #ELSE_BRACKET_OPENING# </CODE_UP> <CODE_UP_CLOSING> #ELSE_BRACKET_CLOSING# #CODE_UP_CLOSING# </CODE_UP_CLOSING> <CODE_DOWN> #ELSE_BRACKET_OPENING# (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #NEXT_ID# == if{ #CURRENT_POS_VERIF# if{ #CURRENT_ID# (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CURRENT_CODE_POS# #ON_STATE_CHANGED_EXTERNAL_CODE# #CURRENT_MOMENTARY_UP# } } #CODE_DOWN# #ELSE_BRACKET_CLOSING# </CODE_DOWN> <Condition Check="NEXT_ID" Match="1"> <True> <ELSE_BRACKET_OPENING></ELSE_BRACKET_OPENING> <ELSE_BRACKET_CLOSING></ELSE_BRACKET_CLOSING> </True> </Condition> <Condition Valid="CURRENT_CODE_REPEAT"> <CODE_REPEAT> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CURRENT_ID# == if{ #CURRENT_CODE_REPEAT# } els{ #CODE_REPEAT# } </CODE_REPEAT> </Condition> <CURRENT_ID>#NEXT_ID#</CURRENT_ID> <NEXT_ID Process="Int">#NEXT_ID# 1 -</NEXT_ID> </UseTemplate> </True> <False> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_1"> <Condition Valid="CURRENT_CODE_REPEAT"> <CODE_REPEAT> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CURRENT_ID# == if{ #CURRENT_CODE_REPEAT# } els{ #CODE_REPEAT# } </CODE_REPEAT> </Condition> </UseTemplate> </False> </Condition> </Template> <!-- DO NOT CALL THIS TEMPLATE - Use GT_Interaction_LeftSingle_MultiStates instead --> <Template Name = "ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_1"> <Parameters Type="Default"> <Condition Check="SWITCH_DIRECTION" Match="Vertical"> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> <DRAG_AXIS>Y</DRAG_AXIS> </Condition> <Condition Check="SWITCH_DIRECTION" Match="Horizontal"> <Condition Check="ARROW_TYPE" Match="Curved"> <True> <LEFTARROW>TurnLeft</LEFTARROW> <RIGHTARROW>TurnRight</RIGHTARROW> </True> <False> <LEFTARROW>LeftArrow</LEFTARROW> <RIGHTARROW>RightArrow</RIGHTARROW> </False> </Condition> <DRAG_AXIS>X</DRAG_AXIS> </Condition> <LEFT_DOWN_CODE/> <LEFT_UP_CODE/> <ANIMCURSOR_MIN>0</ANIMCURSOR_MIN> <Condition Check="ANIM_LENGTH"> <True> <ANIMCURSOR_MAX>#ANIM_LENGTH#</ANIMCURSOR_MAX> </True> <False> <ANIMCURSOR_MAX>100</ANIMCURSOR_MAX> </False> </Condition> <USE_PAD_DRAG_IM_LOCK>True</USE_PAD_DRAG_IM_LOCK> </Parameters> <Parameters Type="Override"> <THRESHOLD_MOUSE>0.001</THRESHOLD_MOUSE> </Parameters> <Parameters Type="Override"> <THRESHOLD>#THRESHOLD_INPUT# #THRESHOLD_MOUSE# (M:InputType) 1 == ?</THRESHOLD> </Parameters> <Parameters Type="Default"> <LOCKABLE_EVENT_PRIMARY>LeftSingle</LOCKABLE_EVENT_PRIMARY> <LOCKABLE_EVENT_SECONDARY>RightSingle</LOCKABLE_EVENT_SECONDARY> <NO_LOCK_EVENT_PRIMARY>RightSingle</NO_LOCK_EVENT_PRIMARY> <NO_LOCK_EVENT_SECONDARY>MiddleSingle</NO_LOCK_EVENT_SECONDARY> <LOCKABLE_HANDLE_CODE_UP/> <NO_LOCK_HANDLE_CODE_UP/> <LOCKABLE_HANDLE_CODE_DN/> <NO_LOCK_HANDLE_CODE_DN/> <ADDITIONAL_MOUSEFLAGS/> <CENTER_HANDLING_CODE_START/> <CENTER_HANDLING_CODE_END/> <Condition> <Test> <Or> <Arg NotEmpty="ON_PRIMARY_EVENT"/> <Arg NotEmpty="ON_SECONDARY_EVENT"/> </Or> </Test> <True> <CENTER_CURSOR>Hand</CENTER_CURSOR> <CENTER_RADIUS>0.004</CENTER_RADIUS> <DEFINE_CENTER_INTERACTION>True</DEFINE_CENTER_INTERACTION> </True> </Condition> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="ON_PRIMARY_EVENT"> <LOCKABLE_HANDLE_CODE_UP>(M:Event) '#LOCKABLE_EVENT_PRIMARY#' scmi 0 == if{ #ON_PRIMARY_EVENT# quit }</LOCKABLE_HANDLE_CODE_UP> <NO_LOCK_HANDLE_CODE_UP>(M:Event) '#NO_LOCK_EVENT_PRIMARY#' scmi 0 == if{ #ON_PRIMARY_EVENT# quit }</NO_LOCK_HANDLE_CODE_UP> <ADDITIONAL_MOUSEFLAGS>+#LOCKABLE_EVENT_PRIMARY#+#NO_LOCK_EVENT_PRIMARY#</ADDITIONAL_MOUSEFLAGS> <CENTER_HANDLING_CODE_END> } els{ #ON_PRIMARY_EVENT# quit } </CENTER_HANDLING_CODE_END> </Condition> <Condition NotEmpty="ON_SECONDARY_EVENT"> <LOCKABLE_HANDLE_CODE_DN>(M:Event) '#LOCKABLE_EVENT_SECONDARY#' scmi 0 == if{ #ON_SECONDARY_EVENT# quit }</LOCKABLE_HANDLE_CODE_DN> <NO_LOCK_HANDLE_CODE_DN>(M:Event) '#NO_LOCK_EVENT_SECONDARY#' scmi 0 == if{ #ON_SECONDARY_EVENT# quit }</NO_LOCK_HANDLE_CODE_DN> <ADDITIONAL_MOUSEFLAGS>+#LOCKABLE_EVENT_SECONDARY#+#NO_LOCK_EVENT_SECONDARY#</ADDITIONAL_MOUSEFLAGS> <CENTER_HANDLING_CODE_END> } els{ #ON_SECONDARY_EVENT# quit } </CENTER_HANDLING_CODE_END> </Condition> <Condition Valid="DEFINE_CENTER_INTERACTION"> <True> <CENTER_HANDLING_CODE_START> (M:Relative#DRAG_AXIS#) abs #CENTER_RADIUS# &gt; if{ </CENTER_HANDLING_CODE_START> </True> </Condition> </Parameters> <Parameters Type="Default"> <LOCKABLE_INPUTS_HANDLING> #LOCKABLE_HANDLE_CODE_UP# #LOCKABLE_HANDLE_CODE_DN# </LOCKABLE_INPUTS_HANDLING> <NO_LOCK_INPUTS_HANDLING> #NO_LOCK_HANDLE_CODE_UP# #NO_LOCK_HANDLE_CODE_DN# </NO_LOCK_INPUTS_HANDLING> </Parameters> <Parameters Type="Default"> <IM_DRAG_ADDITIONAL_EVENT_HANDLING> (M:InputType) 1 == if{ #LOCKABLE_INPUTS_HANDLING# } els{ #NO_LOCK_INPUTS_HANDLING# } </IM_DRAG_ADDITIONAL_EVENT_HANDLING> </Parameters> <Parameters Type="Override"> <Condition Valid="USE_PAD_DRAG_IM_LOCK"> <True> <CHECK_AND_RESET_DRAG_LOCK> (O:_ResetDragTime) (E:SIMULATION TIME, second) &lt; if{ 0 (&gt;O:_IsLimited) } (E:SIMULATION TIME, second) @DragLockResetTimer + (&gt;O:_ResetDragTime) </CHECK_AND_RESET_DRAG_LOCK> <CHECK_IS_DRAG_LOCKED>(O:_IsLimited)</CHECK_IS_DRAG_LOCKED> <SET_DRAG_LOCK>1 (&gt;O:_IsLimited)</SET_DRAG_LOCK> <UNSET_DRAG_LOCK>0 (&gt;O:_IsLimited)</UNSET_DRAG_LOCK> </True> <False> <CHECK_AND_RESET_DRAG_LOCK/> <CHECK_IS_DRAG_LOCKED>0</CHECK_IS_DRAG_LOCKED> <SET_DRAG_LOCK/> <UNSET_DRAG_LOCK/> </False> </Condition> <Condition Valid="INVERT_WHEEL_INTERACTION"> <True> <Switch Param="SWITCH_DIRECTION"> <Case Value="Vertical"> <FLAG_POS_WHEEL_UP>2</FLAG_POS_WHEEL_UP> <FLAG_POS_WHEEL_DN>1</FLAG_POS_WHEEL_DN> </Case> <Case Value="Horizontal"> <FLAG_POS_WHEEL_UP>1</FLAG_POS_WHEEL_UP> <FLAG_POS_WHEEL_DN>2</FLAG_POS_WHEEL_DN> </Case> </Switch> </True> <False> <Switch Param="SWITCH_DIRECTION"> <Case Value="Vertical"> <FLAG_POS_WHEEL_UP>1</FLAG_POS_WHEEL_UP> <FLAG_POS_WHEEL_DN>2</FLAG_POS_WHEEL_DN> </Case> <Case Value="Horizontal"> <FLAG_POS_WHEEL_UP>2</FLAG_POS_WHEEL_UP> <FLAG_POS_WHEEL_DN>1</FLAG_POS_WHEEL_DN> </Case> </Switch> </False> </Condition> <Condition Valid="INVERT_DRAG_POSITIVE_CONDITION"> <True> <DRAG_IS_POSITIVE_CONDITION>&lt;=</DRAG_IS_POSITIVE_CONDITION> </True> <False> <DRAG_IS_POSITIVE_CONDITION>&gt;</DRAG_IS_POSITIVE_CONDITION> </False> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="USE_TRAJECTORY_DRAG_MODE"> <True> <DRAG_CODE_VERTICAL> (M:DragPercent) #NUM_STATES# * flr sp0 l0 (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) &lt; if{ g1 } els{ l0 (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) &gt; if{ g2 } } </DRAG_CODE_VERTICAL> <DRAG_CODE_HORIZONTAL> (M:DragPercent) #NUM_STATES# * flr sp0 l0 (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) &lt; if{ g1 } els{ l0 (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) &gt; if{ g2 } } </DRAG_CODE_HORIZONTAL> </True> <False> <DRAG_CODE_VERTICAL> #CHECK_AND_RESET_DRAG_LOCK# #CHECK_IS_DRAG_LOCKED# if{ (M:RelativeY) (&gt;O:OldMouseY) } els{ (O:OldMouseY) (M:RelativeY) - abs #THRESHOLD# &gt; if{ #SET_DRAG_LOCK# (O:OldMouseY) sp0 (M:RelativeY) (&gt;O:OldMouseY) (M:RelativeY) l0 #DRAG_IS_POSITIVE_CONDITION# if{ g1 } els{ g2 } } } </DRAG_CODE_VERTICAL> <DRAG_CODE_HORIZONTAL> #CHECK_AND_RESET_DRAG_LOCK# #CHECK_IS_DRAG_LOCKED# if{ (M:RelativeX) (&gt;O:OldMouseX) } els{ (O:OldMouseX) (M:RelativeX) - abs #THRESHOLD# &gt; if{ #SET_DRAG_LOCK# (O:OldMouseX) sp0 (M:RelativeX) (&gt;O:OldMouseX) (M:RelativeX) l0 #DRAG_IS_POSITIVE_CONDITION# if{ g2 } els{ g1 } } } </DRAG_CODE_HORIZONTAL> </False> </Condition> </Parameters> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_2"> <Condition Check="IS_LOOPING"> <True> <ANIMCURSOR_MIN>-1</ANIMCURSOR_MIN> <ANIMCURSOR_MAX>-1</ANIMCURSOR_MAX> <CODE_UP> #CODE_UP# els{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == if{ #CODE_POS_MAX_VERIF# if{ #POS_MAX# (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CODE_POS_MAX# #ON_STATE_CHANGED_EXTERNAL_CODE# } } } </CODE_UP> <CODE_DOWN> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #POS_MAX# == if{ #CODE_POS_0_VERIF# if{ 0 (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CODE_POS_0# #ON_STATE_CHANGED_EXTERNAL_CODE# } } els{ #CODE_DOWN# } </CODE_DOWN> </True> </Condition> <Switch Param="SWITCH_DIRECTION"> <Case Value="Vertical"> <INPUT_CODE_IM_DEFAULT> (M:Event) 'WheelUp' scmi 0 == if{ 1 (&gt;O:GoToRelease) g1 } els{ (M:Event) 'WheelDown' scmi 0 == if{ 1 (&gt;O:GoToRelease) g2 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ #CENTER_HANDLING_CODE_START# #LEFT_DOWN_CODE# #CENTER_HANDLING_CODE_END# (M:RelativeY) 0 &gt; if{ g1 } els{ g2 } } els{ (M:Event) 'LeftRelease' scmi 0 == if{ #LEFT_UP_CODE# g3 } } } } quit </INPUT_CODE_IM_DEFAULT> <INPUT_CODE_IM_DRAG> (M:Event) 'Lock' scmi 0 == if{ (M:RelativeY) (&gt;O:OldMouseY) #LEFT_DOWN_CODE# #UNSET_DRAG_LOCK# } els{ (M:Event) 'WheelUp' scmi 0 == if{ 1 sp1 g#FLAG_POS_WHEEL_UP# } els{ (M:Event) 'WheelDown' scmi 0 == if{ 1 sp1 g#FLAG_POS_WHEEL_DN# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ #DRAG_CODE_VERTICAL# } els{ (M:Event) 'Unlock' scmi 0 == if{ #LEFT_UP_CODE# g3 } } } } } quit </INPUT_CODE_IM_DRAG> </Case> <Case Value="Horizontal"> <INPUT_CODE_IM_DEFAULT> (M:Event) 'WheelUp' scmi 0 == if{ 1 (&gt;O:GoToRelease) g2 } els{ (M:Event) 'WheelDown' scmi 0 == if{ 1 (&gt;O:GoToRelease) g1 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ #CENTER_HANDLING_CODE_START# #LEFT_DOWN_CODE# #CENTER_HANDLING_CODE_END# (M:RelativeX) 0 &gt; if{ g2 } els{ g1 } } els{ (M:Event) 'LeftRelease' scmi 0 == if{ #LEFT_UP_CODE# g3 } } } } quit </INPUT_CODE_IM_DEFAULT> <INPUT_CODE_IM_DRAG> (M:Event) 'Lock' scmi 0 == if{ (M:RelativeX) (&gt;O:OldMouseX) #LEFT_DOWN_CODE# #UNSET_DRAG_LOCK# } els{ (M:Event) 'WheelUp' scmi 0 == if{ 1 sp1 g#FLAG_POS_WHEEL_UP# } els{ (M:Event) 'WheelDown' scmi 0 == if{ 1 sp1 g#FLAG_POS_WHEEL_DN# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ #DRAG_CODE_HORIZONTAL# } els{ (M:Event) 'Unlock' scmi 0 == if{ #LEFT_UP_CODE# g3 } } } } } quit </INPUT_CODE_IM_DRAG> </Case> </Switch> </UseTemplate> </Template> <!-- DO NOT CALL THIS TEMPLATE - Use GT_Interaction_LeftSingle_MultiStates instead --> <Template Name = "ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_2"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <SWITCH_POSITION_TYPE>O</SWITCH_POSITION_TYPE> <SWITCH_POSITION_VAR>SwitchState</SWITCH_POSITION_VAR> <CODE_POS_0/> <CODE_POS_1/> <!-- This code is run when the lever should move to the corresponding position Overriding this allows you to specify if some special condition should block the lever from going to that position i.e. : Crash Lever in TBM930 By default, this does not block anything. --> <CODE_POS_0_VERIF>1</CODE_POS_0_VERIF> <CODE_POS_1_VERIF>1</CODE_POS_1_VERIF> <!-- These vars should not be modified outside of generic templates --> <CODE_UP/> <CODE_UP_CLOSING/> <CODE_DOWN/> <CODE_DOWN_CLOSING/> <CODE_RELEASE/> <LEFTARROW/> <RIGHTARROW/> <UPARROW/> <DOWNARROW/> <INPUT_CODE> </INPUT_CODE> <CODE_REPEAT></CODE_REPEAT> <PERCENT_PER_SECONDS>2000</PERCENT_PER_SECONDS> </DefaultTemplateParameters> <OverrideTemplateParameters> <Condition Check="MOMENTARY_SWITCH"> <CODE_POS_REST_STATE Process="Param">CODE_POS_#REST_STATE#</CODE_POS_REST_STATE> </Condition> </OverrideTemplateParameters> <Condition Check="REPEAT_FREQUENCY"> <Update Frequency="#REPEAT_FREQUENCY#"> #CODE_REPEAT# </Update> </Condition> <Condition Check="MOMENTARY_SWITCH"> <Update Frequency = "5"> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #MOMENTARY_SWITCH_DOWN_INDEX# == or if{ (* On Pad disable IsDown when stick is at center *) (M:InputType) 1 == (M:X) abs #THRESHOLD_INPUT# &lt; (M:Y) abs #THRESHOLD_INPUT# &lt; and and if{ 0 (&gt;#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#) } (#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) 0 &gt; if{ (#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) (E:SIMULATION TIME, seconds) &lt; (#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#) ! and if{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == if{ 1 (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CODE_POS_1# } els{ #REST_STATE# (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CODE_POS_REST_STATE# } 0 (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } } els{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == if{ #STATE0_TIMER# 0 &gt; if{ (E:SIMULATION TIME, seconds) #STATE0_TIMER# + (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } } els{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #MOMENTARY_SWITCH_DOWN_INDEX# == if{ #STATE_MAX_TIMER# 0 &gt; if{ (E:SIMULATION TIME, seconds) #STATE_MAX_TIMER# + (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } } els{ 0 (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } } } } } </Update> <Condition Check="MOMENTARY_REPEAT_FREQUENCY"> <True> <Update Frequency="#MOMENTARY_REPEAT_FREQUENCY#" InteractionModel="All"> (O:XMLVAR_Repeat_StartTime) (E:SIMULATION TIME, seconds) &lt; if{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == if{ #CODE_POS_0# } els{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #POS_MAX# == if{ #CODE_POS_MAX# } } } </Update> </True> </Condition> </Condition> <UseTemplate Name="ASOBO_GT_MouseRect"> <MouseFlags>LeftAll+WheelUp+WheelDown+Lock+Unlock#ADDITIONAL_MOUSEFLAGS#</MouseFlags> <ANIMATION_CODE_SETTER>(#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 100 *</ANIMATION_CODE_SETTER> <CALLBACKCODE_DEFAULT_IM> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) (&gt;O:PreviousPos) #INPUT_CODE_IM_DEFAULT# :1 #CODE_UP# #CODE_UP_CLOSING# (O:GoToRelease) if{ g3 } quit :2 #CODE_DOWN# #CODE_DOWN_CLOSING# (O:GoToRelease) if{ g3 } quit :3 0 (&gt;O:GoToRelease) #CODE_RELEASE# quit </CALLBACKCODE_DEFAULT_IM> <CALLBACKCODE_DRAG_IM> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) (&gt;O:PreviousPos) #IM_DRAG_ADDITIONAL_EVENT_HANDLING# #INPUT_CODE_IM_DRAG# :1 (#DRAG_ANIMATION_TARGET_VARIABLE_TYPE#:#DRAG_ANIMATION_TARGET_VARIABLE_NAME#) (#DRAG_ANIMATION_VARIABLE_TYPE#:#DRAG_ANIMATION_VARIABLE_NAME#) == if{ #CODE_UP# #CODE_UP_CLOSING# } quit :2 (#DRAG_ANIMATION_TARGET_VARIABLE_TYPE#:#DRAG_ANIMATION_TARGET_VARIABLE_NAME#) (#DRAG_ANIMATION_VARIABLE_TYPE#:#DRAG_ANIMATION_VARIABLE_NAME#) == if{ #CODE_DOWN# } quit :3 #CODE_RELEASE# quit </CALLBACKCODE_DRAG_IM> </UseTemplate> </Template> <Template Name = "ASOBO_GT_Interaction_WheelAndContinuousLeft_Vertical"> <DefaultTemplateParameters> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="CLOCKWISE_CODE_DRAG_IM"/> </And> </Test> <False> <Condition NotEmpty="CLOCKWISE_CODE"> <True> <CLOCKWISE_CODE_DEFAULT_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DEFAULT_IM> <CLOCKWISE_CODE_DRAG_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DRAG_IM> </True> <False> <CLOCKWISE_CODE_DEFAULT_IM/> <CLOCKWISE_CODE_DRAG_IM/> </False> </Condition> </False> </Condition> <Condition> <Test> <And> <Arg NotEmpty="ANTICLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="ANTICLOCKWISE_CODE_DRAG_IM"/> </And> </Test> <False> <Condition NotEmpty="ANTICLOCKWISE_CODE"> <True> <ANTICLOCKWISE_CODE_DEFAULT_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DEFAULT_IM> <ANTICLOCKWISE_CODE_DRAG_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DRAG_IM> </True> <False> <ANTICLOCKWISE_CODE_DEFAULT_IM/> <ANTICLOCKWISE_CODE_DRAG_IM/> </False> </Condition> </False> </Condition> </DefaultTemplateParameters> <UseTemplate Name="ASOBO_GT_Interaction_WheelAndContinuousLeft_Base"> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> <AXIS>Y</AXIS> <!-- Inverting Clockwise & anticlockwise for vertical only --> <CLOCKWISE_CODE_DEFAULT_IM>#ANTICLOCKWISE_CODE_DEFAULT_IM#</CLOCKWISE_CODE_DEFAULT_IM> <ANTICLOCKWISE_CODE_DEFAULT_IM>#CLOCKWISE_CODE_DEFAULT_IM#</ANTICLOCKWISE_CODE_DEFAULT_IM> <CLOCKWISE_CODE_DRAG_IM>#ANTICLOCKWISE_CODE_DRAG_IM#</CLOCKWISE_CODE_DRAG_IM> <ANTICLOCKWISE_CODE_DRAG_IM>#CLOCKWISE_CODE_DRAG_IM#</ANTICLOCKWISE_CODE_DRAG_IM> </UseTemplate> </Template> <Template Name = "ASOBO_GT_Interaction_WheelAndContinuousLeft_Horizontal"> <UseTemplate Name="ASOBO_GT_Interaction_WheelAndContinuousLeft_Base"> <LEFTARROW>TurnLeft</LEFTARROW> <RIGHTARROW>TurnRight</RIGHTARROW> <AXIS>X</AXIS> </UseTemplate> </Template> <Template Name = "ASOBO_GT_Interaction_WheelAndContinuousLeft_Base"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <UPARROW/> <DOWNARROW/> <LEFTARROW/> <RIGHTARROW/> <CALLBACKCODE/> <UPDATE_FREQUENCY>10</UPDATE_FREQUENCY> <UPDATE_DELAY>0.4</UPDATE_DELAY> <DRAG_SCALAR>0.0001</DRAG_SCALAR> <THRESHOLD_INPUT>0.00025</THRESHOLD_INPUT> <THRESHOLD_MOUSE>0.001</THRESHOLD_MOUSE> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="CLOCKWISE_CODE_DRAG_IM"/> </And> </Test> <False> <Condition NotEmpty="CLOCKWISE_CODE"> <True> <CLOCKWISE_CODE_DEFAULT_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DEFAULT_IM> <CLOCKWISE_CODE_DRAG_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DRAG_IM> </True> <False> <CLOCKWISE_CODE_DEFAULT_IM/> <CLOCKWISE_CODE_DRAG_IM/> </False> </Condition> </False> </Condition> <Condition> <Test> <And> <Arg NotEmpty="ANTICLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="ANTICLOCKWISE_CODE_DRAG_IM"/> </And> </Test> <False> <Condition NotEmpty="ANTICLOCKWISE_CODE"> <True> <ANTICLOCKWISE_CODE_DEFAULT_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DEFAULT_IM> <ANTICLOCKWISE_CODE_DRAG_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DRAG_IM> </True> <False> <ANTICLOCKWISE_CODE_DEFAULT_IM/> <ANTICLOCKWISE_CODE_DRAG_IM/> </False> </Condition> </False> </Condition> <UPARROW_DRAG_IM/> <DOWNARROW_DRAG_IM/> <LEFTARROW_DRAG_IM/> <RIGHTARROW_DRAG_IM/> <CURSOR_CENTER_DRAG_IM/> <CURSOR_DRAG_IM>Grab</CURSOR_DRAG_IM> </DefaultTemplateParameters> <OverrideTemplateParameters> <THRESHOLD>#THRESHOLD_INPUT# #THRESHOLD_MOUSE# (M:InputType) 1 == ?</THRESHOLD> </OverrideTemplateParameters> <!-- Call code if left click is held, depending on the X axis side --> <Condition> <Test> <Arg NotEmpty="CLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="ANTICLOCKWISE_CODE_DEFAULT_IM"/> </Test> <True> <Update Frequency = "#UPDATE_FREQUENCY#" InteractionModel="Default"> (O:XMLVAR_FirstUpdateTime) (E:SIMULATION TIME, seconds) &lt; if{ (O:_MouseDownRelativePos#AXIS#) 0 &gt; if{ #CLOCKWISE_CODE_DEFAULT_IM# } els{ (O:_MouseDownRelativePos#AXIS#) 0 &lt; if{ #ANTICLOCKWISE_CODE_DEFAULT_IM# } } } </Update> </True> </Condition> <UseTemplate Name="ASOBO_GT_MouseRect"> <MouseFlags>LeftAll+WheelUp+WheelDown+Lock+Unlock</MouseFlags> <CALLBACKCODE_DEFAULT_IM> (M:Event) 'WheelUp' scmi 0 == if{ #CLOCKWISE_CODE_DEFAULT_IM# } els{ (M:Event) 'WheelDown' scmi 0 == if{ #ANTICLOCKWISE_CODE_DEFAULT_IM# } els{ (M:Event) 'LeftSingle' scmi 0 == if{ (M:Relative#AXIS#) (&gt;O:_MouseDownRelativePos#AXIS#) (E:SIMULATION TIME, seconds) #UPDATE_DELAY# + (&gt;O:XMLVAR_FirstUpdateTime) (O:_MouseDownRelativePos#AXIS#) 0 &gt; if{ #CLOCKWISE_CODE_DEFAULT_IM# } els{ (O:_MouseDownRelativePos#AXIS#) 0 &lt; if{ #ANTICLOCKWISE_CODE_DEFAULT_IM# } } } els{ (M:Event) 'LeftRelease' scmi 0 == if{ 0 (&gt;O:_MouseDownRelativePos#AXIS#) } } } } </CALLBACKCODE_DEFAULT_IM> <CALLBACKCODE_DRAG_IM> (M:Event) 'WheelUp' scmi 0 == if{ #CLOCKWISE_CODE_DRAG_IM# } els{ (M:Event) 'WheelDown' scmi 0 == if{ #ANTICLOCKWISE_CODE_DRAG_IM# } els{ (M:Event) 'Lock' scmi 0 == if{ (M:Relative#AXIS#) (&gt;O:_Last#AXIS#) } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (&gt;O:_Last#AXIS#) } els{ (M:Event) 'LeftDrag' scmi 0 == if{ (M:Relative#AXIS#) (O:_Last#AXIS#) - sp0 #THRESHOLD# (&gt;O:_InputThreshold) l0 abs (O:_InputThreshold) &gt; if{ l0 (O:_InputThreshold) / abs flr sp1 l0 (O:_InputThreshold) % abs sp2 :1 (* for loop *) l1 0 &lt;= if{ g2 } l1 -- sp1 l0 0 &gt; if{ #CLOCKWISE_CODE_DRAG_IM# } els{ #ANTICLOCKWISE_CODE_DRAG_IM# } g1 :2 l0 0 &gt; if{ (M:Relative#AXIS#) l2 - (&gt;O:_Last#AXIS#) } els{ (M:Relative#AXIS#) l2 + (&gt;O:_Last#AXIS#) } } } } } } } quit </CALLBACKCODE_DRAG_IM> </UseTemplate> </Template> <Template Name="ASOBO_GT_Interaction_DraggingYAxis_SimGates_Base"> <DefaultTemplateParameters> <LIMITATIONS_OVERRIDE/> <INCREMENT>0.1</INCREMENT> <Condition Check="IGNORE_GATES"> <LIMITATIONS_OVERRIDE> #STEPS_NUMBER# (&gt;O:MaxDraggingPosition) 0 (&gt;O:MinDraggingPosition) </LIMITATIONS_OVERRIDE> </Condition> </DefaultTemplateParameters> <UseTemplate Name="ASOBO_GT_MouseRect"> <MOUSEFLAGS>LeftAll+WheelUp+WheelDown</MOUSEFLAGS> <CALLBACKCODE> (A:#SIMVAR#, #SIMVAR_UNITS#) #SIMVAR_CONVERSION# sp0 (M:Event) 'LeftSingle' scmp 0 == if{ (M:RelativeY) (&gt;O:PrevY, Number) l0 near l0 - abs #GATE_TOLERANCE# &lt; sp1 #GATE_DIRECTION# -1 != if{ l1 if{ l0 near 1 + #STEPS_NUMBER# min (&gt;O:MaxDraggingPosition) } els{ l0 ceil #STEPS_NUMBER# min (&gt;O:MaxDraggingPosition) } } els{ #STEPS_NUMBER# (&gt;O:MaxDraggingPosition) } #GATE_DIRECTION# 1 != if{ l1 if{ l0 near 1 - 0 max (&gt;O:MinDraggingPosition) } els{ l0 flr 0 max (&gt;O:MinDraggingPosition) } } els{ 0 (&gt;O:MinDraggingPosition) } } els{ (M:Event) 'LeftDrag' scmp 0 == if{ (O:PrevY) (M:RelativeY) - sp2 l2 #DRAG_SPEED# * sp3 #GATE_DIRECTION# -1 != if{ l0 #GATE_TOLERANCE# + flr 1 + (O:MaxDraggingPosition) min (&gt;O:MaxDraggingPosition) } #GATE_DIRECTION# 1 != if{ l0 #GATE_TOLERANCE# - ceil 1 - (O:MinDraggingPosition) max (&gt;O:MinDraggingPosition) } #LIMITATIONS_OVERRIDE# l0 l3 + (O:MaxDraggingPosition) min (O:MinDraggingPosition) max #EVENTID_CONVERSION# (&gt;K:#EVENTID_SET#) (M:RelativeY) (&gt;O:PrevY) } els{ (M:Event) 'WheelUp' scmp 0 == if{ l0 #INCREMENT# - #EVENTID_CONVERSION# (&gt;K:#EVENTID_SET#) } els{ (M:Event) 'WheelDown' scmp 0 == if{ l0 #INCREMENT# + #EVENTID_CONVERSION# (&gt;K:#EVENTID_SET#) } } } } </CALLBACKCODE> </UseTemplate> </Template> </ModelBehaviors>

Templates

Template list
  • ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate1

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate1"> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate2"> <Condition Check="WHEEL_DOWN_CODE"> <MOUSEFLAGS>#MOUSEFLAGS#+WheelDown</MOUSEFLAGS> <MOUSE_WHEEL_INPUTS> els{ (M:Event) &apos;WheelDown&apos; scmi 0 == if{ #WHEEL_DOWN_CODE# } #MOUSE_WHEEL_INPUTS# }</MOUSE_WHEEL_INPUTS> </Condition> </UseTemplate> </Template>

    Templates used:

  • ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate2

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate2"> <DefaultTemplateParameters/> <UseTemplate Name="ASOBO_GT_MouseRect"> <CALLBACKCODE> (M:Event) &apos;Lock&apos; scmi 0 == if{ #LEFT_SINGLE_CODE# } els{ (M:Event) &apos;Unlock&apos; scmi 0 == if{ #LEFT_LEAVE_CODE# } #MOUSE_WHEEL_INPUTS# } </CALLBACKCODE> </UseTemplate> </Template>

    Parameters initialization:

    • Default

    Templates used:

    • ASOBO_GT_MouseRect

      Parameters set:

      • CALLBACKCODE (using LEFT_SINGLE_CODE, LEFT_LEAVE_CODE, MOUSE_WHEEL_INPUTS)
  • ASOBO_GT_Interaction_LeftSingle_ParamSetup

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_LeftSingle_ParamSetup"> <DefaultTemplateParameters> <ON_STATE_CHANGED_EXTERNAL_CODE/> <Condition Check="MOMENTARY_SWITCH"> <STATE0_TIMER>0</STATE0_TIMER> <Condition NotEmpty="STATEMAX_TIMER"> <True> <STATE_MAX_TIMER>#STATEMAX_TIMER#</STATE_MAX_TIMER> </True> <False> <STATE_MAX_TIMER>0</STATE_MAX_TIMER> </False> </Condition> </Condition> <MOMENTARY_REPEAT_DELAY>0.5</MOMENTARY_REPEAT_DELAY> </DefaultTemplateParameters> <OverrideTemplateParameters> <START_STATE Process="Int">#NUM_STATES# 1 -</START_STATE> <Condition Check="MOMENTARY_SWITCH"> <True> <MOMENTARY_UP_0> #STATE0_TIMER# 0 &gt; if{ (E:SIMULATION TIME, seconds) #STATE0_TIMER# + (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) (E:SIMULATION TIME, seconds) #MOMENTARY_REPEAT_DELAY# + (&gt;O:XMLVAR_Repeat_StartTime) } els{ 0 (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } 0 1 l1 ? (&gt;#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#) </MOMENTARY_UP_0> <CODE_RELEASE>0 (&gt;#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#)</CODE_RELEASE> </True> <False> <MOMENTARY_UP_0/> </False> </Condition> <Condition Valid="DISABLE_ON_STATE_CHANGED_EXTERNAL_CODE_IN_MR"> <ON_STATE_CHANGED_EXTERNAL_CODE/> </Condition> </OverrideTemplateParameters> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1"> <CURRENT_ID>#START_STATE#</CURRENT_ID> <POS_MAX>#START_STATE#</POS_MAX> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • ON_STATE_CHANGED_EXTERNAL_CODE
      • MOMENTARY_REPEAT_DELAY

      Condition: Check(MOMENTARY_SWITCH)

      • Case: True

        Parameters set:

        • STATE0_TIMER

        Condition: NotEmpty(STATEMAX_TIMER)

        • Case: True

          Parameters set:

          • STATE_MAX_TIMER (using STATEMAX_TIMER)
        • Case: False

          Parameters set:

          • STATE_MAX_TIMER
    • Override

      Parameters set:

      • START_STATE (using NUM_STATES)

      Condition: Check(MOMENTARY_SWITCH)

      • Case: True

        Parameters set:

        • MOMENTARY_UP_0 (using STATE0_TIMER, SWITCH_POSITION_TYPE_TIMER, SWITCH_POSITION_VAR_TIMER, MOMENTARY_REPEAT_DELAY, SWITCH_POSITION_TYPE_ISDOWN, SWITCH_POSITION_VAR_ISDOWN)
        • CODE_RELEASE (using SWITCH_POSITION_TYPE_ISDOWN, SWITCH_POSITION_VAR_ISDOWN)
      • Case: False

        Parameters set:

        • MOMENTARY_UP_0

      Condition: Valid(DISABLE_ON_STATE_CHANGED_EXTERNAL_CODE_IN_MR)

      • Case: True

        Parameters set:

        • ON_STATE_CHANGED_EXTERNAL_CODE

    Templates used:

  • ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1"> <DefaultTemplateParameters> <CODE_POS_#CURRENT_ID#_VERIF>1</CODE_POS_#CURRENT_ID#_VERIF> <ANIMTIP_#CURRENT_ID#_ON_PERCENT Process="Float">#CURRENT_ID# #POS_MAX# /</ANIMTIP_#CURRENT_ID#_ON_PERCENT> </DefaultTemplateParameters> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_2"> <CURRENT_ENUM_VAL_POS Process="Param">ENUM_VAL_POS_#CURRENT_ID#</CURRENT_ENUM_VAL_POS> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • CODE_POS_#CURRENT_ID#_VERIF
      • ANIMTIP_#CURRENT_ID#_ON_PERCENT (using CURRENT_ID, POS_MAX)

    Templates used:

  • ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_2

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_2"> <DefaultTemplateParameters> <Condition NotEmpty="CURRENT_ENUM_VAL_POS"> <True> <CODE_POS_#CURRENT_ID#> (A:#ENUM_SIMVAR#, Enum) #CURRENT_ENUM_VAL_POS# != if{ #CURRENT_ENUM_VAL_POS# (&gt;K:#ENUM_KEY#) } </CODE_POS_#CURRENT_ID#> </True> <False> <CODE_POS_#CURRENT_ID#/> </False> </Condition> </DefaultTemplateParameters> <OverrideTemplateParameters> <CURRENT_ID Process="Int">#CURRENT_ID# 1 -</CURRENT_ID> </OverrideTemplateParameters> <Condition> <Test> <GreaterOrEqual> <Value>CURRENT_ID</Value> <Number>0</Number> </GreaterOrEqual> </Test> <True> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1"/> </True> <False> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive"> <CURRENT_ID>#START_STATE#</CURRENT_ID> <NEXT_ID Process="Int">#START_STATE# 1 -</NEXT_ID> <CODE_POS_MAX Process="Param">CODE_POS_#START_STATE#</CODE_POS_MAX> <CODE_POS_MAX_VERIF Process="Param">CODE_POS_#START_STATE#_VERIF</CODE_POS_MAX_VERIF> <ELSE_BRACKET_OPENING>els{</ELSE_BRACKET_OPENING> <ELSE_BRACKET_CLOSING>}</ELSE_BRACKET_CLOSING> </UseTemplate> </False> </Condition> </Template>

    Parameters initialization:

    • Default

      Condition: NotEmpty(CURRENT_ENUM_VAL_POS)

      • Case: True

        Parameters set:

        • CODE_POS_#CURRENT_ID# (using ENUM_SIMVAR, CURRENT_ENUM_VAL_POS, ENUM_KEY)
      • Case: False

        Parameters set:

        • CODE_POS_#CURRENT_ID#
    • Override

      Parameters set:

      • CURRENT_ID (using CURRENT_ID)

    Condition: Test(CURRENT_ID)

  • ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive"> <DefaultTemplateParameters> <Condition Check="MOMENTARY_SWITCH"> <True> <Condition Check="MOMENTARY_SWITCH_DOWN_SET"> <True> <MOMENTARY_UP_#CURRENT_ID#/> </True> <False> <MOMENTARY_SWITCH_DOWN_SET/> <MOMENTARY_UP_#CURRENT_ID#> #STATE_MAX_TIMER# 0 &gt; if{ (E:SIMULATION TIME, seconds) #STATE_MAX_TIMER# + (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) (E:SIMULATION TIME, seconds) #MOMENTARY_REPEAT_DELAY# + (&gt;O:XMLVAR_Repeat_StartTime) } els{ 0 (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } 0 1 l1 ? (&gt;#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#) </MOMENTARY_UP_#CURRENT_ID#> <MOMENTARY_SWITCH_DOWN_INDEX>#CURRENT_ID#</MOMENTARY_SWITCH_DOWN_INDEX> <REST_STATE>#NEXT_ID#</REST_STATE> <CODE_POS_RETURN Process="Param">CODE_POS_#NEXT_ID#</CODE_POS_RETURN> </False> </Condition> </True> <False> <MOMENTARY_UP_#CURRENT_ID#/> </False> </Condition> <THRESHOLD_MOUSE>0.03</THRESHOLD_MOUSE> <THRESHOLD_INPUT>0.05</THRESHOLD_INPUT> </DefaultTemplateParameters> <OverrideTemplateParameters> <CURRENT_POS_VERIF Process="Param">CODE_POS_#CURRENT_ID#_VERIF</CURRENT_POS_VERIF> <NEXT_POS_VERIF Process="Param">CODE_POS_#NEXT_ID#_VERIF</NEXT_POS_VERIF> <CURRENT_CODE_POS Process="Param">CODE_POS_#CURRENT_ID#</CURRENT_CODE_POS> <NEXT_CODE_POS Process="Param">CODE_POS_#NEXT_ID#</NEXT_CODE_POS> <CURRENT_MOMENTARY_UP Process="Param">MOMENTARY_UP_#CURRENT_ID#</CURRENT_MOMENTARY_UP> <NEXT_MOMENTARY_UP Process="Param">MOMENTARY_UP_#NEXT_ID#</NEXT_MOMENTARY_UP> <CURRENT_CODE_REPEAT Process="Param">CODE_REPEAT_#CURRENT_ID#</CURRENT_CODE_REPEAT> </OverrideTemplateParameters> <Condition> <Test> <GreaterOrEqual> <Value>NEXT_ID</Value> <Number>0</Number> </GreaterOrEqual> </Test> <True> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive"> <CODE_UP> #CODE_UP# (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CURRENT_ID# == if{ #NEXT_POS_VERIF# if{ #NEXT_ID# (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #NEXT_CODE_POS# #ON_STATE_CHANGED_EXTERNAL_CODE# #NEXT_MOMENTARY_UP# } } #ELSE_BRACKET_OPENING# </CODE_UP> <CODE_UP_CLOSING> #ELSE_BRACKET_CLOSING# #CODE_UP_CLOSING# </CODE_UP_CLOSING> <CODE_DOWN> #ELSE_BRACKET_OPENING# (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #NEXT_ID# == if{ #CURRENT_POS_VERIF# if{ #CURRENT_ID# (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CURRENT_CODE_POS# #ON_STATE_CHANGED_EXTERNAL_CODE# #CURRENT_MOMENTARY_UP# } } #CODE_DOWN# #ELSE_BRACKET_CLOSING# </CODE_DOWN> <Condition Check="NEXT_ID" Match="1"> <True> <ELSE_BRACKET_OPENING/> <ELSE_BRACKET_CLOSING/> </True> </Condition> <Condition Valid="CURRENT_CODE_REPEAT"> <CODE_REPEAT> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CURRENT_ID# == if{ #CURRENT_CODE_REPEAT# } els{ #CODE_REPEAT# } </CODE_REPEAT> </Condition> <CURRENT_ID>#NEXT_ID#</CURRENT_ID> <NEXT_ID Process="Int">#NEXT_ID# 1 -</NEXT_ID> </UseTemplate> </True> <False> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_1"> <Condition Valid="CURRENT_CODE_REPEAT"> <CODE_REPEAT> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CURRENT_ID# == if{ #CURRENT_CODE_REPEAT# } els{ #CODE_REPEAT# } </CODE_REPEAT> </Condition> </UseTemplate> </False> </Condition> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • THRESHOLD_MOUSE
      • THRESHOLD_INPUT

      Condition: Check(MOMENTARY_SWITCH)

      • Case: True

        Condition: Check(MOMENTARY_SWITCH_DOWN_SET)

        • Case: True

          Parameters set:

          • MOMENTARY_UP_#CURRENT_ID#
        • Case: False

          Parameters set:

          • MOMENTARY_SWITCH_DOWN_SET
          • MOMENTARY_UP_#CURRENT_ID# (using STATE_MAX_TIMER, SWITCH_POSITION_TYPE_TIMER, SWITCH_POSITION_VAR_TIMER, MOMENTARY_REPEAT_DELAY, SWITCH_POSITION_TYPE_ISDOWN, SWITCH_POSITION_VAR_ISDOWN)
          • MOMENTARY_SWITCH_DOWN_INDEX (using CURRENT_ID)
          • REST_STATE (using NEXT_ID)
          • CODE_POS_RETURN (using NEXT_ID)
      • Case: False

        Parameters set:

        • MOMENTARY_UP_#CURRENT_ID#
    • Override

      Parameters set:

      • CURRENT_POS_VERIF (using CURRENT_ID)
      • NEXT_POS_VERIF (using NEXT_ID)
      • CURRENT_CODE_POS (using CURRENT_ID)
      • NEXT_CODE_POS (using NEXT_ID)
      • CURRENT_MOMENTARY_UP (using CURRENT_ID)
      • NEXT_MOMENTARY_UP (using NEXT_ID)
      • CURRENT_CODE_REPEAT (using CURRENT_ID)

    Condition: Test(NEXT_ID)

    • Case: True

      Templates used:

      • ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive

        Parameters set:

        • CODE_UP (using CODE_UP, SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR, CURRENT_ID, NEXT_POS_VERIF, NEXT_ID, NEXT_CODE_POS, ON_STATE_CHANGED_EXTERNAL_CODE, NEXT_MOMENTARY_UP, ELSE_BRACKET_OPENING)
        • CODE_UP_CLOSING (using ELSE_BRACKET_CLOSING, CODE_UP_CLOSING)
        • CODE_DOWN (using ELSE_BRACKET_OPENING, SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR, NEXT_ID, CURRENT_POS_VERIF, CURRENT_ID, CURRENT_CODE_POS, ON_STATE_CHANGED_EXTERNAL_CODE, CURRENT_MOMENTARY_UP, CODE_DOWN, ELSE_BRACKET_CLOSING)
        • CURRENT_ID (using NEXT_ID)
        • NEXT_ID (using NEXT_ID)

        Condition: Check(NEXT_ID)

        • Case: True

          Parameters set:

          • ELSE_BRACKET_OPENING
          • ELSE_BRACKET_CLOSING

        Condition: Valid(CURRENT_CODE_REPEAT)

        • Case: True

          Parameters set:

          • CODE_REPEAT (using SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR, CURRENT_ID, CURRENT_CODE_REPEAT, CODE_REPEAT)
    • Case: False

      Templates used:

  • ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_1

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_1"> <Parameters Type="Default"> <Condition Check="SWITCH_DIRECTION" Match="Vertical"> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> <DRAG_AXIS>Y</DRAG_AXIS> </Condition> <Condition Check="SWITCH_DIRECTION" Match="Horizontal"> <Condition Check="ARROW_TYPE" Match="Curved"> <True> <LEFTARROW>TurnLeft</LEFTARROW> <RIGHTARROW>TurnRight</RIGHTARROW> </True> <False> <LEFTARROW>LeftArrow</LEFTARROW> <RIGHTARROW>RightArrow</RIGHTARROW> </False> </Condition> <DRAG_AXIS>X</DRAG_AXIS> </Condition> <LEFT_DOWN_CODE/> <LEFT_UP_CODE/> <ANIMCURSOR_MIN>0</ANIMCURSOR_MIN> <Condition Check="ANIM_LENGTH"> <True> <ANIMCURSOR_MAX>#ANIM_LENGTH#</ANIMCURSOR_MAX> </True> <False> <ANIMCURSOR_MAX>100</ANIMCURSOR_MAX> </False> </Condition> <USE_PAD_DRAG_IM_LOCK>True</USE_PAD_DRAG_IM_LOCK> </Parameters> <Parameters Type="Override"> <THRESHOLD_MOUSE>0.001</THRESHOLD_MOUSE> </Parameters> <Parameters Type="Override"> <THRESHOLD>#THRESHOLD_INPUT# #THRESHOLD_MOUSE# (M:InputType) 1 == ?</THRESHOLD> </Parameters> <Parameters Type="Default"> <LOCKABLE_EVENT_PRIMARY>LeftSingle</LOCKABLE_EVENT_PRIMARY> <LOCKABLE_EVENT_SECONDARY>RightSingle</LOCKABLE_EVENT_SECONDARY> <NO_LOCK_EVENT_PRIMARY>RightSingle</NO_LOCK_EVENT_PRIMARY> <NO_LOCK_EVENT_SECONDARY>MiddleSingle</NO_LOCK_EVENT_SECONDARY> <LOCKABLE_HANDLE_CODE_UP/> <NO_LOCK_HANDLE_CODE_UP/> <LOCKABLE_HANDLE_CODE_DN/> <NO_LOCK_HANDLE_CODE_DN/> <ADDITIONAL_MOUSEFLAGS/> <CENTER_HANDLING_CODE_START/> <CENTER_HANDLING_CODE_END/> <Condition> <Test> <Or> <Arg NotEmpty="ON_PRIMARY_EVENT"/> <Arg NotEmpty="ON_SECONDARY_EVENT"/> </Or> </Test> <True> <CENTER_CURSOR>Hand</CENTER_CURSOR> <CENTER_RADIUS>0.004</CENTER_RADIUS> <DEFINE_CENTER_INTERACTION>True</DEFINE_CENTER_INTERACTION> </True> </Condition> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="ON_PRIMARY_EVENT"> <LOCKABLE_HANDLE_CODE_UP>(M:Event) &apos;#LOCKABLE_EVENT_PRIMARY#&apos; scmi 0 == if{ #ON_PRIMARY_EVENT# quit }</LOCKABLE_HANDLE_CODE_UP> <NO_LOCK_HANDLE_CODE_UP>(M:Event) &apos;#NO_LOCK_EVENT_PRIMARY#&apos; scmi 0 == if{ #ON_PRIMARY_EVENT# quit }</NO_LOCK_HANDLE_CODE_UP> <ADDITIONAL_MOUSEFLAGS>+#LOCKABLE_EVENT_PRIMARY#+#NO_LOCK_EVENT_PRIMARY#</ADDITIONAL_MOUSEFLAGS> <CENTER_HANDLING_CODE_END> } els{ #ON_PRIMARY_EVENT# quit } </CENTER_HANDLING_CODE_END> </Condition> <Condition NotEmpty="ON_SECONDARY_EVENT"> <LOCKABLE_HANDLE_CODE_DN>(M:Event) &apos;#LOCKABLE_EVENT_SECONDARY#&apos; scmi 0 == if{ #ON_SECONDARY_EVENT# quit }</LOCKABLE_HANDLE_CODE_DN> <NO_LOCK_HANDLE_CODE_DN>(M:Event) &apos;#NO_LOCK_EVENT_SECONDARY#&apos; scmi 0 == if{ #ON_SECONDARY_EVENT# quit }</NO_LOCK_HANDLE_CODE_DN> <ADDITIONAL_MOUSEFLAGS>+#LOCKABLE_EVENT_SECONDARY#+#NO_LOCK_EVENT_SECONDARY#</ADDITIONAL_MOUSEFLAGS> <CENTER_HANDLING_CODE_END> } els{ #ON_SECONDARY_EVENT# quit } </CENTER_HANDLING_CODE_END> </Condition> <Condition Valid="DEFINE_CENTER_INTERACTION"> <True> <CENTER_HANDLING_CODE_START> (M:Relative#DRAG_AXIS#) abs #CENTER_RADIUS# &gt; if{ </CENTER_HANDLING_CODE_START> </True> </Condition> </Parameters> <Parameters Type="Default"> <LOCKABLE_INPUTS_HANDLING> #LOCKABLE_HANDLE_CODE_UP# #LOCKABLE_HANDLE_CODE_DN# </LOCKABLE_INPUTS_HANDLING> <NO_LOCK_INPUTS_HANDLING> #NO_LOCK_HANDLE_CODE_UP# #NO_LOCK_HANDLE_CODE_DN# </NO_LOCK_INPUTS_HANDLING> </Parameters> <Parameters Type="Default"> <IM_DRAG_ADDITIONAL_EVENT_HANDLING> (M:InputType) 1 == if{ #LOCKABLE_INPUTS_HANDLING# } els{ #NO_LOCK_INPUTS_HANDLING# } </IM_DRAG_ADDITIONAL_EVENT_HANDLING> </Parameters> <Parameters Type="Override"> <Condition Valid="USE_PAD_DRAG_IM_LOCK"> <True> <CHECK_AND_RESET_DRAG_LOCK> (O:_ResetDragTime) (E:SIMULATION TIME, second) &lt; if{ 0 (&gt;O:_IsLimited) } (E:SIMULATION TIME, second) @DragLockResetTimer + (&gt;O:_ResetDragTime) </CHECK_AND_RESET_DRAG_LOCK> <CHECK_IS_DRAG_LOCKED>(O:_IsLimited)</CHECK_IS_DRAG_LOCKED> <SET_DRAG_LOCK>1 (&gt;O:_IsLimited)</SET_DRAG_LOCK> <UNSET_DRAG_LOCK>0 (&gt;O:_IsLimited)</UNSET_DRAG_LOCK> </True> <False> <CHECK_AND_RESET_DRAG_LOCK/> <CHECK_IS_DRAG_LOCKED>0</CHECK_IS_DRAG_LOCKED> <SET_DRAG_LOCK/> <UNSET_DRAG_LOCK/> </False> </Condition> <Condition Valid="INVERT_WHEEL_INTERACTION"> <True> <Switch Param="SWITCH_DIRECTION"> <Case Value="Vertical"> <FLAG_POS_WHEEL_UP>2</FLAG_POS_WHEEL_UP> <FLAG_POS_WHEEL_DN>1</FLAG_POS_WHEEL_DN> </Case> <Case Value="Horizontal"> <FLAG_POS_WHEEL_UP>1</FLAG_POS_WHEEL_UP> <FLAG_POS_WHEEL_DN>2</FLAG_POS_WHEEL_DN> </Case> </Switch> </True> <False> <Switch Param="SWITCH_DIRECTION"> <Case Value="Vertical"> <FLAG_POS_WHEEL_UP>1</FLAG_POS_WHEEL_UP> <FLAG_POS_WHEEL_DN>2</FLAG_POS_WHEEL_DN> </Case> <Case Value="Horizontal"> <FLAG_POS_WHEEL_UP>2</FLAG_POS_WHEEL_UP> <FLAG_POS_WHEEL_DN>1</FLAG_POS_WHEEL_DN> </Case> </Switch> </False> </Condition> <Condition Valid="INVERT_DRAG_POSITIVE_CONDITION"> <True> <DRAG_IS_POSITIVE_CONDITION>&lt;=</DRAG_IS_POSITIVE_CONDITION> </True> <False> <DRAG_IS_POSITIVE_CONDITION>&gt;</DRAG_IS_POSITIVE_CONDITION> </False> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="USE_TRAJECTORY_DRAG_MODE"> <True> <DRAG_CODE_VERTICAL> (M:DragPercent) #NUM_STATES# * flr sp0 l0 (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) &lt; if{ g1 } els{ l0 (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) &gt; if{ g2 } } </DRAG_CODE_VERTICAL> <DRAG_CODE_HORIZONTAL> (M:DragPercent) #NUM_STATES# * flr sp0 l0 (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) &lt; if{ g1 } els{ l0 (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) &gt; if{ g2 } } </DRAG_CODE_HORIZONTAL> </True> <False> <DRAG_CODE_VERTICAL> #CHECK_AND_RESET_DRAG_LOCK# #CHECK_IS_DRAG_LOCKED# if{ (M:RelativeY) (&gt;O:OldMouseY) } els{ (O:OldMouseY) (M:RelativeY) - abs #THRESHOLD# &gt; if{ #SET_DRAG_LOCK# (O:OldMouseY) sp0 (M:RelativeY) (&gt;O:OldMouseY) (M:RelativeY) l0 #DRAG_IS_POSITIVE_CONDITION# if{ g1 } els{ g2 } } } </DRAG_CODE_VERTICAL> <DRAG_CODE_HORIZONTAL> #CHECK_AND_RESET_DRAG_LOCK# #CHECK_IS_DRAG_LOCKED# if{ (M:RelativeX) (&gt;O:OldMouseX) } els{ (O:OldMouseX) (M:RelativeX) - abs #THRESHOLD# &gt; if{ #SET_DRAG_LOCK# (O:OldMouseX) sp0 (M:RelativeX) (&gt;O:OldMouseX) (M:RelativeX) l0 #DRAG_IS_POSITIVE_CONDITION# if{ g2 } els{ g1 } } } </DRAG_CODE_HORIZONTAL> </False> </Condition> </Parameters> <UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_2"> <Condition Check="IS_LOOPING"> <True> <ANIMCURSOR_MIN>-1</ANIMCURSOR_MIN> <ANIMCURSOR_MAX>-1</ANIMCURSOR_MAX> <CODE_UP> #CODE_UP# els{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == if{ #CODE_POS_MAX_VERIF# if{ #POS_MAX# (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CODE_POS_MAX# #ON_STATE_CHANGED_EXTERNAL_CODE# } } } </CODE_UP> <CODE_DOWN> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #POS_MAX# == if{ #CODE_POS_0_VERIF# if{ 0 (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CODE_POS_0# #ON_STATE_CHANGED_EXTERNAL_CODE# } } els{ #CODE_DOWN# } </CODE_DOWN> </True> </Condition> <Switch Param="SWITCH_DIRECTION"> <Case Value="Vertical"> <INPUT_CODE_IM_DEFAULT> (M:Event) &apos;WheelUp&apos; scmi 0 == if{ 1 (&gt;O:GoToRelease) g1 } els{ (M:Event) &apos;WheelDown&apos; scmi 0 == if{ 1 (&gt;O:GoToRelease) g2 } els{ (M:Event) &apos;LeftSingle&apos; scmi 0 == if{ #CENTER_HANDLING_CODE_START# #LEFT_DOWN_CODE# #CENTER_HANDLING_CODE_END# (M:RelativeY) 0 &gt; if{ g1 } els{ g2 } } els{ (M:Event) &apos;LeftRelease&apos; scmi 0 == if{ #LEFT_UP_CODE# g3 } } } } quit </INPUT_CODE_IM_DEFAULT> <INPUT_CODE_IM_DRAG> (M:Event) &apos;Lock&apos; scmi 0 == if{ (M:RelativeY) (&gt;O:OldMouseY) #LEFT_DOWN_CODE# #UNSET_DRAG_LOCK# } els{ (M:Event) &apos;WheelUp&apos; scmi 0 == if{ 1 sp1 g#FLAG_POS_WHEEL_UP# } els{ (M:Event) &apos;WheelDown&apos; scmi 0 == if{ 1 sp1 g#FLAG_POS_WHEEL_DN# } els{ (M:Event) &apos;LeftDrag&apos; scmi 0 == if{ #DRAG_CODE_VERTICAL# } els{ (M:Event) &apos;Unlock&apos; scmi 0 == if{ #LEFT_UP_CODE# g3 } } } } } quit </INPUT_CODE_IM_DRAG> </Case> <Case Value="Horizontal"> <INPUT_CODE_IM_DEFAULT> (M:Event) &apos;WheelUp&apos; scmi 0 == if{ 1 (&gt;O:GoToRelease) g2 } els{ (M:Event) &apos;WheelDown&apos; scmi 0 == if{ 1 (&gt;O:GoToRelease) g1 } els{ (M:Event) &apos;LeftSingle&apos; scmi 0 == if{ #CENTER_HANDLING_CODE_START# #LEFT_DOWN_CODE# #CENTER_HANDLING_CODE_END# (M:RelativeX) 0 &gt; if{ g2 } els{ g1 } } els{ (M:Event) &apos;LeftRelease&apos; scmi 0 == if{ #LEFT_UP_CODE# g3 } } } } quit </INPUT_CODE_IM_DEFAULT> <INPUT_CODE_IM_DRAG> (M:Event) &apos;Lock&apos; scmi 0 == if{ (M:RelativeX) (&gt;O:OldMouseX) #LEFT_DOWN_CODE# #UNSET_DRAG_LOCK# } els{ (M:Event) &apos;WheelUp&apos; scmi 0 == if{ 1 sp1 g#FLAG_POS_WHEEL_UP# } els{ (M:Event) &apos;WheelDown&apos; scmi 0 == if{ 1 sp1 g#FLAG_POS_WHEEL_DN# } els{ (M:Event) &apos;LeftDrag&apos; scmi 0 == if{ #DRAG_CODE_HORIZONTAL# } els{ (M:Event) &apos;Unlock&apos; scmi 0 == if{ #LEFT_UP_CODE# g3 } } } } } quit </INPUT_CODE_IM_DRAG> </Case> </Switch> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • LEFT_DOWN_CODE
      • LEFT_UP_CODE
      • ANIMCURSOR_MIN
      • USE_PAD_DRAG_IM_LOCK

      Condition: Check(SWITCH_DIRECTION)

      • Case: True

        Parameters set:

        • UPARROW
        • DOWNARROW
        • DRAG_AXIS

      Condition: Check(SWITCH_DIRECTION)

      • Case: True

        Parameters set:

        • DRAG_AXIS

        Condition: Check(ARROW_TYPE)

        • Case: True

          Parameters set:

          • LEFTARROW
          • RIGHTARROW
        • Case: False

          Parameters set:

          • LEFTARROW
          • RIGHTARROW

      Condition: Check(ANIM_LENGTH)

      • Case: True

        Parameters set:

        • ANIMCURSOR_MAX (using ANIM_LENGTH)
      • Case: False

        Parameters set:

        • ANIMCURSOR_MAX
    • Override

      Parameters set:

      • THRESHOLD_MOUSE
    • Override

      Parameters set:

      • THRESHOLD (using THRESHOLD_INPUT, THRESHOLD_MOUSE)
    • Default

      Parameters set:

      • LOCKABLE_EVENT_PRIMARY
      • LOCKABLE_EVENT_SECONDARY
      • NO_LOCK_EVENT_PRIMARY
      • NO_LOCK_EVENT_SECONDARY
      • LOCKABLE_HANDLE_CODE_UP
      • NO_LOCK_HANDLE_CODE_UP
      • LOCKABLE_HANDLE_CODE_DN
      • NO_LOCK_HANDLE_CODE_DN
      • ADDITIONAL_MOUSEFLAGS
      • CENTER_HANDLING_CODE_START
      • CENTER_HANDLING_CODE_END

      Condition: Test(ON_PRIMARY_EVENT, ON_SECONDARY_EVENT)

      • Case: True

        Parameters set:

        • CENTER_CURSOR
        • CENTER_RADIUS
        • DEFINE_CENTER_INTERACTION
    • Override

      Condition: NotEmpty(ON_PRIMARY_EVENT)

      • Case: True

        Parameters set:

        • LOCKABLE_HANDLE_CODE_UP (using LOCKABLE_EVENT_PRIMARY, ON_PRIMARY_EVENT)
        • NO_LOCK_HANDLE_CODE_UP (using NO_LOCK_EVENT_PRIMARY, ON_PRIMARY_EVENT)
        • ADDITIONAL_MOUSEFLAGS (using LOCKABLE_EVENT_PRIMARY, NO_LOCK_EVENT_PRIMARY)
        • CENTER_HANDLING_CODE_END (using ON_PRIMARY_EVENT)

      Condition: NotEmpty(ON_SECONDARY_EVENT)

      • Case: True

        Parameters set:

        • LOCKABLE_HANDLE_CODE_DN (using LOCKABLE_EVENT_SECONDARY, ON_SECONDARY_EVENT)
        • NO_LOCK_HANDLE_CODE_DN (using NO_LOCK_EVENT_SECONDARY, ON_SECONDARY_EVENT)
        • ADDITIONAL_MOUSEFLAGS (using LOCKABLE_EVENT_SECONDARY, NO_LOCK_EVENT_SECONDARY)
        • CENTER_HANDLING_CODE_END (using ON_SECONDARY_EVENT)

      Condition: Valid(DEFINE_CENTER_INTERACTION)

      • Case: True

        Parameters set:

        • CENTER_HANDLING_CODE_START (using DRAG_AXIS, CENTER_RADIUS)
    • Default

      Parameters set:

      • LOCKABLE_INPUTS_HANDLING (using LOCKABLE_HANDLE_CODE_UP, LOCKABLE_HANDLE_CODE_DN)
      • NO_LOCK_INPUTS_HANDLING (using NO_LOCK_HANDLE_CODE_UP, NO_LOCK_HANDLE_CODE_DN)
    • Default

      Parameters set:

      • IM_DRAG_ADDITIONAL_EVENT_HANDLING (using LOCKABLE_INPUTS_HANDLING, NO_LOCK_INPUTS_HANDLING)
    • Override

      Condition: Valid(USE_PAD_DRAG_IM_LOCK)

      • Case: True

        Parameters set:

        • CHECK_AND_RESET_DRAG_LOCK
        • CHECK_IS_DRAG_LOCKED
        • SET_DRAG_LOCK
        • UNSET_DRAG_LOCK
      • Case: False

        Parameters set:

        • CHECK_AND_RESET_DRAG_LOCK
        • CHECK_IS_DRAG_LOCKED
        • SET_DRAG_LOCK
        • UNSET_DRAG_LOCK

      Condition: Valid(INVERT_WHEEL_INTERACTION)

      • Case: True

        Condition: Switch(SWITCH_DIRECTION)

        • Case: Vertical

          Parameters set:

          • FLAG_POS_WHEEL_UP
          • FLAG_POS_WHEEL_DN
        • Case: Horizontal

          Parameters set:

          • FLAG_POS_WHEEL_UP
          • FLAG_POS_WHEEL_DN
      • Case: False

        Condition: Switch(SWITCH_DIRECTION)

        • Case: Vertical

          Parameters set:

          • FLAG_POS_WHEEL_UP
          • FLAG_POS_WHEEL_DN
        • Case: Horizontal

          Parameters set:

          • FLAG_POS_WHEEL_UP
          • FLAG_POS_WHEEL_DN

      Condition: Valid(INVERT_DRAG_POSITIVE_CONDITION)

      • Case: True

        Parameters set:

        • DRAG_IS_POSITIVE_CONDITION
      • Case: False

        Parameters set:

        • DRAG_IS_POSITIVE_CONDITION
    • Override

      Condition: Valid(USE_TRAJECTORY_DRAG_MODE)

      • Case: True

        Parameters set:

        • DRAG_CODE_VERTICAL (using NUM_STATES, SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR)
        • DRAG_CODE_HORIZONTAL (using NUM_STATES, SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR)
      • Case: False

        Parameters set:

        • DRAG_CODE_VERTICAL (using CHECK_AND_RESET_DRAG_LOCK, CHECK_IS_DRAG_LOCKED, THRESHOLD, SET_DRAG_LOCK, DRAG_IS_POSITIVE_CONDITION)
        • DRAG_CODE_HORIZONTAL (using CHECK_AND_RESET_DRAG_LOCK, CHECK_IS_DRAG_LOCKED, THRESHOLD, SET_DRAG_LOCK, DRAG_IS_POSITIVE_CONDITION)

    Templates used:

    • ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_2

      Condition: Check(IS_LOOPING)

      • Case: True

        Parameters set:

        • ANIMCURSOR_MIN
        • ANIMCURSOR_MAX
        • CODE_UP (using CODE_UP, SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR, CODE_POS_MAX_VERIF, POS_MAX, CODE_POS_MAX, ON_STATE_CHANGED_EXTERNAL_CODE)
        • CODE_DOWN (using SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR, POS_MAX, CODE_POS_0_VERIF, CODE_POS_0, ON_STATE_CHANGED_EXTERNAL_CODE, CODE_DOWN)

      Condition: Switch(SWITCH_DIRECTION)

      • Case: Vertical

        Parameters set:

        • INPUT_CODE_IM_DEFAULT (using CENTER_HANDLING_CODE_START, LEFT_DOWN_CODE, CENTER_HANDLING_CODE_END, LEFT_UP_CODE)
        • INPUT_CODE_IM_DRAG (using LEFT_DOWN_CODE, UNSET_DRAG_LOCK, FLAG_POS_WHEEL_UP, FLAG_POS_WHEEL_DN, DRAG_CODE_VERTICAL, LEFT_UP_CODE)
      • Case: Horizontal

        Parameters set:

        • INPUT_CODE_IM_DEFAULT (using CENTER_HANDLING_CODE_START, LEFT_DOWN_CODE, CENTER_HANDLING_CODE_END, LEFT_UP_CODE)
        • INPUT_CODE_IM_DRAG (using LEFT_DOWN_CODE, UNSET_DRAG_LOCK, FLAG_POS_WHEEL_UP, FLAG_POS_WHEEL_DN, DRAG_CODE_HORIZONTAL, LEFT_UP_CODE)
  • ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_2

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_2"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <SWITCH_POSITION_TYPE>O</SWITCH_POSITION_TYPE> <SWITCH_POSITION_VAR>SwitchState</SWITCH_POSITION_VAR> <CODE_POS_0/> <CODE_POS_1/> <CODE_POS_0_VERIF>1</CODE_POS_0_VERIF> <CODE_POS_1_VERIF>1</CODE_POS_1_VERIF> <CODE_UP/> <CODE_UP_CLOSING/> <CODE_DOWN/> <CODE_DOWN_CLOSING/> <CODE_RELEASE/> <LEFTARROW/> <RIGHTARROW/> <UPARROW/> <DOWNARROW/> <INPUT_CODE/> <CODE_REPEAT/> <PERCENT_PER_SECONDS>2000</PERCENT_PER_SECONDS> </DefaultTemplateParameters> <OverrideTemplateParameters> <Condition Check="MOMENTARY_SWITCH"> <CODE_POS_REST_STATE Process="Param">CODE_POS_#REST_STATE#</CODE_POS_REST_STATE> </Condition> </OverrideTemplateParameters> <Condition Check="REPEAT_FREQUENCY"> <Update Frequency="#REPEAT_FREQUENCY#"> #CODE_REPEAT# </Update> </Condition> <Condition Check="MOMENTARY_SWITCH"> <Update Frequency="5"> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #MOMENTARY_SWITCH_DOWN_INDEX# == or if{ (* On Pad disable IsDown when stick is at center *) (M:InputType) 1 == (M:X) abs #THRESHOLD_INPUT# &lt; (M:Y) abs #THRESHOLD_INPUT# &lt; and and if{ 0 (&gt;#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#) } (#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) 0 &gt; if{ (#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) (E:SIMULATION TIME, seconds) &lt; (#SWITCH_POSITION_TYPE_ISDOWN#:#SWITCH_POSITION_VAR_ISDOWN#) ! and if{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == if{ 1 (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CODE_POS_1# } els{ #REST_STATE# (&gt;#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #CODE_POS_REST_STATE# } 0 (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } } els{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == if{ #STATE0_TIMER# 0 &gt; if{ (E:SIMULATION TIME, seconds) #STATE0_TIMER# + (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } } els{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #MOMENTARY_SWITCH_DOWN_INDEX# == if{ #STATE_MAX_TIMER# 0 &gt; if{ (E:SIMULATION TIME, seconds) #STATE_MAX_TIMER# + (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } } els{ 0 (&gt;#SWITCH_POSITION_TYPE_TIMER#:#SWITCH_POSITION_VAR_TIMER#) } } } } } </Update> <Condition Check="MOMENTARY_REPEAT_FREQUENCY"> <True> <Update Frequency="#MOMENTARY_REPEAT_FREQUENCY#" InteractionModel="All"> (O:XMLVAR_Repeat_StartTime) (E:SIMULATION TIME, seconds) &lt; if{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 0 == if{ #CODE_POS_0# } els{ (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) #POS_MAX# == if{ #CODE_POS_MAX# } } } </Update> </True> </Condition> </Condition> <UseTemplate Name="ASOBO_GT_MouseRect"> <MouseFlags>LeftAll+WheelUp+WheelDown+Lock+Unlock#ADDITIONAL_MOUSEFLAGS#</MouseFlags> <ANIMATION_CODE_SETTER>(#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) 100 *</ANIMATION_CODE_SETTER> <CALLBACKCODE_DEFAULT_IM> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) (&gt;O:PreviousPos) #INPUT_CODE_IM_DEFAULT# :1 #CODE_UP# #CODE_UP_CLOSING# (O:GoToRelease) if{ g3 } quit :2 #CODE_DOWN# #CODE_DOWN_CLOSING# (O:GoToRelease) if{ g3 } quit :3 0 (&gt;O:GoToRelease) #CODE_RELEASE# quit </CALLBACKCODE_DEFAULT_IM> <CALLBACKCODE_DRAG_IM> (#SWITCH_POSITION_TYPE#:#SWITCH_POSITION_VAR#) (&gt;O:PreviousPos) #IM_DRAG_ADDITIONAL_EVENT_HANDLING# #INPUT_CODE_IM_DRAG# :1 (#DRAG_ANIMATION_TARGET_VARIABLE_TYPE#:#DRAG_ANIMATION_TARGET_VARIABLE_NAME#) (#DRAG_ANIMATION_VARIABLE_TYPE#:#DRAG_ANIMATION_VARIABLE_NAME#) == if{ #CODE_UP# #CODE_UP_CLOSING# } quit :2 (#DRAG_ANIMATION_TARGET_VARIABLE_TYPE#:#DRAG_ANIMATION_TARGET_VARIABLE_NAME#) (#DRAG_ANIMATION_VARIABLE_TYPE#:#DRAG_ANIMATION_VARIABLE_NAME#) == if{ #CODE_DOWN# } quit :3 #CODE_RELEASE# quit </CALLBACKCODE_DRAG_IM> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • HELPID
      • TOOLTIPID
      • SWITCH_POSITION_TYPE
      • SWITCH_POSITION_VAR
      • CODE_POS_0
      • CODE_POS_1
      • CODE_POS_0_VERIF
      • CODE_POS_1_VERIF
      • CODE_UP
      • CODE_UP_CLOSING
      • CODE_DOWN
      • CODE_DOWN_CLOSING
      • CODE_RELEASE
      • LEFTARROW
      • RIGHTARROW
      • UPARROW
      • DOWNARROW
      • INPUT_CODE
      • CODE_REPEAT
      • PERCENT_PER_SECONDS
    • Override

      Condition: Check(MOMENTARY_SWITCH)

      • Case: True

        Parameters set:

        • CODE_POS_REST_STATE (using REST_STATE)

    Templates used:

    • ASOBO_GT_MouseRect

      Parameters set:

      • MouseFlags (using ADDITIONAL_MOUSEFLAGS)
      • ANIMATION_CODE_SETTER (using SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR)
      • CALLBACKCODE_DEFAULT_IM (using SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR, INPUT_CODE_IM_DEFAULT, CODE_UP, CODE_UP_CLOSING, CODE_DOWN, CODE_DOWN_CLOSING, CODE_RELEASE)
      • CALLBACKCODE_DRAG_IM (using SWITCH_POSITION_TYPE, SWITCH_POSITION_VAR, IM_DRAG_ADDITIONAL_EVENT_HANDLING, INPUT_CODE_IM_DRAG, DRAG_ANIMATION_TARGET_VARIABLE_TYPE, DRAG_ANIMATION_TARGET_VARIABLE_NAME, DRAG_ANIMATION_VARIABLE_TYPE, DRAG_ANIMATION_VARIABLE_NAME, CODE_UP, CODE_UP_CLOSING, CODE_DOWN, CODE_RELEASE)

    Condition: Check(REPEAT_FREQUENCY)

    • Case: True

      Parameters read:

      • REPEAT_FREQUENCY
      • CODE_REPEAT

    Condition: Check(MOMENTARY_SWITCH)

    • Case: True

      Parameters read:

      • SWITCH_POSITION_TYPE
      • SWITCH_POSITION_VAR
      • MOMENTARY_SWITCH_DOWN_INDEX
      • THRESHOLD_INPUT
      • SWITCH_POSITION_TYPE_ISDOWN
      • SWITCH_POSITION_VAR_ISDOWN
      • SWITCH_POSITION_TYPE_TIMER
      • SWITCH_POSITION_VAR_TIMER
      • CODE_POS_1
      • REST_STATE
      • CODE_POS_REST_STATE
      • STATE0_TIMER
      • STATE_MAX_TIMER

      Condition: Check(MOMENTARY_REPEAT_FREQUENCY)

      • Case: True

        Parameters read:

        • MOMENTARY_REPEAT_FREQUENCY
        • SWITCH_POSITION_TYPE
        • SWITCH_POSITION_VAR
        • CODE_POS_0
        • POS_MAX
        • CODE_POS_MAX
  • ASOBO_GT_Interaction_WheelAndContinuousLeft_Vertical

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_WheelAndContinuousLeft_Vertical"> <DefaultTemplateParameters> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="CLOCKWISE_CODE_DRAG_IM"/> </And> </Test> <False> <Condition NotEmpty="CLOCKWISE_CODE"> <True> <CLOCKWISE_CODE_DEFAULT_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DEFAULT_IM> <CLOCKWISE_CODE_DRAG_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DRAG_IM> </True> <False> <CLOCKWISE_CODE_DEFAULT_IM/> <CLOCKWISE_CODE_DRAG_IM/> </False> </Condition> </False> </Condition> <Condition> <Test> <And> <Arg NotEmpty="ANTICLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="ANTICLOCKWISE_CODE_DRAG_IM"/> </And> </Test> <False> <Condition NotEmpty="ANTICLOCKWISE_CODE"> <True> <ANTICLOCKWISE_CODE_DEFAULT_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DEFAULT_IM> <ANTICLOCKWISE_CODE_DRAG_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DRAG_IM> </True> <False> <ANTICLOCKWISE_CODE_DEFAULT_IM/> <ANTICLOCKWISE_CODE_DRAG_IM/> </False> </Condition> </False> </Condition> </DefaultTemplateParameters> <UseTemplate Name="ASOBO_GT_Interaction_WheelAndContinuousLeft_Base"> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> <AXIS>Y</AXIS> <CLOCKWISE_CODE_DEFAULT_IM>#ANTICLOCKWISE_CODE_DEFAULT_IM#</CLOCKWISE_CODE_DEFAULT_IM> <ANTICLOCKWISE_CODE_DEFAULT_IM>#CLOCKWISE_CODE_DEFAULT_IM#</ANTICLOCKWISE_CODE_DEFAULT_IM> <CLOCKWISE_CODE_DRAG_IM>#ANTICLOCKWISE_CODE_DRAG_IM#</CLOCKWISE_CODE_DRAG_IM> <ANTICLOCKWISE_CODE_DRAG_IM>#CLOCKWISE_CODE_DRAG_IM#</ANTICLOCKWISE_CODE_DRAG_IM> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Condition: Test(CLOCKWISE_CODE_DEFAULT_IM, CLOCKWISE_CODE_DRAG_IM)

      • Case: False

        Condition: NotEmpty(CLOCKWISE_CODE)

        • Case: True

          Parameters set:

          • CLOCKWISE_CODE_DEFAULT_IM (using CLOCKWISE_CODE)
          • CLOCKWISE_CODE_DRAG_IM (using CLOCKWISE_CODE)
        • Case: False

          Parameters set:

          • CLOCKWISE_CODE_DEFAULT_IM
          • CLOCKWISE_CODE_DRAG_IM

      Condition: Test(ANTICLOCKWISE_CODE_DEFAULT_IM, ANTICLOCKWISE_CODE_DRAG_IM)

      • Case: False

        Condition: NotEmpty(ANTICLOCKWISE_CODE)

        • Case: True

          Parameters set:

          • ANTICLOCKWISE_CODE_DEFAULT_IM (using ANTICLOCKWISE_CODE)
          • ANTICLOCKWISE_CODE_DRAG_IM (using ANTICLOCKWISE_CODE)
        • Case: False

          Parameters set:

          • ANTICLOCKWISE_CODE_DEFAULT_IM
          • ANTICLOCKWISE_CODE_DRAG_IM

    Templates used:

    • ASOBO_GT_Interaction_WheelAndContinuousLeft_Base

      Parameters set:

      • UPARROW
      • DOWNARROW
      • AXIS
      • CLOCKWISE_CODE_DEFAULT_IM (using ANTICLOCKWISE_CODE_DEFAULT_IM)
      • ANTICLOCKWISE_CODE_DEFAULT_IM (using CLOCKWISE_CODE_DEFAULT_IM)
      • CLOCKWISE_CODE_DRAG_IM (using ANTICLOCKWISE_CODE_DRAG_IM)
      • ANTICLOCKWISE_CODE_DRAG_IM (using CLOCKWISE_CODE_DRAG_IM)
  • ASOBO_GT_Interaction_WheelAndContinuousLeft_Horizontal

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_WheelAndContinuousLeft_Horizontal"> <UseTemplate Name="ASOBO_GT_Interaction_WheelAndContinuousLeft_Base"> <LEFTARROW>TurnLeft</LEFTARROW> <RIGHTARROW>TurnRight</RIGHTARROW> <AXIS>X</AXIS> </UseTemplate> </Template>

    Templates used:

  • ASOBO_GT_Interaction_WheelAndContinuousLeft_Base

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_WheelAndContinuousLeft_Base"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <UPARROW/> <DOWNARROW/> <LEFTARROW/> <RIGHTARROW/> <CALLBACKCODE/> <UPDATE_FREQUENCY>10</UPDATE_FREQUENCY> <UPDATE_DELAY>0.4</UPDATE_DELAY> <DRAG_SCALAR>0.0001</DRAG_SCALAR> <THRESHOLD_INPUT>0.00025</THRESHOLD_INPUT> <THRESHOLD_MOUSE>0.001</THRESHOLD_MOUSE> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="CLOCKWISE_CODE_DRAG_IM"/> </And> </Test> <False> <Condition NotEmpty="CLOCKWISE_CODE"> <True> <CLOCKWISE_CODE_DEFAULT_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DEFAULT_IM> <CLOCKWISE_CODE_DRAG_IM>#CLOCKWISE_CODE#</CLOCKWISE_CODE_DRAG_IM> </True> <False> <CLOCKWISE_CODE_DEFAULT_IM/> <CLOCKWISE_CODE_DRAG_IM/> </False> </Condition> </False> </Condition> <Condition> <Test> <And> <Arg NotEmpty="ANTICLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="ANTICLOCKWISE_CODE_DRAG_IM"/> </And> </Test> <False> <Condition NotEmpty="ANTICLOCKWISE_CODE"> <True> <ANTICLOCKWISE_CODE_DEFAULT_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DEFAULT_IM> <ANTICLOCKWISE_CODE_DRAG_IM>#ANTICLOCKWISE_CODE#</ANTICLOCKWISE_CODE_DRAG_IM> </True> <False> <ANTICLOCKWISE_CODE_DEFAULT_IM/> <ANTICLOCKWISE_CODE_DRAG_IM/> </False> </Condition> </False> </Condition> <UPARROW_DRAG_IM/> <DOWNARROW_DRAG_IM/> <LEFTARROW_DRAG_IM/> <RIGHTARROW_DRAG_IM/> <CURSOR_CENTER_DRAG_IM/> <CURSOR_DRAG_IM>Grab</CURSOR_DRAG_IM> </DefaultTemplateParameters> <OverrideTemplateParameters> <THRESHOLD>#THRESHOLD_INPUT# #THRESHOLD_MOUSE# (M:InputType) 1 == ?</THRESHOLD> </OverrideTemplateParameters> <Condition> <Test> <Arg NotEmpty="CLOCKWISE_CODE_DEFAULT_IM"/> <Arg NotEmpty="ANTICLOCKWISE_CODE_DEFAULT_IM"/> </Test> <True> <Update Frequency="#UPDATE_FREQUENCY#" InteractionModel="Default"> (O:XMLVAR_FirstUpdateTime) (E:SIMULATION TIME, seconds) &lt; if{ (O:_MouseDownRelativePos#AXIS#) 0 &gt; if{ #CLOCKWISE_CODE_DEFAULT_IM# } els{ (O:_MouseDownRelativePos#AXIS#) 0 &lt; if{ #ANTICLOCKWISE_CODE_DEFAULT_IM# } } } </Update> </True> </Condition> <UseTemplate Name="ASOBO_GT_MouseRect"> <MouseFlags>LeftAll+WheelUp+WheelDown+Lock+Unlock</MouseFlags> <CALLBACKCODE_DEFAULT_IM> (M:Event) &apos;WheelUp&apos; scmi 0 == if{ #CLOCKWISE_CODE_DEFAULT_IM# } els{ (M:Event) &apos;WheelDown&apos; scmi 0 == if{ #ANTICLOCKWISE_CODE_DEFAULT_IM# } els{ (M:Event) &apos;LeftSingle&apos; scmi 0 == if{ (M:Relative#AXIS#) (&gt;O:_MouseDownRelativePos#AXIS#) (E:SIMULATION TIME, seconds) #UPDATE_DELAY# + (&gt;O:XMLVAR_FirstUpdateTime) (O:_MouseDownRelativePos#AXIS#) 0 &gt; if{ #CLOCKWISE_CODE_DEFAULT_IM# } els{ (O:_MouseDownRelativePos#AXIS#) 0 &lt; if{ #ANTICLOCKWISE_CODE_DEFAULT_IM# } } } els{ (M:Event) &apos;LeftRelease&apos; scmi 0 == if{ 0 (&gt;O:_MouseDownRelativePos#AXIS#) } } } } </CALLBACKCODE_DEFAULT_IM> <CALLBACKCODE_DRAG_IM> (M:Event) &apos;WheelUp&apos; scmi 0 == if{ #CLOCKWISE_CODE_DRAG_IM# } els{ (M:Event) &apos;WheelDown&apos; scmi 0 == if{ #ANTICLOCKWISE_CODE_DRAG_IM# } els{ (M:Event) &apos;Lock&apos; scmi 0 == if{ (M:Relative#AXIS#) (&gt;O:_Last#AXIS#) } els{ (M:Event) &apos;Unlock&apos; scmi 0 == if{ 0 (&gt;O:_Last#AXIS#) } els{ (M:Event) &apos;LeftDrag&apos; scmi 0 == if{ (M:Relative#AXIS#) (O:_Last#AXIS#) - sp0 #THRESHOLD# (&gt;O:_InputThreshold) l0 abs (O:_InputThreshold) &gt; if{ l0 (O:_InputThreshold) / abs flr sp1 l0 (O:_InputThreshold) % abs sp2 :1 (* for loop *) l1 0 &lt;= if{ g2 } l1 -- sp1 l0 0 &gt; if{ #CLOCKWISE_CODE_DRAG_IM# } els{ #ANTICLOCKWISE_CODE_DRAG_IM# } g1 :2 l0 0 &gt; if{ (M:Relative#AXIS#) l2 - (&gt;O:_Last#AXIS#) } els{ (M:Relative#AXIS#) l2 + (&gt;O:_Last#AXIS#) } } } } } } } quit </CALLBACKCODE_DRAG_IM> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • HELPID
      • TOOLTIPID
      • UPARROW
      • DOWNARROW
      • LEFTARROW
      • RIGHTARROW
      • CALLBACKCODE
      • UPDATE_FREQUENCY
      • UPDATE_DELAY
      • DRAG_SCALAR
      • THRESHOLD_INPUT
      • THRESHOLD_MOUSE
      • UPARROW_DRAG_IM
      • DOWNARROW_DRAG_IM
      • LEFTARROW_DRAG_IM
      • RIGHTARROW_DRAG_IM
      • CURSOR_CENTER_DRAG_IM
      • CURSOR_DRAG_IM

      Condition: Test(CLOCKWISE_CODE_DEFAULT_IM, CLOCKWISE_CODE_DRAG_IM)

      • Case: False

        Condition: NotEmpty(CLOCKWISE_CODE)

        • Case: True

          Parameters set:

          • CLOCKWISE_CODE_DEFAULT_IM (using CLOCKWISE_CODE)
          • CLOCKWISE_CODE_DRAG_IM (using CLOCKWISE_CODE)
        • Case: False

          Parameters set:

          • CLOCKWISE_CODE_DEFAULT_IM
          • CLOCKWISE_CODE_DRAG_IM

      Condition: Test(ANTICLOCKWISE_CODE_DEFAULT_IM, ANTICLOCKWISE_CODE_DRAG_IM)

      • Case: False

        Condition: NotEmpty(ANTICLOCKWISE_CODE)

        • Case: True

          Parameters set:

          • ANTICLOCKWISE_CODE_DEFAULT_IM (using ANTICLOCKWISE_CODE)
          • ANTICLOCKWISE_CODE_DRAG_IM (using ANTICLOCKWISE_CODE)
        • Case: False

          Parameters set:

          • ANTICLOCKWISE_CODE_DEFAULT_IM
          • ANTICLOCKWISE_CODE_DRAG_IM
    • Override

      Parameters set:

      • THRESHOLD (using THRESHOLD_INPUT, THRESHOLD_MOUSE)

    Templates used:

    • ASOBO_GT_MouseRect

      Parameters set:

      • MouseFlags
      • CALLBACKCODE_DEFAULT_IM (using CLOCKWISE_CODE_DEFAULT_IM, ANTICLOCKWISE_CODE_DEFAULT_IM, AXIS, UPDATE_DELAY)
      • CALLBACKCODE_DRAG_IM (using CLOCKWISE_CODE_DRAG_IM, ANTICLOCKWISE_CODE_DRAG_IM, AXIS, THRESHOLD)

    Condition: Test(CLOCKWISE_CODE_DEFAULT_IM, ANTICLOCKWISE_CODE_DEFAULT_IM)

    • Case: True

      Parameters read:

      • UPDATE_FREQUENCY
      • AXIS
      • CLOCKWISE_CODE_DEFAULT_IM
      • ANTICLOCKWISE_CODE_DEFAULT_IM
  • ASOBO_GT_Interaction_DraggingYAxis_SimGates_Base

    Definition from XML
    <Template Name="ASOBO_GT_Interaction_DraggingYAxis_SimGates_Base"> <DefaultTemplateParameters> <LIMITATIONS_OVERRIDE/> <INCREMENT>0.1</INCREMENT> <Condition Check="IGNORE_GATES"> <LIMITATIONS_OVERRIDE> #STEPS_NUMBER# (&gt;O:MaxDraggingPosition) 0 (&gt;O:MinDraggingPosition) </LIMITATIONS_OVERRIDE> </Condition> </DefaultTemplateParameters> <UseTemplate Name="ASOBO_GT_MouseRect"> <MOUSEFLAGS>LeftAll+WheelUp+WheelDown</MOUSEFLAGS> <CALLBACKCODE> (A:#SIMVAR#, #SIMVAR_UNITS#) #SIMVAR_CONVERSION# sp0 (M:Event) &apos;LeftSingle&apos; scmp 0 == if{ (M:RelativeY) (&gt;O:PrevY, Number) l0 near l0 - abs #GATE_TOLERANCE# &lt; sp1 #GATE_DIRECTION# -1 != if{ l1 if{ l0 near 1 + #STEPS_NUMBER# min (&gt;O:MaxDraggingPosition) } els{ l0 ceil #STEPS_NUMBER# min (&gt;O:MaxDraggingPosition) } } els{ #STEPS_NUMBER# (&gt;O:MaxDraggingPosition) } #GATE_DIRECTION# 1 != if{ l1 if{ l0 near 1 - 0 max (&gt;O:MinDraggingPosition) } els{ l0 flr 0 max (&gt;O:MinDraggingPosition) } } els{ 0 (&gt;O:MinDraggingPosition) } } els{ (M:Event) &apos;LeftDrag&apos; scmp 0 == if{ (O:PrevY) (M:RelativeY) - sp2 l2 #DRAG_SPEED# * sp3 #GATE_DIRECTION# -1 != if{ l0 #GATE_TOLERANCE# + flr 1 + (O:MaxDraggingPosition) min (&gt;O:MaxDraggingPosition) } #GATE_DIRECTION# 1 != if{ l0 #GATE_TOLERANCE# - ceil 1 - (O:MinDraggingPosition) max (&gt;O:MinDraggingPosition) } #LIMITATIONS_OVERRIDE# l0 l3 + (O:MaxDraggingPosition) min (O:MinDraggingPosition) max #EVENTID_CONVERSION# (&gt;K:#EVENTID_SET#) (M:RelativeY) (&gt;O:PrevY) } els{ (M:Event) &apos;WheelUp&apos; scmp 0 == if{ l0 #INCREMENT# - #EVENTID_CONVERSION# (&gt;K:#EVENTID_SET#) } els{ (M:Event) &apos;WheelDown&apos; scmp 0 == if{ l0 #INCREMENT# + #EVENTID_CONVERSION# (&gt;K:#EVENTID_SET#) } } } } </CALLBACKCODE> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • LIMITATIONS_OVERRIDE
      • INCREMENT

      Condition: Check(IGNORE_GATES)

      • Case: True

        Parameters set:

        • LIMITATIONS_OVERRIDE (using STEPS_NUMBER)

    Templates used:

    • ASOBO_GT_MouseRect

      Parameters set:

      • MOUSEFLAGS
      • CALLBACKCODE (using SIMVAR, SIMVAR_UNITS, SIMVAR_CONVERSION, GATE_TOLERANCE, GATE_DIRECTION, STEPS_NUMBER, DRAG_SPEED, LIMITATIONS_OVERRIDE, EVENTID_CONVERSION, EVENTID_SET, INCREMENT)