# Interactions_Subtemplates.xml [[Go back to index]](..\..\..\Template_Explorer.html) 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 > if{ (E:SIMULATION TIME, seconds) \#STATE0\_TIMER\# + (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) (E:SIMULATION TIME, seconds) \#MOMENTARY\_REPEAT\_DELAY\# + (>O:XMLVAR\_Repeat\_StartTime) } els{ 0 (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } 0 1 l1 ? (>\#SWITCH\_POSITION\_TYPE\_ISDOWN\#:\#SWITCH\_POSITION\_VAR\_ISDOWN\#) </MOMENTARY\_UP\_0> <CODE\_RELEASE>0 (>\#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\# (>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> <Number>\#CURRENT\_ID\#</Number> <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 > if{ (E:SIMULATION TIME, seconds) \#STATE\_MAX\_TIMER\# + (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) (E:SIMULATION TIME, seconds) \#MOMENTARY\_REPEAT\_DELAY\# + (>O:XMLVAR\_Repeat\_StartTime) } els{ 0 (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } 0 1 l1 ? (>\#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> <Number>\#NEXT\_ID\#</Number> <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\# (>\#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\# (>\#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\# > 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) < if{ 0 (>O:\_IsLimited) } (E:SIMULATION TIME, second) @DragLockResetTimer + (>O:\_ResetDragTime) </CHECK\_AND\_RESET\_DRAG\_LOCK> <CHECK\_IS\_DRAG\_LOCKED>(O:\_IsLimited)</CHECK\_IS\_DRAG\_LOCKED> <SET\_DRAG\_LOCK>1 (>O:\_IsLimited)</SET\_DRAG\_LOCK> <UNSET\_DRAG\_LOCK>0 (>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><=</DRAG\_IS\_POSITIVE\_CONDITION> </True> <False> <DRAG\_IS\_POSITIVE\_CONDITION>></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\#) < if{ g1 } els{ l0 (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) > if{ g2 } } </DRAG\_CODE\_VERTICAL> <DRAG\_CODE\_HORIZONTAL> (M:DragPercent) \#NUM\_STATES\# \* flr sp0 l0 (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) < if{ g1 } els{ l0 (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) > if{ g2 } } </DRAG\_CODE\_HORIZONTAL> </True> <False> <DRAG\_CODE\_VERTICAL> \#CHECK\_AND\_RESET\_DRAG\_LOCK\# \#CHECK\_IS\_DRAG\_LOCKED\# if{ (M:RelativeY) (>O:OldMouseY) } els{ (O:OldMouseY) (M:RelativeY) - abs \#THRESHOLD\# > if{ \#SET\_DRAG\_LOCK\# (O:OldMouseY) sp0 (M:RelativeY) (>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) (>O:OldMouseX) } els{ (O:OldMouseX) (M:RelativeX) - abs \#THRESHOLD\# > if{ \#SET\_DRAG\_LOCK\# (O:OldMouseX) sp0 (M:RelativeX) (>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\# (>\#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 (>\#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 (>O:GoToRelease) g1 } els{ (M:Event) 'WheelDown' scmi 0 == if{ 1 (>O:GoToRelease) g2 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ \#CENTER\_HANDLING\_CODE\_START\# \#LEFT\_DOWN\_CODE\# \#CENTER\_HANDLING\_CODE\_END\# (M:RelativeY) 0 > 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) (>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 (>O:GoToRelease) g2 } els{ (M:Event) 'WheelDown' scmi 0 == if{ 1 (>O:GoToRelease) g1 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ \#CENTER\_HANDLING\_CODE\_START\# \#LEFT\_DOWN\_CODE\# \#CENTER\_HANDLING\_CODE\_END\# (M:RelativeX) 0 > 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) (>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\# < (M:Y) abs \#THRESHOLD\_INPUT\# < and and if{ 0 (>\#SWITCH\_POSITION\_TYPE\_ISDOWN\#:\#SWITCH\_POSITION\_VAR\_ISDOWN\#) } (\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) 0 > if{ (\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) (E:SIMULATION TIME, seconds) < (\#SWITCH\_POSITION\_TYPE\_ISDOWN\#:\#SWITCH\_POSITION\_VAR\_ISDOWN\#) ! and if{ (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) 0 == if{ 1 (>\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) \#CODE\_POS\_1\# } els{ \#REST\_STATE\# (>\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) \#CODE\_POS\_REST\_STATE\# } 0 (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } } els{ (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) 0 == if{ \#STATE0\_TIMER\# 0 > if{ (E:SIMULATION TIME, seconds) \#STATE0\_TIMER\# + (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } } els{ (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) \#MOMENTARY\_SWITCH\_DOWN\_INDEX\# == if{ \#STATE\_MAX\_TIMER\# 0 > if{ (E:SIMULATION TIME, seconds) \#STATE\_MAX\_TIMER\# + (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } } els{ 0 (>\#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) < 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\#) (>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 (>O:GoToRelease) \#CODE\_RELEASE\# quit </CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM> (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) (>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"> <Parameters Type="Default"> <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> <THRESHOLD\_VR>0.008</THRESHOLD\_VR> <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> </Parameters> <Parameters Type="Override"> <THRESHOLD>\#THRESHOLD\_VR\# \#THRESHOLD\_INPUT\# \#THRESHOLD\_MOUSE\# @Case\_InputType</THRESHOLD> <Condition Valid="INVERT\_CLOCKWISE\_ANTICLOCKWISE"> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE\_CODE\_DEFAULT\_IM"/> <Arg NotEmpty="ANTICLOCKWISE\_CODE\_DEFAULT\_IM"/> </And> </Test> <True> <CLOCKWISE\_CODE\_DEFAULT\_IM>\#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\#</CLOCKWISE\_CODE\_DEFAULT\_IM> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM>\#CLOCKWISE\_CODE\_DEFAULT\_IM\#</ANTICLOCKWISE\_CODE\_DEFAULT\_IM> </True> </Condition> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE\_CODE\_DRAG\_IM"/> <Arg NotEmpty="ANTICLOCKWISE\_CODE\_DRAG\_IM"/> </And> </Test> <True> <CLOCKWISE\_CODE\_DRAG\_IM>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CLOCKWISE\_CODE\_DRAG\_IM> <ANTICLOCKWISE\_CODE\_DRAG\_IM>\#CLOCKWISE\_CODE\_DRAG\_IM\#</ANTICLOCKWISE\_CODE\_DRAG\_IM> </True> </Condition> </Condition> </Parameters> <!-- Call code if left click is held, depending on the X axis side --> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE\_CODE\_DEFAULT\_IM"/> <Arg NotEmpty="ANTICLOCKWISE\_CODE\_DEFAULT\_IM"/> </And> </Test> <True> <Update Frequency = "\#UPDATE\_FREQUENCY\#" InteractionModel="Default"> (O:XMLVAR\_FirstUpdateTime) (E:SIMULATION TIME, seconds) < if{ (O:\_MouseDownRelativePos\#AXIS\#) 0 > if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (O:\_MouseDownRelativePos\#AXIS\#) 0 < 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\#) (>O:\_MouseDownRelativePos\#AXIS\#) (E:SIMULATION TIME, seconds) \#UPDATE\_DELAY\# + (>O:XMLVAR\_FirstUpdateTime) (O:\_MouseDownRelativePos\#AXIS\#) 0 > if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (O:\_MouseDownRelativePos\#AXIS\#) 0 < if{ \#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\# } } } els{ (M:Event) 'LeftRelease' scmi 0 == if{ 0 (>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\#) (>O:\_Last\#AXIS\#) } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_Last\#AXIS\#) } els{ (M:Event) 'LeftDrag' scmi 0 == if{ (M:Relative\#AXIS\#) (O:\_Last\#AXIS\#) - sp0 \#THRESHOLD\# (>O:\_InputThreshold) l0 abs (O:\_InputThreshold) > if{ l0 (O:\_InputThreshold) / abs flr sp1 l0 (O:\_InputThreshold) % abs sp2 :1 (\* for loop \*) l1 0 <= if{ g2 } l1 -- sp1 l0 0 > if{ \#CLOCKWISE\_CODE\_DRAG\_IM\# } els{ \#ANTICLOCKWISE\_CODE\_DRAG\_IM\# } g1 :2 l0 0 > if{ (M:Relative\#AXIS\#) l2 - (>O:\_Last\#AXIS\#) } els{ (M:Relative\#AXIS\#) l2 + (>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\# (>O:MaxDraggingPosition) 0 (>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) (>O:PrevY, Number) l0 near l0 - abs \#GATE\_TOLERANCE\# < sp1 \#GATE\_DIRECTION\# -1 != if{ l1 if{ l0 near 1 + \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } els{ l0 ceil \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } } els{ \#STEPS\_NUMBER\# (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ l1 if{ l0 near 1 - 0 max (>O:MinDraggingPosition) } els{ l0 flr 0 max (>O:MinDraggingPosition) } } els{ 0 (>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 (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ l0 \#GATE\_TOLERANCE\# - ceil 1 - (O:MinDraggingPosition) max (>O:MinDraggingPosition) } \#LIMITATIONS\_OVERRIDE\# l0 l3 + (O:MaxDraggingPosition) min (O:MinDraggingPosition) max \#EVENTID\_CONVERSION\# (>K:\#EVENTID\_SET\#) (M:RelativeY) (>O:PrevY) } els{ (M:Event) 'WheelUp' scmp 0 == if{ l0 \#INCREMENT\# - \#EVENTID\_CONVERSION\# (>K:\#EVENTID\_SET\#) } els{ (M:Event) 'WheelDown' scmp 0 == if{ l0 \#INCREMENT\# + \#EVENTID\_CONVERSION\# (>K:\#EVENTID\_SET\#) } } } } </CALLBACKCODE> </UseTemplate> </Template> </ModelBehaviors>     ### Templates Template list 1. [ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code\_Subtemplate1](#ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate1) 2. [ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code\_Subtemplate2](#ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate2) 3. [ASOBO\_GT\_Interaction\_LeftSingle\_ParamSetup](#ASOBO_GT_Interaction_LeftSingle_ParamSetup) 4. [ASOBO\_GT\_Interaction\_LeftSingle\_ParamSetup\_Recursive\_1](#ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1) 5. [ASOBO\_GT\_Interaction\_LeftSingle\_ParamSetup\_Recursive\_2](#ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_2) 6. [ASOBO\_GT\_Interaction\_LeftSingle\_CodeSetup\_Recursive](#ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive) 7. [ASOBO\_GT\_Interaction\_LeftSingle\_MultiStates\_Base\_1](#ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_1) 8. [ASOBO\_GT\_Interaction\_LeftSingle\_MultiStates\_Base\_2](#ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_2) 9. [ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_Vertical](#ASOBO_GT_Interaction_WheelAndContinuousLeft_Vertical) 10. [ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_Horizontal](#ASOBO_GT_Interaction_WheelAndContinuousLeft_Horizontal) 11. [ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_Base](#ASOBO_GT_Interaction_WheelAndContinuousLeft_Base) 12. [ASOBO\_GT\_Interaction\_DraggingYAxis\_SimGates\_Base](#ASOBO_GT_Interaction_DraggingYAxis_SimGates_Base) - #### 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) 'WheelDown' scmi 0 == if{ \#WHEEL\_DOWN\_CODE\# } \#MOUSE\_WHEEL\_INPUTS\# }</MOUSE\_WHEEL\_INPUTS> </Condition> </UseTemplate> </Template>   Templates used: - [ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code\_Subtemplate2](interactions-subtemplates/#ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate2) Condition: Check(WHEEL\_DOWN\_CODE) - Case: True Parameters set: - MOUSEFLAGS (using MOUSEFLAGS) - MOUSE\_WHEEL\_INPUTS (using WHEEL\_DOWN\_CODE, MOUSE\_WHEEL\_INPUTS) [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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) 'Lock' scmi 0 == if{ \#LEFT\_SINGLE\_CODE\# } els{ (M:Event) 'Unlock' scmi 0 == if{ \#LEFT\_LEAVE\_CODE\# } \#MOUSE\_WHEEL\_INPUTS\# } </CALLBACKCODE> </UseTemplate> </Template> Parameters initialization: - Default   Templates used: - [ASOBO\_GT\_MouseRect](../interactions/#ASOBO_GT_MouseRect) Parameters set: - CALLBACKCODE (using LEFT\_SINGLE\_CODE, LEFT\_LEAVE\_CODE, MOUSE\_WHEEL\_INPUTS) [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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 > if{ (E:SIMULATION TIME, seconds) \#STATE0\_TIMER\# + (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) (E:SIMULATION TIME, seconds) \#MOMENTARY\_REPEAT\_DELAY\# + (>O:XMLVAR\_Repeat\_StartTime) } els{ 0 (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } 0 1 l1 ? (>\#SWITCH\_POSITION\_TYPE\_ISDOWN\#:\#SWITCH\_POSITION\_VAR\_ISDOWN\#) </MOMENTARY\_UP\_0> <CODE\_RELEASE>0 (>\#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](interactions-subtemplates/#ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1) Parameters set: - CURRENT\_ID (using START\_STATE) - POS\_MAX (using START\_STATE) [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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](interactions-subtemplates/#ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_2) Parameters set: - CURRENT\_ENUM\_VAL\_POS (using CURRENT\_ID) [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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\# (>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> <Number>\#CURRENT\_ID\#</Number> <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 - Case: True   Templates used: - [ASOBO\_GT\_Interaction\_LeftSingle\_ParamSetup\_Recursive\_1](interactions-subtemplates/#ASOBO_GT_Interaction_LeftSingle_ParamSetup_Recursive_1) - Case: False   Templates used: - [ASOBO\_GT\_Interaction\_LeftSingle\_CodeSetup\_Recursive](interactions-subtemplates/#ASOBO_GT_Interaction_LeftSingle_CodeSetup_Recursive) Parameters set: - CURRENT\_ID (using START\_STATE) - NEXT\_ID (using START\_STATE) - CODE\_POS\_MAX (using START\_STATE) - CODE\_POS\_MAX\_VERIF (using START\_STATE) - ELSE\_BRACKET\_OPENING - ELSE\_BRACKET\_CLOSING [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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 > if{ (E:SIMULATION TIME, seconds) \#STATE\_MAX\_TIMER\# + (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) (E:SIMULATION TIME, seconds) \#MOMENTARY\_REPEAT\_DELAY\# + (>O:XMLVAR\_Repeat\_StartTime) } els{ 0 (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } 0 1 l1 ? (>\#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> <Number>\#NEXT\_ID\#</Number> <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\# (>\#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\# (>\#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 - Case: True   Templates used: - [ASOBO\_GT\_Interaction\_LeftSingle\_CodeSetup\_Recursive](interactions-subtemplates/#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](interactions-subtemplates/#ASOBO_GT_Interaction_LeftSingle_MultiStates_Base_1) 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) [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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) '\#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\# > 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) < if{ 0 (>O:\_IsLimited) } (E:SIMULATION TIME, second) @DragLockResetTimer + (>O:\_ResetDragTime) </CHECK\_AND\_RESET\_DRAG\_LOCK> <CHECK\_IS\_DRAG\_LOCKED>(O:\_IsLimited)</CHECK\_IS\_DRAG\_LOCKED> <SET\_DRAG\_LOCK>1 (>O:\_IsLimited)</SET\_DRAG\_LOCK> <UNSET\_DRAG\_LOCK>0 (>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><=</DRAG\_IS\_POSITIVE\_CONDITION> </True> <False> <DRAG\_IS\_POSITIVE\_CONDITION>></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\#) < if{ g1 } els{ l0 (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) > if{ g2 } } </DRAG\_CODE\_VERTICAL> <DRAG\_CODE\_HORIZONTAL> (M:DragPercent) \#NUM\_STATES\# \* flr sp0 l0 (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) < if{ g1 } els{ l0 (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) > if{ g2 } } </DRAG\_CODE\_HORIZONTAL> </True> <False> <DRAG\_CODE\_VERTICAL> \#CHECK\_AND\_RESET\_DRAG\_LOCK\# \#CHECK\_IS\_DRAG\_LOCKED\# if{ (M:RelativeY) (>O:OldMouseY) } els{ (O:OldMouseY) (M:RelativeY) - abs \#THRESHOLD\# > if{ \#SET\_DRAG\_LOCK\# (O:OldMouseY) sp0 (M:RelativeY) (>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) (>O:OldMouseX) } els{ (O:OldMouseX) (M:RelativeX) - abs \#THRESHOLD\# > if{ \#SET\_DRAG\_LOCK\# (O:OldMouseX) sp0 (M:RelativeX) (>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\# (>\#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 (>\#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 (>O:GoToRelease) g1 } els{ (M:Event) 'WheelDown' scmi 0 == if{ 1 (>O:GoToRelease) g2 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ \#CENTER\_HANDLING\_CODE\_START\# \#LEFT\_DOWN\_CODE\# \#CENTER\_HANDLING\_CODE\_END\# (M:RelativeY) 0 > 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) (>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 (>O:GoToRelease) g2 } els{ (M:Event) 'WheelDown' scmi 0 == if{ 1 (>O:GoToRelease) g1 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ \#CENTER\_HANDLING\_CODE\_START\# \#LEFT\_DOWN\_CODE\# \#CENTER\_HANDLING\_CODE\_END\# (M:RelativeX) 0 > 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) (>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> 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](interactions-subtemplates/#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) [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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\# < (M:Y) abs \#THRESHOLD\_INPUT\# < and and if{ 0 (>\#SWITCH\_POSITION\_TYPE\_ISDOWN\#:\#SWITCH\_POSITION\_VAR\_ISDOWN\#) } (\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) 0 > if{ (\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) (E:SIMULATION TIME, seconds) < (\#SWITCH\_POSITION\_TYPE\_ISDOWN\#:\#SWITCH\_POSITION\_VAR\_ISDOWN\#) ! and if{ (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) 0 == if{ 1 (>\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) \#CODE\_POS\_1\# } els{ \#REST\_STATE\# (>\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) \#CODE\_POS\_REST\_STATE\# } 0 (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } } els{ (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) 0 == if{ \#STATE0\_TIMER\# 0 > if{ (E:SIMULATION TIME, seconds) \#STATE0\_TIMER\# + (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } } els{ (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) \#MOMENTARY\_SWITCH\_DOWN\_INDEX\# == if{ \#STATE\_MAX\_TIMER\# 0 > if{ (E:SIMULATION TIME, seconds) \#STATE\_MAX\_TIMER\# + (>\#SWITCH\_POSITION\_TYPE\_TIMER\#:\#SWITCH\_POSITION\_VAR\_TIMER\#) } } els{ 0 (>\#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) < 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\#) (>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 (>O:GoToRelease) \#CODE\_RELEASE\# quit </CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM> (\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) (>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](../interactions/#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 [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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](interactions-subtemplates/#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) [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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](interactions-subtemplates/#ASOBO_GT_Interaction_WheelAndContinuousLeft_Base) Parameters set: - LEFTARROW - RIGHTARROW - AXIS [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_Base Definition from XML <Template Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_Base"> <Parameters Type="Default"> <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> <THRESHOLD\_VR>0.008</THRESHOLD\_VR> <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> </Parameters> <Parameters Type="Override"> <THRESHOLD>\#THRESHOLD\_VR\# \#THRESHOLD\_INPUT\# \#THRESHOLD\_MOUSE\# @Case\_InputType</THRESHOLD> <Condition Valid="INVERT\_CLOCKWISE\_ANTICLOCKWISE"> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE\_CODE\_DEFAULT\_IM"/> <Arg NotEmpty="ANTICLOCKWISE\_CODE\_DEFAULT\_IM"/> </And> </Test> <True> <CLOCKWISE\_CODE\_DEFAULT\_IM>\#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\#</CLOCKWISE\_CODE\_DEFAULT\_IM> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM>\#CLOCKWISE\_CODE\_DEFAULT\_IM\#</ANTICLOCKWISE\_CODE\_DEFAULT\_IM> </True> </Condition> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE\_CODE\_DRAG\_IM"/> <Arg NotEmpty="ANTICLOCKWISE\_CODE\_DRAG\_IM"/> </And> </Test> <True> <CLOCKWISE\_CODE\_DRAG\_IM>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CLOCKWISE\_CODE\_DRAG\_IM> <ANTICLOCKWISE\_CODE\_DRAG\_IM>\#CLOCKWISE\_CODE\_DRAG\_IM\#</ANTICLOCKWISE\_CODE\_DRAG\_IM> </True> </Condition> </Condition> </Parameters> <Condition> <Test> <And> <Arg NotEmpty="CLOCKWISE\_CODE\_DEFAULT\_IM"/> <Arg NotEmpty="ANTICLOCKWISE\_CODE\_DEFAULT\_IM"/> </And> </Test> <True> <Update Frequency="\#UPDATE\_FREQUENCY\#" InteractionModel="Default"> (O:XMLVAR\_FirstUpdateTime) (E:SIMULATION TIME, seconds) < if{ (O:\_MouseDownRelativePos\#AXIS\#) 0 > if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (O:\_MouseDownRelativePos\#AXIS\#) 0 < 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\#) (>O:\_MouseDownRelativePos\#AXIS\#) (E:SIMULATION TIME, seconds) \#UPDATE\_DELAY\# + (>O:XMLVAR\_FirstUpdateTime) (O:\_MouseDownRelativePos\#AXIS\#) 0 > if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (O:\_MouseDownRelativePos\#AXIS\#) 0 < if{ \#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\# } } } els{ (M:Event) 'LeftRelease' scmi 0 == if{ 0 (>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\#) (>O:\_Last\#AXIS\#) } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_Last\#AXIS\#) } els{ (M:Event) 'LeftDrag' scmi 0 == if{ (M:Relative\#AXIS\#) (O:\_Last\#AXIS\#) - sp0 \#THRESHOLD\# (>O:\_InputThreshold) l0 abs (O:\_InputThreshold) > if{ l0 (O:\_InputThreshold) / abs flr sp1 l0 (O:\_InputThreshold) % abs sp2 :1 (\* for loop \*) l1 0 <= if{ g2 } l1 -- sp1 l0 0 > if{ \#CLOCKWISE\_CODE\_DRAG\_IM\# } els{ \#ANTICLOCKWISE\_CODE\_DRAG\_IM\# } g1 :2 l0 0 > if{ (M:Relative\#AXIS\#) l2 - (>O:\_Last\#AXIS\#) } els{ (M:Relative\#AXIS\#) l2 + (>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 - THRESHOLD\_VR - 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\_VR, THRESHOLD\_INPUT, THRESHOLD\_MOUSE) Condition: Valid(INVERT\_CLOCKWISE\_ANTICLOCKWISE) - Case: True Condition: Test(CLOCKWISE\_CODE\_DEFAULT\_IM, ANTICLOCKWISE\_CODE\_DEFAULT\_IM) - Case: True Parameters set: - CLOCKWISE\_CODE\_DEFAULT\_IM (using ANTICLOCKWISE\_CODE\_DEFAULT\_IM) - ANTICLOCKWISE\_CODE\_DEFAULT\_IM (using CLOCKWISE\_CODE\_DEFAULT\_IM) Condition: Test(CLOCKWISE\_CODE\_DRAG\_IM, ANTICLOCKWISE\_CODE\_DRAG\_IM) - Case: True Parameters set: - CLOCKWISE\_CODE\_DRAG\_IM (using ANTICLOCKWISE\_CODE\_DRAG\_IM) - ANTICLOCKWISE\_CODE\_DRAG\_IM (using CLOCKWISE\_CODE\_DRAG\_IM)   Templates used: - [ASOBO\_GT\_MouseRect](../interactions/#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 [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html) - #### 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\# (>O:MaxDraggingPosition) 0 (>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) (>O:PrevY, Number) l0 near l0 - abs \#GATE\_TOLERANCE\# < sp1 \#GATE\_DIRECTION\# -1 != if{ l1 if{ l0 near 1 + \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } els{ l0 ceil \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } } els{ \#STEPS\_NUMBER\# (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ l1 if{ l0 near 1 - 0 max (>O:MinDraggingPosition) } els{ l0 flr 0 max (>O:MinDraggingPosition) } } els{ 0 (>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 (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ l0 \#GATE\_TOLERANCE\# - ceil 1 - (O:MinDraggingPosition) max (>O:MinDraggingPosition) } \#LIMITATIONS\_OVERRIDE\# l0 l3 + (O:MaxDraggingPosition) min (O:MinDraggingPosition) max \#EVENTID\_CONVERSION\# (>K:\#EVENTID\_SET\#) (M:RelativeY) (>O:PrevY) } els{ (M:Event) 'WheelUp' scmp 0 == if{ l0 \#INCREMENT\# - \#EVENTID\_CONVERSION\# (>K:\#EVENTID\_SET\#) } els{ (M:Event) 'WheelDown' scmp 0 == if{ l0 \#INCREMENT\# + \#EVENTID\_CONVERSION\# (>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](../interactions/#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) [[Go back to top]](#top) [[Go back to index]](..\..\..\Template_Explorer.html)