# Interactions.xml [[Go back to index]](..\..\Template_Explorer.html) Asobo\(Generic\)Interactions.xml -------------------------------- Source XML <ModelBehaviors> <Include RelativeFile="Subtemplates\\\\Interactions\_Subtemplates.xml"/> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# Interaction Templates \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <!-- \#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# --> <!-- Empty interaction --> <Template Name="ASOBO\_GT\_Interaction\_NoInteraction"> <DefaultTemplateParameters> <MOUSEFLAGS/> <DISABLE\_INTERACTION\_LOCK>True</DISABLE\_INTERACTION\_LOCK> <DISABLE\_MOUSERECT>True</DISABLE\_MOUSERECT> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Part\_ID"/> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <CALLBACKCODE>0</CALLBACKCODE> </UseTemplate> </Template> <!-- Tooltip only interaction --> <Template Name="ASOBO\_GT\_Interaction\_Tooltip"> <Parameters Type="Default"> <ANIM\_NAME>\#NODE\_ID\#</ANIM\_NAME> <CONTAINER\_COUNT>0</CONTAINER\_COUNT> </Parameters> <Condition> <Test> <Greater> <Number>\#CONTAINER\_COUNT\#</Number> <Number>0</Number> </Greater> </Test> <True> <Component ID="\#NODE\_ID\#\_1" Node="\#NODE\_ID\#\_1"> <UseTemplate Name="ASOBO\_GT\_Interaction\_NoInteraction"> <TOOLTIPID>TT:COCKPIT.TOOLTIPS.INOP</TOOLTIPID> </UseTemplate> </Component> </True> <False> <Component ID="\#NODE\_ID\#" Node="\#NODE\_ID\#"> <UseTemplate Name="ASOBO\_GT\_Interaction\_NoInteraction"> <TOOLTIPID>TT:COCKPIT.TOOLTIPS.INOP</TOOLTIPID> </UseTemplate> <Condition NotEmpty="ANIM\_POS"> <True> <UseTemplate Name="ASOBO\_GT\_Anim\_Code"> <ANIM\_CODE>\#ANIM\_POS\#</ANIM\_CODE> </UseTemplate> </True> </Condition> <Condition NotEmpty="EMISSIVE\_CODE"> <True> <UseTemplate Name="ASOBO\_GT\_Emissive\_Gauge"> </UseTemplate> </True> </Condition> </Component> </False> </Condition> <Condition> <Test> <Greater> <Number>\#CONTAINER\_COUNT\#</Number> <Number>1</Number> </Greater> </Test> <True> <Component ID="\#NODE\_ID\#\_2" Node="\#NODE\_ID\#\_2"> <UseTemplate Name="ASOBO\_GT\_Interaction\_NoInteraction"> <TOOLTIPID>TT:COCKPIT.TOOLTIPS.INOP</TOOLTIPID> </UseTemplate> </Component> </True> </Condition> <Condition> <Test> <Greater> <Number>\#CONTAINER\_COUNT\#</Number> <Number>2</Number> </Greater> </Test> <True> <Component ID="\#NODE\_ID\#\_3" Node="\#NODE\_ID\#\_3"> <UseTemplate Name="ASOBO\_GT\_Interaction\_NoInteraction"> <TOOLTIPID>TT:COCKPIT.TOOLTIPS.INOP</TOOLTIPID> </UseTemplate> </Component> </True> </Condition> </Template> <!-- Simple left click interaction, using event. Required parameter: EVENTID --> <Template Name="ASOBO\_GT\_Interaction\_LeftSingle\_Event"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Hand</CURSOR> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle</MouseFlags> </UseTemplate> </Template> <!-- Simple left click interaction, using code. Required parameter: LEFT\_SINGLE\_CODE --> <Template Name="ASOBO\_GT\_Interaction\_LeftSingle\_Code"> <Parameters Type="Override"> <IS\_SWITCH>False</IS\_SWITCH> <!-- Testing removing switch drag interactions prefering toggle instead in all situations --> </Parameters> <Parameters Type="Default"> <HELPID/> <TOOLTIPID/> <CURSOR>Hand</CURSOR> <Condition> <Test> <And> <Arg Valid="IS\_SWITCH"/> <Arg NotEmpty="ANIM\_CODE"/> </And> </Test> <True> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle</MOUSEFLAGS\_DEFAULT\_IM> <MOUSEFLAGS\_DRAG\_IM>LeftAll+Wheel+Lock+Unlock</MOUSEFLAGS\_DRAG\_IM> <AXIS>Y</AXIS> <THRESHOLD\_INPUT>0.03</THRESHOLD\_INPUT> <THRESHOLD\_MOUSE>0.01</THRESHOLD\_MOUSE> <Condition Valid="INVERT\_WHEEL\_INTERACTION"> <True> <FLAG\_POS\_WHEEL\_UP>2</FLAG\_POS\_WHEEL\_UP> <FLAG\_POS\_WHEEL\_DN>1</FLAG\_POS\_WHEEL\_DN> </True> <False> <FLAG\_POS\_WHEEL\_UP>1</FLAG\_POS\_WHEEL\_UP> <FLAG\_POS\_WHEEL\_DN>2</FLAG\_POS\_WHEEL\_DN> </False> </Condition> <Condition Valid="INVERT\_SWITCH\_ON\_CONDITION"> <True> <SWITCH\_ON\_CONDITION>0 ==</SWITCH\_ON\_CONDITION> </True> <False> <SWITCH\_ON\_CONDITION>0 ></SWITCH\_ON\_CONDITION> </False> </Condition> </True> <False> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle</MOUSEFLAGS\_DEFAULT\_IM> <MOUSEFLAGS\_DRAG\_IM>Lock</MOUSEFLAGS\_DRAG\_IM> <DISABLE\_INTERACTION\_LOCK>True</DISABLE\_INTERACTION\_LOCK> </False> </Condition> <Condition Check="LEFT\_SINGLE\_CODE"> <True> <LEFT\_SINGLE\_CODE\_DEFAULT\_IM>\#LEFT\_SINGLE\_CODE\#</LEFT\_SINGLE\_CODE\_DEFAULT\_IM> <LEFT\_SINGLE\_CODE\_DRAG\_IM>\#LEFT\_SINGLE\_CODE\#</LEFT\_SINGLE\_CODE\_DRAG\_IM> </True> <False> <LEFT\_SINGLE\_CODE\_DEFAULT\_IM/> <LEFT\_SINGLE\_CODE\_DRAG\_IM/> </False> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="IS\_SWITCH"> <Condition NotEmpty="ANIM\_CODE"> <False> <IS\_SWITCH>False</IS\_SWITCH> </False> <True> <LEFT\_SINGLE\_CODE\_DRAG\_IM> \#ANIM\_CODE\# \#SWITCH\_ON\_CONDITION\# (>O:\_bSwitchIsON) \#THRESHOLD\_INPUT\# \#THRESHOLD\_MOUSE\# (M:InputType) 1 == ? sp0 (M:Event) 'WheelUp' scmi 0 == if{ g\#FLAG\_POS\_WHEEL\_UP\# } els{ (M:Event) 'WheelDown' scmi 0 == if{ g\#FLAG\_POS\_WHEEL\_DN\# } els{ (M:Event) 'Lock' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_InitPos) } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_InitPos) } els{ (M:Event) 'LeftDrag' scmi 0 == if{ (M:Relative\#AXIS\#) (O:\_InitPos) - sp1 l1 0 > if{ l1 l0 > if{ (M:Relative\#AXIS\#) (>O:\_InitPos) g1 } } els{ l1 abs l0 > if{ (M:Relative\#AXIS\#) (>O:\_InitPos) g2 } } } } } } } quit :1 (O:\_bSwitchIsON) ! if{ g3 } quit :2 (O:\_bSwitchIsON) if{ g3 } quit :3 \#LEFT\_SINGLE\_CODE\_DRAG\_IM\# </LEFT\_SINGLE\_CODE\_DRAG\_IM> </True> </Condition> </Condition> </Parameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <CALLBACKCODE\_DRAG\_IM> \#LEFT\_SINGLE\_CODE\_DRAG\_IM\# </CALLBACKCODE\_DRAG\_IM> <CALLBACKCODE\_DEFAULT\_IM> \#LEFT\_SINGLE\_CODE\_DEFAULT\_IM\# </CALLBACKCODE\_DEFAULT\_IM> </UseTemplate> </Template> <!-- Left click and left leave interaction, using code. Required parameter: LEFT\_SINGLE\_CODE LEFT\_LEAVE\_CODE --> <Template Name="ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Hand</CURSOR> <MOUSEFLAGS>LeftAll+Lock+Unlock</MOUSEFLAGS> <MOUSE\_WHEEL\_INPUTS/> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code\_Subtemplate1"> <Condition Check="WHEEL\_UP\_CODE"> <MOUSEFLAGS>\#MOUSEFLAGS\#+WheelUp</MOUSEFLAGS> <MOUSE\_WHEEL\_INPUTS> els{ (M:Event) 'WheelUp' scmi 0 == if{ \#WHEEL\_UP\_CODE\# } \#MOUSE\_WHEEL\_INPUTS\# }</MOUSE\_WHEEL\_INPUTS> </Condition> </UseTemplate> </Template> <!-- Left click timed interaction, with short and long press codes. Required parameter: SHORT\_CLICK\_CODE LONG\_CLICK\_CODE or LONG\_CLICK\_CODE\_1 & LONG\_CLICK\_CODE\_2 (if TIMED\_TYPE=X\_EVENTS) --> <Template Name="ASOBO\_GT\_Interaction\_Left\_Timed\_Code"> <Parameters Type="Default"> <Switch Param="TIMED\_TYPE"> <Case Value="X\_EVENTS"> <LONG\_CLICK\_TIME\_1>1</LONG\_CLICK\_TIME\_1> <LONG\_CLICK\_TIME\_2>2</LONG\_CLICK\_TIME\_2> </Case> <Default> <LONG\_CLICK\_TIME>2</LONG\_CLICK\_TIME> </Default> </Switch> <HELPID/> <TOOLTIPID/> <LEFT\_SINGLE\_CODE/> <LEFT\_LEAVE\_CODE/> <RELEASE\_CODE/> </Parameters> <Parameters Type="Default"> <Condition Valid="USE\_INPUT\_EVENT\_ID"> <!-- timer embedded inside the input event --> <True> <Switch Param="TIMED\_TYPE"> <Case Value="X\_EVENTS"> <SHORT\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</SHORT\_CLICK\_CODE> <LONG\_CLICK\_CODE\_1>\#LEFT\_LEAVE\_CODE\#</LONG\_CLICK\_CODE\_1> <LONG\_CLICK\_CODE\_2>\#LEFT\_LEAVE\_CODE\#</LONG\_CLICK\_CODE\_2> </Case> <Default> <SHORT\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</SHORT\_CLICK\_CODE> <LONG\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</LONG\_CLICK\_CODE> </Default> </Switch> </True> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="USE\_INPUT\_EVENT\_ID"> <False> <LEFT\_SINGLE\_CODE> (E:SIMULATION TIME, second) (>O:\_PressTime) \#LEFT\_SINGLE\_CODE\# </LEFT\_SINGLE\_CODE> <LEFT\_LEAVE\_CODE> (O:\_PressTime) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\# + < if{ \#RELEASE\_CODE\# \#SHORT\_CLICK\_CODE\# } } 0 (>O:\_PressTime) \#LEFT\_LEAVE\_CODE\# </LEFT\_LEAVE\_CODE> </False> </Condition> </Parameters> <Switch Param="TIMED\_TYPE"> <Case Value="X\_EVENTS"> <Update Frequency="10"> (O:\_PressTime) 0 > if{ (O:\_PressForDuration) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) (O:\_PressForDuration) + > if{ \#LEFT\_LEAVE\_CODE\# } els{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\_1\# + >= if{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\_2\# + < if{ (O:\_Process\_Step) 0 == if{ \#LONG\_CLICK\_CODE\_1\# quit } } els{ (O:\_Process\_Step) 1 == if{ \#LONG\_CLICK\_CODE\_2\# quit } } } } } els{ (E:SIMULATION TIME, second) (O:\_PressTime) - sp0 l0 \#LONG\_CLICK\_TIME\_2\# >= if{ (O:\_Process\_Step) 1 == if{ \#LONG\_CLICK\_CODE\_2\# } quit } l0 \#LONG\_CLICK\_TIME\_1\# >= if{ (O:\_Process\_Step) 0 == if{ \#LONG\_CLICK\_CODE\_1\# } quit } } } </Update> </Case> <Default> <Update Frequency="10"> (O:\_PressTime) 0 > if{ (O:\_PressForDuration) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) (O:\_PressForDuration) + > if{ (O:\_PressForDuration) \#LONG\_CLICK\_TIME\# >= if{ \#LONG\_CLICK\_CODE\# } els{ \#RELEASE\_CODE\# \#SHORT\_CLICK\_CODE\# } 0 (>O:\_PressTime) } } els{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\# + > if{ \#LONG\_CLICK\_CODE\# 0 (>O:\_PressTime) } } } </Update> </Default> </Switch> <UseTemplate Name="ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code"/> </Template> <!-- This template is used to create a multi states switch. This should be the only entry point. Do not call GT\_Interaction\_LeftSingle\_ParamSetup\_XStates. NUM\_STATES can be set to decide how many states the switch should have. --> <Template Name="ASOBO\_GT\_Interaction\_LeftSingle\_MultiStates"> <DefaultTemplateParameters> <NUM\_STATES>2</NUM\_STATES> <SWITCH\_POSITION\_TYPE>O</SWITCH\_POSITION\_TYPE> <SWITCH\_POSITION\_VAR>SwitchState</SWITCH\_POSITION\_VAR> <SWITCH\_DIRECTION>Vertical</SWITCH\_DIRECTION> <CODE\_DOWN> </CODE\_DOWN> <CODE\_DOWN\_CLOSING/> <CODE\_UP> </CODE\_UP> <CODE\_UP\_CLOSING> </CODE\_UP\_CLOSING> <CODE\_REPEAT/> <Condition Check="MOMENTARY\_SWITCH"> <True> <SWITCH\_POSITION\_TYPE\_TIMER>O</SWITCH\_POSITION\_TYPE\_TIMER> <SWITCH\_POSITION\_VAR\_TIMER>XMLVAR\_SwitchStateTimer</SWITCH\_POSITION\_VAR\_TIMER> <SWITCH\_POSITION\_TYPE\_ISDOWN>O</SWITCH\_POSITION\_TYPE\_ISDOWN> <SWITCH\_POSITION\_VAR\_ISDOWN>XMLVAR\_MomentarySwitch\_IsHeld</SWITCH\_POSITION\_VAR\_ISDOWN> <STATE\_MAX\_TIMER>2</STATE\_MAX\_TIMER> <STATE0\_TIMER>2</STATE0\_TIMER> </True> <False> <STATE0\_TIMER>0</STATE0\_TIMER> </False> </Condition> </DefaultTemplateParameters> <Condition> <Test> <Greater> <Number>\#STATE0\_TIMER\#</Number> <Number>0</Number> </Greater> </Test> <True> <UseTemplate Name="ASOBO\_GT\_Update"> <UPDATE\_ONCE>True</UPDATE\_ONCE> <UPDATE\_CODE>(\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) 0 == if{ 1 (>\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) }</UPDATE\_CODE> </UseTemplate> </True> </Condition> <UseTemplate Name="ASOBO\_GT\_Interaction\_LeftSingle\_ParamSetup"> </UseTemplate> </Template> <!-- Continuous rotary objects kind interations. Required parameter: CLOCKWISE\_CODE ANTICLOCKWISE\_CODE --> <Template Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft"> <DefaultTemplateParameters> <SWITCH\_DIRECTION>Horizontal</SWITCH\_DIRECTION> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_\#SWITCH\_DIRECTION\#"> </UseTemplate> </Template> <!-- Combo of continuous rotary objects and left click and left leave interaction, using code. Required parameter: CLOCKWISE\_CODE ANTICLOCKWISE\_CODE LEFT\_SINGLE\_CODE --> <Template Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingle"> <Parameters Type="Default"> <CURSOR\_LEFT>TurnLeft</CURSOR\_LEFT> <!-- Big arrows by default --> <CURSOR\_RIGHT>TurnRight</CURSOR\_RIGHT> <CENTER\_RADIUS>0.004</CENTER\_RADIUS> <DOWN\_TIME\_BEFORE\_REPEAT>0.5</DOWN\_TIME\_BEFORE\_REPEAT> <HELPID/> <TOOLTIPID/> <CENTER\_CURSOR>Hand</CENTER\_CURSOR> <THRESHOLD\_X\_INPUT>0.2</THRESHOLD\_X\_INPUT> <THRESHOLD\_X\_MOUSE>0.01</THRESHOLD\_X\_MOUSE> <THRESHOLD\_Y\_INPUT>0.05</THRESHOLD\_Y\_INPUT> <THRESHOLD\_Y\_MOUSE>0.025</THRESHOLD\_Y\_MOUSE> <LEFT\_LEAVE\_CODE/> <Condition Check="LEFT\_LEAVE\_CODE"> <True> <LEFT\_LEAVE\_CODE\_OUTER/> <!-- By default only call left leave when the button was pressed --> <LEFT\_LEAVE\_CODE\_INNER>\#LEFT\_LEAVE\_CODE\#</LEFT\_LEAVE\_CODE\_INNER> </True> <False> <LEFT\_LEAVE\_CODE\_OUTER/> <LEFT\_LEAVE\_CODE\_INNER/> </False> </Condition> <Condition Check="LEFT\_SINGLE\_CODE"> <True> <LEFT\_SINGLE\_CODE\_OUTER/> <!-- By default only call left single when clicking in the middle of the knob --> <LEFT\_SINGLE\_CODE\_INNER>\#LEFT\_SINGLE\_CODE\#</LEFT\_SINGLE\_CODE\_INNER> </True> <False> <LEFT\_SINGLE\_CODE\_OUTER/> <LEFT\_SINGLE\_CODE\_INNER/> </False> </Condition> <UPDATE\_FREQUENCY>10</UPDATE\_FREQUENCY> <UPARROW\_DRAG\_IM/> <DOWNARROW\_DRAG\_IM/> <LEFTARROW\_DRAG\_IM/> <RIGHTARROW\_DRAG\_IM/> <CURSOR\_CENTER\_DRAG\_IM/> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <Condition NotEmpty="CLOCKWISE\_CODE"> <True> <CLOCKWISE\_CODE\_DEFAULT\_IM>\#CLOCKWISE\_CODE\#</CLOCKWISE\_CODE\_DEFAULT\_IM> <CLOCKWISE\_CODE\_DRAG\_IM>\#CLOCKWISE\_CODE\#</CLOCKWISE\_CODE\_DRAG\_IM> </True> <False> <CLOCKWISE\_CODE\_DEFAULT\_IM/> <CLOCKWISE\_CODE\_DRAG\_IM/> </False> </Condition> <Condition NotEmpty="ANTICLOCKWISE\_CODE"> <True> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM>\#ANTICLOCKWISE\_CODE\#</ANTICLOCKWISE\_CODE\_DEFAULT\_IM> <ANTICLOCKWISE\_CODE\_DRAG\_IM>\#ANTICLOCKWISE\_CODE\#</ANTICLOCKWISE\_CODE\_DRAG\_IM> </True> <False> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM/> <ANTICLOCKWISE\_CODE\_DRAG\_IM/> </False> </Condition> <Condition Valid="NO\_PUSH\_PULL\_LOCK"> <True> <RESET\_LOCK/> <UPDATE\_LAST\_PUSH\_TIME/> <UPDATE\_LAST\_PULL\_TIME/> <CAN\_BE\_PUSHED>1</CAN\_BE\_PUSHED> <CAN\_BE\_PULLED>1</CAN\_BE\_PULLED> <LOCK\_PUSH/> <LOCK\_PULL/> <RESET\_PUSH/> <RESET\_PULL/> </True> <False> <PUSH\_RESET\_DELAY>0.15</PUSH\_RESET\_DELAY> <PULL\_RESET\_DELAY>0.15</PULL\_RESET\_DELAY> <RESET\_LOCK> (O:\_PushLocked) if{ 0 (>O:\_PushLocked) } (O:\_PullLocked) if{ 0 (>O:\_PullLocked) } </RESET\_LOCK> <UPDATE\_LAST\_PUSH\_TIME> (M:InputType) 1 == if{ (E:SIMULATION TIME, second) (>O:\_LastPushTime) } </UPDATE\_LAST\_PUSH\_TIME> <UPDATE\_LAST\_PULL\_TIME> (M:InputType) 1 == if{ (E:SIMULATION TIME, second) (>O:\_LastPullTime) } </UPDATE\_LAST\_PULL\_TIME> <CAN\_BE\_PUSHED>(O:\_PushLocked) ! @IsUsingRelativePos and</CAN\_BE\_PUSHED> <CAN\_BE\_PULLED>(O:\_PullLocked) ! @IsUsingRelativePos and</CAN\_BE\_PULLED> <LOCK\_PUSH>1 (>O:\_PushLocked)</LOCK\_PUSH> <LOCK\_PULL>1 (>O:\_PullLocked)</LOCK\_PULL> <RESET\_PUSH>(O:\_PushLocked) if{ 0 (>O:\_PushLocked) }</RESET\_PUSH> <RESET\_PULL>(O:\_PullLocked) if{ 0 (>O:\_PullLocked) }</RESET\_PULL> </False> </Condition> <ON\_DOWN\_EVENT/> <ON\_UP\_EVENT/> <SET\_IS\_INTERACTING>(>O:\_Is\_Interacting)</SET\_IS\_INTERACTING> <ADDITIONAL\_EVENT\_HANDLING/> <ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST/> <ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST/> <PRE\_DRAG\_UPDATE/> <POST\_DRAG\_UPDATE/> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> <LOCKABLE\_HANDLE\_CODE\_UP/> <NO\_LOCK\_HANDLE\_CODE\_UP/> <LOCKABLE\_HANDLE\_CODE\_DN/> <NO\_LOCK\_HANDLE\_CODE\_DN/> </Parameters> <Parameters Type="Override"> <THRESHOLD\_X>\#THRESHOLD\_X\_INPUT\# \#THRESHOLD\_X\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD\_X> <THRESHOLD\_Y>\#THRESHOLD\_Y\_INPUT\# \#THRESHOLD\_Y\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD\_Y> <Condition Valid="INVERT\_AXIS\_CODE"> <True> <Condition NotEmpty="CODE\_UP"> <False> <CODE\_UP>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_UP> </False> </Condition> <Condition NotEmpty="CODE\_DN"> <False> <CODE\_DN>\#CLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_DN> </False> </Condition> <Condition NotEmpty="CODE\_LEFT"> <False> <CODE\_LEFT>\#LEFT\_SINGLE\_CODE\#</CODE\_LEFT> </False> </Condition> <Condition NotEmpty="CODE\_RIGHT"> <False> <CODE\_RIGHT>\#LEFT\_LEAVE\_CODE\#</CODE\_RIGHT> </False> </Condition> </True> <False> <Condition NotEmpty="CODE\_UP"> <False> <CODE\_UP>\#LEFT\_SINGLE\_CODE\#</CODE\_UP> </False> </Condition> <Condition NotEmpty="CODE\_DN"> <False> <CODE\_DN>\#LEFT\_LEAVE\_CODE\#</CODE\_DN> </False> </Condition> <Condition NotEmpty="CODE\_LEFT"> <False> <CODE\_LEFT>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_LEFT> </False> </Condition> <Condition NotEmpty="CODE\_RIGHT"> <False> <CODE\_RIGHT>\#CLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_RIGHT> </False> </Condition> </False> </Condition> <Condition NotEmpty="UPDATE\_DEFAULT\_IM"> <False> <UPDATE\_DEFAULT\_IM> (O:\_MouseDownRelativePosX) 0 > if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (O:\_MouseDownRelativePosX) 0 < if{ \#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\# } } </UPDATE\_DEFAULT\_IM> </False> </Condition> </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> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="CODE\_UP"> <LOCKABLE\_HANDLE\_CODE\_UP>(M:Event) '\#LOCKABLE\_EVENT\_PRIMARY\#' scmi 0 == if{ \#CODE\_UP\# quit }</LOCKABLE\_HANDLE\_CODE\_UP> <NO\_LOCK\_HANDLE\_CODE\_UP>(M:Event) '\#NO\_LOCK\_EVENT\_PRIMARY\#' scmi 0 == if{ \#CODE\_UP\# quit }</NO\_LOCK\_HANDLE\_CODE\_UP> </Condition> <Condition NotEmpty="CODE\_DN"> <LOCKABLE\_HANDLE\_CODE\_DN>(M:Event) '\#LOCKABLE\_EVENT\_SECONDARY\#' scmi 0 == if{ \#CODE\_DN\# quit }</LOCKABLE\_HANDLE\_CODE\_DN> <NO\_LOCK\_HANDLE\_CODE\_DN>(M:Event) '\#NO\_LOCK\_EVENT\_SECONDARY\#' scmi 0 == if{ \#CODE\_DN\# quit }</NO\_LOCK\_HANDLE\_CODE\_DN> </Condition> </Parameters> <Parameters Type="Default"> <LOCKABLE\_INPUTS\_HANDLING> \#LOCKABLE\_HANDLE\_CODE\_UP\# \#LOCKABLE\_HANDLE\_CODE\_DN\# </LOCKABLE\_INPUTS\_HANDLING> <NO\_LOCK\_INPUTS\_HANDLING> \#NO\_LOCK\_HANDLE\_CODE\_UP\# \#NO\_LOCK\_HANDLE\_CODE\_DN\# </NO\_LOCK\_INPUTS\_HANDLING> </Parameters> <Parameters Type="Default"> <IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING> (M:InputType) 1 == if{ \#LOCKABLE\_INPUTS\_HANDLING\# } els{ \#NO\_LOCK\_INPUTS\_HANDLING\# } </IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle+LeftRelease+WheelUp+WheelDown+Lock+Unlock</MOUSEFLAGS\_DEFAULT\_IM> <MOUSEFLAGS\_DRAG\_IM>MiddleSingle+RightSingle+LeftAll+Wheel+Lock+Unlock</MOUSEFLAGS\_DRAG\_IM> </Parameters> <Update Frequency="\#UPDATE\_FREQUENCY\#" InteractionModel="Default"> (O:XMLVAR\_Interacting\_RepeatTime) (E:SIMULATION TIME, seconds) < if{ \#UPDATE\_DEFAULT\_IM\# } </Update> <Condition Valid="NO\_PUSH\_PULL\_LOCK"> <False> <Update Frequency="\#UPDATE\_FREQUENCY\#" InteractionModel="Drag"> (O:\_PushLocked) (O:\_LastPushTime) 0 > and if{ (E:SIMULATION TIME, second) (O:\_LastPushTime) - \#PUSH\_RESET\_DELAY\# > if{ 0 (>O:\_PushLocked) 0 (>O:\_LastPushTime) } } (O:\_PullLocked) (O:\_LastPullTime) 0 > and if{ (E:SIMULATION TIME, second) (O:\_LastPullTime) - \#PULL\_RESET\_DELAY\# > if{ 0 (>O:\_PullLocked) 0 (>O:\_LastPullTime) } } </Update> </False> </Condition> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <LEFTARROW>\#CURSOR\_LEFT\#</LEFTARROW> <RIGHTARROW>\#CURSOR\_RIGHT\#</RIGHTARROW> <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:RelativeX) abs \#CENTER\_RADIUS\# > if{ 0 (>O:\_ButtonPressed) (M:RelativeX) (>O:\_MouseDownRelativePosX) (E:SIMULATION TIME, seconds) \#DOWN\_TIME\_BEFORE\_REPEAT\# + (>O:XMLVAR\_Interacting\_RepeatTime) \#UPDATE\_DEFAULT\_IM\# \#LEFT\_SINGLE\_CODE\_OUTER\# } els{ 0 (>O:\_MouseDownRelativePosX) 1 (>O:\_ButtonPressed) \#LEFT\_SINGLE\_CODE\_INNER\# } } els{ (M:Event) 'LeftRelease' scmi 0 == if{ (O:\_MouseDownRelativePosX) 0 != if{ \#LEFT\_LEAVE\_CODE\_OUTER\# } (O:\_ButtonPressed) if{ \#LEFT\_LEAVE\_CODE\_INNER\# } 0 (>O:\_MouseDownRelativePosX) 0 (>O:\_ButtonPressed) } } } } </CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM> \#ADDITIONAL\_EVENT\_HANDLING\# \#IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING\# (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:RelativeX) (>O:\_LastX) (M:RelativeY) (>O:\_LastY) \#ON\_DOWN\_EVENT\# 1 \#SET\_IS\_INTERACTING\# } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_LastX) 0 (>O:\_LastY) \#RESET\_LOCK\# \#ON\_UP\_EVENT\# 0 \#SET\_IS\_INTERACTING\# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ \#PRE\_DRAG\_UPDATE\# (M:RelativeX) (O:\_LastX) - sp0 \#THRESHOLD\_X\# (>O:\_InputThresholdX) \#ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST\# l0 abs (O:\_InputThresholdX) > if{ l0 (O:\_InputThresholdX) / abs flr sp1 l0 (O:\_InputThresholdX) % abs sp2 :1 (\* for loop \*) l1 0 <= if{ g2 } l1 -- sp1 l0 0 > if{ \#CODE\_RIGHT\# } els{ \#CODE\_LEFT\# } g1 :2 l0 0 > if{ (M:RelativeX) l2 - (>O:\_LastX) } els{ (M:RelativeX) l2 + (>O:\_LastX) } } (M:RelativeY) (O:\_LastY) - sp0 \#THRESHOLD\_Y\# (>O:\_InputThresholdY) \#ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST\# l0 abs (O:\_InputThresholdY) > if{ l0 (O:\_InputThresholdY) / abs flr sp1 l0 (O:\_InputThresholdY) % abs sp2 :3 (\* for loop \*) l1 0 <= if{ g4 } l1 -- sp1 l0 0 > if{ \#UPDATE\_LAST\_PUSH\_TIME\# \#CAN\_BE\_PUSHED\# if{ \#LOCK\_PUSH\# \#CODE\_UP\# } \#RESET\_PULL\# } els{ \#UPDATE\_LAST\_PULL\_TIME\# \#CAN\_BE\_PULLED\# if{ \#LOCK\_PULL\# \#CODE\_DN\# } \#RESET\_PUSH\# } g3 :4 l0 0 > if{ (M:RelativeY) l2 - (>O:\_LastY) } els{ (M:RelativeY) l2 + (>O:\_LastY) } } \#POST\_DRAG\_UPDATE\# } } } } } quit </CALLBACKCODE\_DRAG\_IM> </UseTemplate> </Template> <!-- Combo of continuous rotary objects and left click and left leave interaction, using code. Required parameter: CLOCKWISE\_CODE ANTICLOCKWISE\_CODE PUSH\_CODE PULL\_CODE --> <Template Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_PushPull"> <Parameters Type="Default"> <CURSOR\_LEFT>TurnLeft</CURSOR\_LEFT> <!-- Big arrows by default --> <CURSOR\_RIGHT>TurnRight</CURSOR\_RIGHT> <CENTER\_RADIUS>0.004</CENTER\_RADIUS> <HELPID/> <TOOLTIPID/> <LEFT\_LEAVE\_CODE/> <THRESHOLD\_X\_INPUT>0.2</THRESHOLD\_X\_INPUT> <THRESHOLD\_X\_MOUSE>0.01</THRESHOLD\_X\_MOUSE> <THRESHOLD\_Y\_INPUT>0.05</THRESHOLD\_Y\_INPUT> <THRESHOLD\_Y\_MOUSE>0.025</THRESHOLD\_Y\_MOUSE> <CURSOR\_UP>UpArrow</CURSOR\_UP> <CURSOR\_DOWN>DownArrow</CURSOR\_DOWN> <UPDATE\_FREQUENCY>10</UPDATE\_FREQUENCY> <Condition NotEmpty="CLOCKWISE\_CODE"> <True> <CLOCKWISE\_CODE\_DEFAULT\_IM>\#CLOCKWISE\_CODE\#</CLOCKWISE\_CODE\_DEFAULT\_IM> <CLOCKWISE\_CODE\_DRAG\_IM>\#CLOCKWISE\_CODE\#</CLOCKWISE\_CODE\_DRAG\_IM> </True> <False> <CLOCKWISE\_CODE\_DEFAULT\_IM/> <CLOCKWISE\_CODE\_DRAG\_IM/> </False> </Condition> <Condition NotEmpty="ANTICLOCKWISE\_CODE"> <True> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM>\#ANTICLOCKWISE\_CODE\#</ANTICLOCKWISE\_CODE\_DEFAULT\_IM> <ANTICLOCKWISE\_CODE\_DRAG\_IM>\#ANTICLOCKWISE\_CODE\#</ANTICLOCKWISE\_CODE\_DRAG\_IM> </True> <False> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM/> <ANTICLOCKWISE\_CODE\_DRAG\_IM/> </False> </Condition> <Condition Valid="NO\_PUSH\_PULL\_LOCK"> <True> <RESET\_LOCK/> <UPDATE\_LAST\_PUSH\_TIME/> <UPDATE\_LAST\_PULL\_TIME/> <CAN\_BE\_PUSHED>1</CAN\_BE\_PUSHED> <CAN\_BE\_PULLED>1</CAN\_BE\_PULLED> <LOCK\_PUSH/> <LOCK\_PULL/> <RESET\_PUSH/> <RESET\_PULL/> </True> <False> <PUSH\_RESET\_DELAY>0.15</PUSH\_RESET\_DELAY> <PULL\_RESET\_DELAY>0.15</PULL\_RESET\_DELAY> <RESET\_LOCK> (O:IsPushed) if{ 0 (>O:IsPushed) } (O:IsPulled) if{ 0 (>O:IsPulled) } </RESET\_LOCK> <UPDATE\_LAST\_PUSH\_TIME> (M:InputType) 1 == if{ (E:SIMULATION TIME, second) (>O:\_LastPushTime) } </UPDATE\_LAST\_PUSH\_TIME> <UPDATE\_LAST\_PULL\_TIME> (M:InputType) 1 == if{ (E:SIMULATION TIME, second) (>O:\_LastPullTime) } </UPDATE\_LAST\_PULL\_TIME> <CAN\_BE\_PUSHED>(O:IsPushed) ! @IsUsingRelativePos and</CAN\_BE\_PUSHED> <CAN\_BE\_PULLED>(O:IsPulled) ! @IsUsingRelativePos and</CAN\_BE\_PULLED> <LOCK\_PUSH>1 (>O:IsPushed)</LOCK\_PUSH> <LOCK\_PULL>1 (>O:IsPulled)</LOCK\_PULL> <RESET\_PUSH>(O:IsPushed) if{ 0 (>O:IsPushed) }</RESET\_PUSH> <RESET\_PULL>(O:IsPulled) if{ 0 (>O:IsPulled) }</RESET\_PULL> </False> </Condition> <ON\_DOWN\_EVENT/> <ADDITIONAL\_EVENT\_HANDLING/> <ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST/> <ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST/> <UPARROW\_DRAG\_IM/> <DOWNARROW\_DRAG\_IM/> <LEFTARROW\_DRAG\_IM/> <RIGHTARROW\_DRAG\_IM/> <CURSOR\_CENTER\_DRAG\_IM/> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> <LOCKABLE\_HANDLE\_CODE\_UP/> <NO\_LOCK\_HANDLE\_CODE\_UP/> <LOCKABLE\_HANDLE\_CODE\_DN/> <NO\_LOCK\_HANDLE\_CODE\_DN/> </Parameters> <Parameters Type="Override"> <THRESHOLD\_X>\#THRESHOLD\_X\_INPUT\# \#THRESHOLD\_X\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD\_X> <THRESHOLD\_Y>\#THRESHOLD\_Y\_INPUT\# \#THRESHOLD\_Y\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD\_Y> <Condition Valid="INVERT\_AXIS\_CODE"> <True> <Condition NotEmpty="CODE\_UP"> <False> <CODE\_UP>\#PULL\_CODE\#</CODE\_UP> </False> </Condition> <Condition NotEmpty="CODE\_DN"> <False> <CODE\_DN>\#PUSH\_CODE\#</CODE\_DN> </False> </Condition> <Condition NotEmpty="CODE\_LEFT"> <False> <CODE\_LEFT>\#CLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_LEFT> </False> </Condition> <Condition NotEmpty="CODE\_RIGHT"> <False> <CODE\_RIGHT>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_RIGHT> </False> </Condition> </True> <False> <Condition NotEmpty="CODE\_UP"> <False> <CODE\_UP>\#PUSH\_CODE\#</CODE\_UP> </False> </Condition> <Condition NotEmpty="CODE\_DN"> <False> <CODE\_DN>\#PULL\_CODE\#</CODE\_DN> </False> </Condition> <Condition NotEmpty="CODE\_LEFT"> <False> <CODE\_LEFT>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_LEFT> </False> </Condition> <Condition NotEmpty="CODE\_RIGHT"> <False> <CODE\_RIGHT>\#CLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_RIGHT> </False> </Condition> </False> </Condition> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="CODE\_UP"> <LOCKABLE\_HANDLE\_CODE\_UP>(M:Event) 'LeftSingle' scmi 0 == if{ \#CODE\_UP\# quit }</LOCKABLE\_HANDLE\_CODE\_UP> <NO\_LOCK\_HANDLE\_CODE\_UP>(M:Event) 'RightSingle' scmi 0 == if{ \#CODE\_UP\# quit }</NO\_LOCK\_HANDLE\_CODE\_UP> </Condition> <Condition NotEmpty="CODE\_DN"> <LOCKABLE\_HANDLE\_CODE\_DN>(M:Event) 'RightSingle' scmi 0 == if{ \#CODE\_DN\# quit }</LOCKABLE\_HANDLE\_CODE\_DN> <NO\_LOCK\_HANDLE\_CODE\_DN>(M:Event) 'MiddleSingle' scmi 0 == if{ \#CODE\_DN\# quit }</NO\_LOCK\_HANDLE\_CODE\_DN> </Condition> </Parameters> <Parameters Type="Default"> <LOCKABLE\_INPUTS\_HANDLING> \#LOCKABLE\_HANDLE\_CODE\_UP\# \#LOCKABLE\_HANDLE\_CODE\_DN\# </LOCKABLE\_INPUTS\_HANDLING> <NO\_LOCK\_INPUTS\_HANDLING> \#NO\_LOCK\_HANDLE\_CODE\_UP\# \#NO\_LOCK\_HANDLE\_CODE\_DN\# </NO\_LOCK\_INPUTS\_HANDLING> </Parameters> <Parameters Type="Default"> <IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING> (M:InputType) 1 == if{ \#LOCKABLE\_INPUTS\_HANDLING\# } els{ \#NO\_LOCK\_INPUTS\_HANDLING\# } </IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle+LeftRelease+WheelUp+WheelDown</MOUSEFLAGS\_DEFAULT\_IM> <MOUSEFLAGS\_DRAG\_IM>MiddleSingle+RightSingle+LeftAll+Wheel+Lock+Unlock</MOUSEFLAGS\_DRAG\_IM> </Parameters> <Update Frequency="\#UPDATE\_FREQUENCY\#" InteractionModel="Default"> (O:\_MouseDownRelativePosX) 0 > if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (O:\_MouseDownRelativePosX) 0 < if{ \#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\# } } </Update> <Condition Valid="NO\_PUSH\_PULL\_LOCK"> <False> <Update Frequency="\#UPDATE\_FREQUENCY\#" InteractionModel="Drag"> (O:IsPushed) (O:\_LastPushTime) 0 > and if{ (E:SIMULATION TIME, second) (O:\_LastPushTime) - \#PUSH\_RESET\_DELAY\# > if{ 0 (>O:IsPushed) 0 (>O:\_LastPushTime) } } (O:IsPulled) (O:\_LastPullTime) 0 > and if{ (E:SIMULATION TIME, second) (O:\_LastPullTime) - \#PULL\_RESET\_DELAY\# > if{ 0 (>O:IsPulled) 0 (>O:\_LastPullTime) } } </Update> </False> </Condition> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <LEFTARROW>\#CURSOR\_LEFT\#</LEFTARROW> <RIGHTARROW>\#CURSOR\_RIGHT\#</RIGHTARROW> <UPARROW>\#CURSOR\_UP\#</UPARROW> <DOWNARROW>\#CURSOR\_DOWN\#</DOWNARROW> <CALLBACKCODE\_DEFAULT\_IM> (M:Event) 'WheelUp' scmi 0 == if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (M:Event) 'WheelDown' scmi 0 == if{ \#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (M:Event) 'LeftRelease' scmi 0 == if{ 0 (>O:\_MouseDownRelativePosX) } (M:RelativeX) abs \#CENTER\_RADIUS\# > (M:RelativeY) abs \#CENTER\_RADIUS\# > or if{ (M:RelativeX) abs (M:RelativeY) abs > if{ (M:Event) 'LeftSingle' scmi 0 == if{ (M:RelativeX) (>O:\_MouseDownRelativePosX) } } els{ 0 (>O:\_MouseDownRelativePosX) (M:Event) 'LeftSingle' scmi 0 == if{ (M:RelativeY) 0 > if{ \#PUSH\_CODE\# 1 (>O:IsPushed) } els{ \#PULL\_CODE\# 1 (>O:IsPulled) } } els{ (M:Event) 'LeftRelease' scmi 0 == if{ \#LEFT\_LEAVE\_CODE\# 0 (>O:IsPulled) 0 (>O:IsPushed) } } } } } } </CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM> \#ADDITIONAL\_EVENT\_HANDLING\# \#IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING\# (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:RelativeX) (>O:\_LastX) (M:RelativeY) (>O:\_LastY) \#ON\_DOWN\_EVENT\# } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_LastX) 0 (>O:\_LastY) \#RESET\_LOCK\# \#LEFT\_LEAVE\_CODE\# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ (M:RelativeX) (O:\_LastX) - sp0 \#THRESHOLD\_X\# (>O:\_InputThresholdX) \#ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST\# l0 abs (O:\_InputThresholdX) > if{ l0 (O:\_InputThresholdX) / abs flr sp1 l0 (O:\_InputThresholdX) % abs sp2 :1 (\* for loop \*) l1 0 <= if{ g2 } l1 -- sp1 l0 0 > if{ \#CODE\_RIGHT\# } els{ \#CODE\_LEFT\# } g1 :2 l0 0 > if{ (M:RelativeX) l2 - (>O:\_LastX) } els{ (M:RelativeX) l2 + (>O:\_LastX) } } (M:RelativeY) (O:\_LastY) - sp0 \#THRESHOLD\_Y\# (>O:\_InputThresholdY) \#ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST\# l0 abs (O:\_InputThresholdY) > if{ l0 (O:\_InputThresholdY) / abs flr sp1 l0 (O:\_InputThresholdY) % abs sp2 :3 (\* for loop \*) l1 0 <= if{ g4 } l1 -- sp1 l0 0 > if{ \#UPDATE\_LAST\_PUSH\_TIME\# \#CAN\_BE\_PUSHED\# if{ \#LOCK\_PUSH\# \#CODE\_UP\# } \#RESET\_PULL\# } els{ \#UPDATE\_LAST\_PULL\_TIME\# \#CAN\_BE\_PULLED\# if{ \#LOCK\_PULL\# \#CODE\_DN\# } \#RESET\_PUSH\# } g3 :4 l0 0 > if{ (M:RelativeY) l2 - (>O:\_LastY) } els{ (M:RelativeY) l2 + (>O:\_LastY) } } } } } } } quit </CALLBACKCODE\_DRAG\_IM> </UseTemplate> </Template> <!-- Combo of continuous rotary objects and left click and left leave interaction whith short and long action depending of time clicked, using code. Required parameter: CLOCKWISE\_CODE ANTICLOCKWISE\_CODE LONG\_CLICK\_TIME SHORT\_CLICK\_CODE LONG\_CLICK\_CODE --> <Template Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingleTimed"> <Parameters Type="Default"> <LEFT\_SINGLE\_CODE/> <LEFT\_LEAVE\_CODE/> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> </Parameters> <Parameters Type="Override"> <Condition Valid="TIMER\_EVENTS\_HANDLED\_EXTERNALLY"> <True> <LONG\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</LONG\_CLICK\_CODE> <SHORT\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</SHORT\_CLICK\_CODE> </True> </Condition> </Parameters> <Update Frequency="10"> (O:\_PressTime) 0 > if{ (O:\_PressForDuration) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) (O:\_PressForDuration) + > if{ (O:\_PressForDuration) \#LONG\_CLICK\_TIME\# >= if{ \#LONG\_CLICK\_CODE\# } els{ \#SHORT\_CLICK\_CODE\# } } } els{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\# + > if{ \#LONG\_CLICK\_CODE\# } } } </Update> <UseTemplate Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingle"> <Condition Valid="TIMER\_EVENTS\_HANDLED\_EXTERNALLY"> <False> <LEFT\_SINGLE\_CODE> (E:SIMULATION TIME, second) (>O:\_PressTime) \#LEFT\_SINGLE\_CODE\# </LEFT\_SINGLE\_CODE> <LEFT\_LEAVE\_CODE> (O:\_PressTime) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\# + < if{ \#SHORT\_CLICK\_CODE\# } } 0 (>O:\_PressTime) \#LEFT\_LEAVE\_CODE\# </LEFT\_LEAVE\_CODE> </False> </Condition> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Interaction\_WheelLeftDrag\_Axis"> <Parameters Type="Default"> <Condition Check="INVERT\_INTERACTION"> <INVERT\_INC\_DEC\_INTERACTION>True</INVERT\_INC\_DEC\_INTERACTION> <INVERT\_DRAG\_INTERACTION>True</INVERT\_DRAG\_INTERACTION> </Condition> </Parameters> <Parameters Type="Default"> <HELPID/> <TOOLTIPID/> <DELTA\_MIN>0.0005</DELTA\_MIN> <Condition Check="NO\_ARROWS"> <False> <Condition Check="AXIS" Match="Y"> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> </Condition> <Condition Check="AXIS" Match="X"> <LEFTARROW>TurnLeft</LEFTARROW> <RIGHTARROW>TurnRight</RIGHTARROW> </Condition> </False> </Condition> <CALLBACKCODE/> <Condition Valid="INVERT\_INC\_DEC\_INTERACTION"> <True> <FLAG\_1>2</FLAG\_1> <FLAG\_2>1</FLAG\_2> </True> <False> <FLAG\_1>1</FLAG\_1> <FLAG\_2>2</FLAG\_2> </False> </Condition> <Condition Valid="INVERT\_DRAG\_INTERACTION"> <True> <DRAG\_INVERTION>1</DRAG\_INVERTION> </True> <False> <DRAG\_INVERTION>-1</DRAG\_INVERTION> </False> </Condition> <COUNT>2</COUNT> <DOWN\_CODE/> <RELEASE\_CODE/> <LOCK\_CODE/> <UNLOCK\_CODE/> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> <EXTRA\_MOUSEFLAGS/> <EXTRA\_EVENT\_HANDLING/> </Parameters> <Parameters Type="Override"> <Condition Check="USE\_TRAJECTORY\_DRAG\_MODE"> <True> <LOCK\_CODE> 1 (>O:\_Interacting) \#LOCK\_CODE\# </LOCK\_CODE> <UNLOCK\_CODE> 0 (>O:\_Interacting) \#UNLOCK\_CODE\# </UNLOCK\_CODE> <DRAG\_CODE> (M:Relative\#AXIS\#) (>O:\_LastPos) (O:\_Interacting) if{ \#DRAG\_CODE\# } </DRAG\_CODE> </True> <False> <DRAG\_CODE> (O:\_LastPos) (M:Relative\#AXIS\#) - (>O:\_Delta) (O:\_Delta) abs \#DELTA\_MIN\# > if{ (O:\_Delta) \#DELTA\_MIN\# / \#DRAG\_INVERTION\# \* (>O:DragScale) (M:Relative\#AXIS\#) (>O:\_LastPos) \#DRAG\_CODE\# g3 quit } </DRAG\_CODE> </False> </Condition> <Condition Valid="RIGHT\_SINGLE\_CODE"> <True> <EXTRA\_MOUSEFLAGS>\#EXTRA\_MOUSEFLAGS\#+RightSingle</EXTRA\_MOUSEFLAGS> <EXTRA\_EVENT\_HANDLING> els{ (M:Event) 'RightSingle' scmi 0 == if{ \#RIGHT\_SINGLE\_CODE\# } } </EXTRA\_EVENT\_HANDLING> </True> </Condition> </Parameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftRelease+LeftDrag+WheelUp+WheelDown+Lock+Unlock\#EXTRA\_MOUSEFLAGS\#</MouseFlags> <CALLBACKCODE> (M:Event) 'Lock' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_LastPos) \#LOCK\_CODE\# } els{ (M:Event) 'Unlock' scmi 0 == if{ \#UNLOCK\_CODE\# } els{ (M:Event) 'WheelUp' scmi 0 == if{ g\#FLAG\_1\# } els{ (M:Event) 'WheelDown' scmi 0 == if{ g\#FLAG\_2\# } els{ (M:Event) 'LeftSingle' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_LastPos) \#DOWN\_CODE\# } els{ (M:Event) 'LeftRelease' scmi 0 == if{ \#RELEASE\_CODE\# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ \#DRAG\_CODE\# } \#EXTRA\_EVENT\_HANDLING\# } } } } } } g3 quit :1 \#POSITIVE\_AXIS\_CODE\# g3 quit :2 \#NEGATIVE\_AXIS\_CODE\# g3 quit :3 \#CALLBACKCODE\# </CALLBACKCODE> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Interaction\_WheelLeftSingle\_Axis"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <DELTA\_MIN>1</DELTA\_MIN> <Condition Check="NO\_ARROWS"> <False> <Condition Check="AXIS" Match="Y"> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> </Condition> <Condition Check="AXIS" Match="X"> <LEFTARROW>TurnLeft</LEFTARROW> <RIGHTARROW>TurnRight</RIGHTARROW> </Condition> </False> </Condition> <Condition NotEmpty="CALLBACKCODE"> <True> <CALLBACKCODE\_DEFAULT\_IM>\#CALLBACKCODE\#</CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM>\#CALLBACKCODE\#</CALLBACKCODE\_DRAG\_IM> </True> <False> <CALLBACKCODE\_DEFAULT\_IM/> <CALLBACKCODE\_DRAG\_IM/> </False> </Condition> <Condition NotEmpty="POSITIVE\_AXIS\_CODE"> <True> <POSITIVE\_AXIS\_CODE\_DEFAULT\_IM>\#POSITIVE\_AXIS\_CODE\#</POSITIVE\_AXIS\_CODE\_DEFAULT\_IM> <POSITIVE\_AXIS\_CODE\_DRAG\_IM>\#POSITIVE\_AXIS\_CODE\#</POSITIVE\_AXIS\_CODE\_DRAG\_IM> </True> </Condition> <Condition NotEmpty="NEGATIVE\_AXIS\_CODE"> <True> <NEGATIVE\_AXIS\_CODE\_DEFAULT\_IM>\#NEGATIVE\_AXIS\_CODE\#</NEGATIVE\_AXIS\_CODE\_DEFAULT\_IM> <NEGATIVE\_AXIS\_CODE\_DRAG\_IM>\#NEGATIVE\_AXIS\_CODE\#</NEGATIVE\_AXIS\_CODE\_DRAG\_IM> </True> </Condition> <Condition Valid="INVERT\_WHEEL\_INTERACTION"> <True> <FLAG\_POS\_WHEEL\_UP>4</FLAG\_POS\_WHEEL\_UP> <FLAG\_POS\_WHEEL\_DN>3</FLAG\_POS\_WHEEL\_DN> </True> <False> <FLAG\_POS\_WHEEL\_UP>3</FLAG\_POS\_WHEEL\_UP> <FLAG\_POS\_WHEEL\_DN>4</FLAG\_POS\_WHEEL\_DN> </False> </Condition> <Condition Valid="INVERT\_DRAG\_POSITIVE\_CONDITION"> <True> <DRAG\_IS\_POSITIVE\_CONDITION>0 <=</DRAG\_IS\_POSITIVE\_CONDITION> </True> <False> <DRAG\_IS\_POSITIVE\_CONDITION>0 ></DRAG\_IS\_POSITIVE\_CONDITION> </False> </Condition> <THRESHOLD\_MOUSE>0.01</THRESHOLD\_MOUSE> <THRESHOLD\_INPUT>0.25</THRESHOLD\_INPUT> <UPARROW\_DRAG\_IM/> <DOWNARROW\_DRAG\_IM/> <LEFTARROW\_DRAG\_IM/> <RIGHTARROW\_DRAG\_IM/> <CURSOR\_CENTER\_DRAG\_IM/> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> <USE\_PAD\_DRAG\_IM\_LOCK>False</USE\_PAD\_DRAG\_IM\_LOCK> </DefaultTemplateParameters> <OverrideTemplateParameters> <THRESHOLD>\#THRESHOLD\_INPUT\# \#THRESHOLD\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD> <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> </OverrideTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MOUSEFLAGS\_DRAG\_IM>LeftAll+WheelUp+WheelDown+Lock+Unlock</MOUSEFLAGS\_DRAG\_IM> <CALLBACKCODE\_DRAG\_IM> (M:Event) 'WheelUp' scmi 0 == if{ g\#FLAG\_POS\_WHEEL\_UP\# } els{ (M:Event) 'WheelDown' scmi 0 == if{ g\#FLAG\_POS\_WHEEL\_DN\# } els{ (M:Event) 'Lock' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) \#UNSET\_DRAG\_LOCK\# } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_Last\#AXIS\#) } els{ (M:Event) 'LeftDrag' scmi 0 == if{ \#CHECK\_AND\_RESET\_DRAG\_LOCK\# \#CHECK\_IS\_DRAG\_LOCKED\# if{ (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) } els{ (M:Relative\#AXIS\#) (O:\_Last\#AXIS\#) - sp0 \#THRESHOLD\# (>O:\_InputThreshold) l0 abs (O:\_InputThreshold) > if{ \#SET\_DRAG\_LOCK\# l0 (O:\_InputThreshold) / abs flr sp1 l0 (O:\_InputThreshold) % abs sp2 :1 (\* for loop \*) l1 0 <= if{ g2 } l1 -- sp1 l0 \#DRAG\_IS\_POSITIVE\_CONDITION\# if{ \#POSITIVE\_AXIS\_CODE\_DRAG\_IM\# } els{ \#NEGATIVE\_AXIS\_CODE\_DRAG\_IM\# } g1 :2 l0 0 > if{ (M:Relative\#AXIS\#) l2 - (>O:\_Last\#AXIS\#) } els{ (M:Relative\#AXIS\#) l2 + (>O:\_Last\#AXIS\#) } g5 } } } } } } } quit :5 \#CALLBACKCODE\_DRAG\_IM\# quit :3 \#POSITIVE\_AXIS\_CODE\_DRAG\_IM\# g5 quit :4 \#NEGATIVE\_AXIS\_CODE\_DRAG\_IM\# g5 quit </CALLBACKCODE\_DRAG\_IM> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle+WheelUp+WheelDown</MOUSEFLAGS\_DEFAULT\_IM> <CALLBACKCODE\_DEFAULT\_IM> (M:Event) 'WheelUp' scmi 0 == if{ g1 } els{ (M:Event) 'WheelDown' scmi 0 == if{ g2 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_LastPos) (M:Relative\#AXIS\#) 0 > if{ g1 } els{ g2 } } } } quit :1 \#POSITIVE\_AXIS\_CODE\_DEFAULT\_IM\# quit :2 \#NEGATIVE\_AXIS\_CODE\_DEFAULT\_IM\# quit \#CALLBACKCODE\_DEFAULT\_IM\# </CALLBACKCODE\_DEFAULT\_IM> </UseTemplate> </Template> <!-- Dragging objects interations on X axis, using "set" event. Required parameter: DRAG\_SIMVAR DRAG\_SIMVAR\_UNITS DRAG\_EVENTID\_SET --> <Template Name="ASOBO\_GT\_Interaction\_DraggingXAxis\_EventSet"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Grab</CURSOR> <DRAG\_SCALE>163.84</DRAG\_SCALE> <DRAG\_AXIS\_SCALE>100</DRAG\_AXIS\_SCALE> <DRAG\_MIN\_VALUE>0</DRAG\_MIN\_VALUE> <DRAG\_MAX\_VALUE>16384</DRAG\_MAX\_VALUE> <AXIS>X</AXIS> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftDrag+WheelUp+WheelDown+Lock</MouseFlags> <CALLBACKDRAGGING/> </UseTemplate> </Template> <!-- Dragging objects interations on Y axis, using "set" event. Required parameter: DRAG\_SIMVAR DRAG\_SIMVAR\_UNITS DRAG\_EVENTID\_SET --> <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_EventSet"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Grab</CURSOR> <DRAG\_SCALE>163.84</DRAG\_SCALE> <DRAG\_AXIS\_SCALE>-100</DRAG\_AXIS\_SCALE> <DRAG\_MIN\_VALUE>0</DRAG\_MIN\_VALUE> <DRAG\_MAX\_VALUE>16384</DRAG\_MAX\_VALUE> <AXIS>Y</AXIS> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftDrag+WheelUp+WheelDown+Lock</MouseFlags> <CALLBACKDRAGGING/> </UseTemplate> </Template> <!-- Dragging objects interations on X axis, using "increase" and "decrease" events. Required parameter: CLOCKWISE\_EVENTID ANTICLOCKWISE\_EVENTID --> <Template Name="ASOBO\_GT\_Interaction\_DraggingXAxis\_EventsIncDec"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <DRAG\_DELTA>8</DRAG\_DELTA> <DRAG\_SCALAR>2</DRAG\_SCALAR> <CURSOR>Grab</CURSOR> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftDrag+WheelUp+WheelDown+Lock</MouseFlags> <X\_MOVEMENT/> </UseTemplate> </Template> <!-- Dragging objects interations on Y axis, using "increase" and "decrease" events. Required parameter: CLOCKWISE\_EVENTID ANTICLOCKWISE\_EVENTID --> <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_EventsIncDec"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <DRAG\_DELTA>20</DRAG\_DELTA> <DRAG\_SCALAR>5</DRAG\_SCALAR> <CURSOR>Grab</CURSOR> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftDrag+WheelUp+WheelDown+Lock</MouseFlags> <Y\_MOVEMENT/> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_Gates"> <DefaultTemplateParameters> <STEPS\_NUMBER>3</STEPS\_NUMBER> <GATE\_TOLERANCE>0.2</GATE\_TOLERANCE> <DRAG\_SPEED>10</DRAG\_SPEED> <POSITION\_TYPE>O</POSITION\_TYPE> <POSITION\_VAR>Position</POSITION\_VAR> <CURSOR>Grab</CURSOR> <AXIS>Y</AXIS> <GATE\_DIRECTION>1</GATE\_DIRECTION> <!-- GATE\_DIRECTION : -1 = Forwards 0 = Both 1 = Backwards --> <IGNORE\_GATE>0</IGNORE\_GATE> <INIT\_DRAG/> </DefaultTemplateParameters> <OverrideTemplateParameters> <Condition Valid="USE\_TRAJECTORY\_DRAG\_MODE"> <True> <Condition Valid="OVERRIDE\_NEW\_POSITION"> <True> <NEW\_POSITION>\#OVERRIDE\_NEW\_POSITION\#</NEW\_POSITION> </True> <False> <NEW\_POSITION>\#STEPS\_NUMBER\# (M:DragPercent) \* </NEW\_POSITION> </False> </Condition> <INIT\_DRAG> \#INIT\_DRAG\# (M:DragPercent) (>O:InitialDragPercent) </INIT\_DRAG> <DRAG\_CODE> \#DRAG\_CODE\# (M:DragPercent) (>O:PrevDragPercent) </DRAG\_CODE> </True> <False> <NEW\_POSITION>(\#POSITION\_TYPE\#:\#POSITION\_VAR\#) l3 + </NEW\_POSITION> </False> </Condition> <Condition> <Test> <And> <Greater> <Number>\#IGNORE\_GATE\#</Number> <Number>0</Number> </Greater> <Lower> <Number>\#IGNORE\_GATE\#</Number> <Number>\#STEPS\_NUMBER\#</Number> </Lower> </And> </Test> <True> <IGNORE\_GATE\_CODE> (O:MaxDraggingPosition) \#IGNORE\_GATE\# == if{ (O:MaxDraggingPosition) ++ (>O:MaxDraggingPosition) } (O:MinDraggingPosition) \#IGNORE\_GATE\# == if{ (O:MinDraggingPosition) -- (>O:MinDraggingPosition) } </IGNORE\_GATE\_CODE> </True> <False> <IGNORE\_GATE\_CODE/> </False> </Condition> </OverrideTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MOUSEFLAGS>LeftAll+WheelUp+WheelDown+Lock+Unlock</MOUSEFLAGS> <CALLBACKCODE> (M:Event) 'Lock' scmp 0 == if{ (M:RelativeY) (>O:PrevY, Number) (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) (>O:InitialDraggingPosition) (O:InitialDraggingPosition) near (O:InitialDraggingPosition) - abs \#GATE\_TOLERANCE\# < sp1 \#INIT\_DRAG\# \#GATE\_DIRECTION\# -1 != if{ l1 if{ (O:InitialDraggingPosition) near 1 + \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } els{ (O:InitialDraggingPosition) ceil \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } } els{ \#STEPS\_NUMBER\# (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ l1 if{ (O:InitialDraggingPosition) near 1 - 0 max (>O:MinDraggingPosition) } els{ (O:InitialDraggingPosition) flr 0 max (>O:MinDraggingPosition) } } els{ 0 (>O:MinDraggingPosition) } \#IGNORE\_GATE\_CODE\# 1 (>O:IsDragging) } els{ (M:Event) 'Unlock' scmp 0 == if{ 0 (>O:IsDragging) } els{ (M:Event) 'LeftDrag' scmp 0 == if{ (M:InputType) 1 == if{ (O:\_ResetLimitsTime) (E:SIMULATION TIME, second) < if{ (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) (>O:InitialDraggingPosition) (O:InitialDraggingPosition) near (O:InitialDraggingPosition) - abs \#GATE\_TOLERANCE\# < sp1 \#INIT\_DRAG\# \#GATE\_DIRECTION\# -1 != if{ l1 if{ (O:InitialDraggingPosition) near 1 + \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } els{ (O:InitialDraggingPosition) ceil \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } } els{ \#STEPS\_NUMBER\# (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ l1 if{ (O:InitialDraggingPosition) near 1 - 0 max (>O:MinDraggingPosition) } els{ (O:InitialDraggingPosition) flr 0 max (>O:MinDraggingPosition) } } els{ 0 (>O:MinDraggingPosition) } \#IGNORE\_GATE\_CODE\# } (E:SIMULATION TIME, second) 0.1 + (>O:\_ResetLimitsTime) } (O:PrevY) (M:RelativeY) - sp2 l2 \#DRAG\_SPEED\# \* sp3 \#GATE\_DIRECTION\# -1 != if{ (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#GATE\_TOLERANCE\# + flr 1 + (O:MaxDraggingPosition) min (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#GATE\_TOLERANCE\# - ceil 1 - (O:MinDraggingPosition) max (>O:MinDraggingPosition) } \#IGNORE\_GATE\_CODE\# \#NEW\_POSITION\# (O:MaxDraggingPosition) min (O:MinDraggingPosition) max (>\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#DRAG\_CODE\# (M:RelativeY) (>O:PrevY) } } } </CALLBACKCODE> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_SimGates"> <DefaultTemplateParameters> <STEPS\_NUMBER>3</STEPS\_NUMBER> <GATE\_TOLERANCE>0.2</GATE\_TOLERANCE> <DRAG\_SPEED>0.01</DRAG\_SPEED> <CURSOR>Grab</CURSOR> <GATE\_DIRECTION>1</GATE\_DIRECTION> <AXIS>Y</AXIS> <!-- GATE\_DIRECTION : -1 = Forwards 0 = Both 1 = Backwards --> <SIMVAR\_CONVERSION> </SIMVAR\_CONVERSION> <EVENTID\_CONVERSION> </EVENTID\_CONVERSION> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_SimGates\_Base"> </UseTemplate> </Template> <!-- Base logic template for dragging objects interations on axis, using code. Required parameter: UP\_CODE DOWN\_CODE AXIS (must be exactly "X" or "Y") --> <Template Name="ASOBO\_GT\_Interaction\_DraggingAxis\_Code"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Grab</CURSOR> <DRAG\_DELTA>0.001</DRAG\_DELTA> <DRAG\_SPEED>0.5</DRAG\_SPEED> <POSITION\_TYPE>O</POSITION\_TYPE> <POSITION\_VAR>Position</POSITION\_VAR> <Condition Check="IS\_LOOPING"> <True> <MIN\_LIMITER>dnor</MIN\_LIMITER> <MAX\_LIMITER>dnor</MAX\_LIMITER> </True> <False> <Condition Check="ANIM\_LENGTH"> <True> <MIN\_LIMITER> 0 max </MIN\_LIMITER> <MAX\_LIMITER> \#ANIM\_LENGTH\# min </MAX\_LIMITER> </True> <False> <ANIM\_LENGTH>100</ANIM\_LENGTH> <MIN\_LIMITER> 0 max </MIN\_LIMITER> <MAX\_LIMITER> 100 min </MAX\_LIMITER> </False> </Condition> </False> </Condition> <Condition Check="REVERSE\_INTERACTION"> <True> <FLAG\_1>2</FLAG\_1> <FLAG\_2>1</FLAG\_2> </True> <False> <FLAG\_1>1</FLAG\_1> <FLAG\_2>2</FLAG\_2> </False> </Condition> <LEFT\_SINGLE\_CODE/> <LEFT\_RELEASE\_CODE/> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftAll+WheelUp+WheelDown</MouseFlags> <CALLBACKCODE> (M:Event) 'WheelUp' scmi 0 == if{ g1 } els{ (M:Event) 'WheelDown' scmi 0 == if{ g2 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ \#LEFT\_SINGLE\_CODE\# (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) } els{ (M:Event) 'LeftRelease' scmi 0 == if{ \#LEFT\_RELEASE\_CODE\# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ (O:\_Last\#AXIS\#) (M:Relative\#AXIS\#) - \#DRAG\_DELTA\# / abs (>O:DragFactor) (O:\_Last\#AXIS\#) (M:Relative\#AXIS\#) - -\#DRAG\_DELTA\# < if{ (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) g1 } els{ (O:\_Last\#AXIS\#) (M:Relative\#AXIS\#) - \#DRAG\_DELTA\# > if{ (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) g2 } els{ } } } } } } } quit :\#FLAG\_1\# (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#DRAG\_SPEED\# (O:DragFactor) \* + \#MAX\_LIMITER\# (>\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#UP\_CODE\# quit :\#FLAG\_2\# (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#DRAG\_SPEED\# (O:DragFactor) \* - \#MIN\_LIMITER\# (>\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#DOWN\_CODE\# quit </CALLBACKCODE> </UseTemplate> </Template> <!-- Dragging objects interations on X axis, using code. Required parameter: CLOCKWISE\_CODE ANTICLOCKWISE\_CODE --> <Template Name="ASOBO\_GT\_Interaction\_DraggingXAxis\_Code"> <UseTemplate Name="ASOBO\_GT\_Interaction\_DraggingAxis\_Code"> <AXIS>X</AXIS> </UseTemplate> </Template> <!-- Dragging objects interations on Y axis, using code. Required parameter: CLOCKWISE\_CODE ANTICLOCKWISE\_CODE --> <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_Code"> <UseTemplate Name="ASOBO\_GT\_Interaction\_DraggingAxis\_Code"> <AXIS>Y</AXIS> </UseTemplate> </Template> <Template Name="ASOBO\_GT\_MouseRect"> <Parameters Type="Default"> <HELPID/> <TOOLTIPID/> <ANIMCURSOR\_MIN/> <ANIMCURSOR\_MAX/> <ANIMTIP\_LOOP/> <ANIMTIP\_0\_ON\_PERCENT/> <ANIMTIP\_1\_ON\_PERCENT/> <ANIMTIP\_2\_ON\_PERCENT/> <ANIMTIP\_3\_ON\_PERCENT/> <ANIMTIP\_4\_ON\_PERCENT/> <ANIMTIP\_5\_ON\_PERCENT/> <ANIMTIP\_6\_ON\_PERCENT/> <ANIMTIP\_7\_ON\_PERCENT/> <ANIMTIP\_8\_ON\_PERCENT/> <ANIMTIP\_9\_ON\_PERCENT/> <ANIMTIP\_10\_ON\_PERCENT/> <ANIMTIP\_11\_ON\_PERCENT/> <ANIMTIP\_12\_ON\_PERCENT/> <ANIMTIP\_13\_ON\_PERCENT/> <ANIMTIP\_14\_ON\_PERCENT/> <ANIMTIP\_15\_ON\_PERCENT/> <ANIMTIP\_0\_ON\_CURSOR/> <ANIMTIP\_1\_ON\_CURSOR/> <ANIMTIP\_2\_ON\_CURSOR/> <ANIMTIP\_3\_ON\_CURSOR/> <ANIMTIP\_4\_ON\_CURSOR/> <ANIMTIP\_5\_ON\_CURSOR/> <ANIMTIP\_6\_ON\_CURSOR/> <ANIMTIP\_7\_ON\_CURSOR/> <ANIMTIP\_8\_ON\_CURSOR/> <ANIMTIP\_9\_ON\_CURSOR/> <ANIMTIP\_10\_ON\_CURSOR/> <ANIMTIP\_11\_ON\_CURSOR/> <ANIMTIP\_12\_ON\_CURSOR/> <ANIMTIP\_13\_ON\_CURSOR/> <ANIMTIP\_14\_ON\_CURSOR/> <ANIMTIP\_15\_ON\_CURSOR/> <ANIMTIP\_0\_ON\_HITBOX/> <ANIMTIP\_1\_ON\_HITBOX/> <ANIMTIP\_2\_ON\_HITBOX/> <ANIMTIP\_3\_ON\_HITBOX/> <ANIMTIP\_4\_ON\_HITBOX/> <ANIMTIP\_5\_ON\_HITBOX/> <ANIMTIP\_6\_ON\_HITBOX/> <ANIMTIP\_7\_ON\_HITBOX/> <ANIMTIP\_8\_ON\_HITBOX/> <ANIMTIP\_9\_ON\_HITBOX/> <ANIMTIP\_10\_ON\_HITBOX/> <ANIMTIP\_11\_ON\_HITBOX/> <ANIMTIP\_12\_ON\_HITBOX/> <ANIMTIP\_13\_ON\_HITBOX/> <ANIMTIP\_14\_ON\_HITBOX/> <ANIMTIP\_15\_ON\_HITBOX/> <DRAG\_IS\_RELATIVE>True</DRAG\_IS\_RELATIVE> <DRAG\_AXIS\_X\_SCALE>0</DRAG\_AXIS\_X\_SCALE> <DRAG\_AXIS\_Y\_SCALE>0</DRAG\_AXIS\_Y\_SCALE> <DRAG\_AXIS\_Z\_SCALE>0</DRAG\_AXIS\_Z\_SCALE> <Condition Check="DRAG\_AXIS\_SCALE"> <Switch Param="AXIS"> <Case Value="X"> <DRAG\_AXIS\_X\_SCALE>\#DRAG\_AXIS\_SCALE\#</DRAG\_AXIS\_X\_SCALE> </Case> <Case Value="Y"> <DRAG\_AXIS\_Y\_SCALE>\#DRAG\_AXIS\_SCALE\#</DRAG\_AXIS\_Y\_SCALE> </Case> <Case Value="Z"> <DRAG\_AXIS\_Z\_SCALE>\#DRAG\_AXIS\_SCALE\#</DRAG\_AXIS\_Z\_SCALE> </Case> </Switch> </Condition> <DRAG\_NODE\_ID/> <DRAG\_ANIM\_NAME/> <Condition Check="USE\_TRAJECTORY\_DRAG\_MODE"> <True> <DRAG\_MODE>Trajectory</DRAG\_MODE> <Condition Check="DONT\_SYNC\_DRAG\_TO\_ANIM"> <True> <DRAG\_ANIM\_SYNCED>False</DRAG\_ANIM\_SYNCED> </True> <False> <DRAG\_ANIM\_SYNCED>True</DRAG\_ANIM\_SYNCED> </False> </Condition> </True> <False> <DRAG\_MODE>Default</DRAG\_MODE> <DRAG\_ANIM\_SYNCED>True</DRAG\_ANIM\_SYNCED> </False> </Condition> <Condition Valid="AXIS"> <True> <DRAG\_AXIS>\#AXIS\#</DRAG\_AXIS> </True> <False> <DRAG\_AXIS>Any</DRAG\_AXIS> </False> </Condition> <DRAG\_SCALAR>0.025</DRAG\_SCALAR> <Condition Check="NODE\_ID"> <True> <DRAG\_ANIMATION\_VARIABLE\_TYPE>O</DRAG\_ANIMATION\_VARIABLE\_TYPE> <DRAG\_ANIMATION\_VARIABLE\_NAME>XMLVAR\_\#NODE\_ID\#\_Animation\_Position</DRAG\_ANIMATION\_VARIABLE\_NAME> <DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE>O</DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE> <DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME>XMLVAR\_\#NODE\_ID\#\_Animation\_Target\_Position</DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME> </True> </Condition> <ANIMCURSOR\_DIR>1.0</ANIMCURSOR\_DIR> <!-- Handling old CallbackCodes for compatibility with Interaction models --> <Condition Check="CALLBACKCODE"> <True> <CALLBACKCODE\_DEFAULT\_IM>\#CALLBACKCODE\#</CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM>\#CALLBACKCODE\#</CALLBACKCODE\_DRAG\_IM> </True> <False> <Condition Check="CALLBACKCODE\_DEFAULT\_IM"> <CALLBACKCODE\_DRAG\_IM>\#CALLBACKCODE\_DEFAULT\_IM\#</CALLBACKCODE\_DRAG\_IM> </Condition> </False> </Condition> <CENTER\_RADIUS>0</CENTER\_RADIUS> <ALWAYS\_USE\_ANIM\_LAG>True</ALWAYS\_USE\_ANIM\_LAG> <!-- Override flags to prevent drag event to be called unless the corresponding button is down --> <DRAG\_MOUSEFLAGS\_LOCKABLE>LeftDrag+RightDrag+MiddleDrag</DRAG\_MOUSEFLAGS\_LOCKABLE> <TOOLTIP\_TITLE/> <TOOLTIP\_DISABLED/> <TOOLTIP\_TITLE\_IS\_DYNAMIC>False</TOOLTIP\_TITLE\_IS\_DYNAMIC> <TEMPORARY\_LOCK\_FLAGS>LeftSingle</TEMPORARY\_LOCK\_FLAGS> <INTERACTABLE\_GROUP\_ID/> <MOUSERECT\_DISABLED\_IN\_VR>False</MOUSERECT\_DISABLED\_IN\_VR> <MOUSERECT\_DISABLED\_WITH\_MOTION\_CONTROLLERS>False</MOUSERECT\_DISABLED\_WITH\_MOTION\_CONTROLLERS> <MOUSERECT\_IGNORE\_ZTEST>False</MOUSERECT\_IGNORE\_ZTEST> <MOUSERECT\_PRIORITIZE\_VCOCKPITS>False</MOUSERECT\_PRIORITIZE\_VCOCKPITS> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="TOOLTIP\_TITLE\_INDEX"> <Condition NotEmpty="TOOLTIP\_TITLE\_ID"> <True> <TOOLTIP\_TITLE>\#TOOLTIP\_TITLE\_INDEX\# (R:1:\#TOOLTIP\_TITLE\_ID\#) @sprintf</TOOLTIP\_TITLE> </True> <False> <TOOLTIP\_TITLE>\#TOOLTIP\_TITLE\_INDEX\# (R:1:\#TOOLTIP\_TITLE\#) @sprintf</TOOLTIP\_TITLE> </False> </Condition> <TOOLTIP\_TITLE\_IS\_DYNAMIC>True</TOOLTIP\_TITLE\_IS\_DYNAMIC> </Condition> <Condition Valid="ALWAYS\_USE\_ANIM\_LAG"> <True> <DRAG\_USE\_ANIM\_LAG>True</DRAG\_USE\_ANIM\_LAG> </True> <False> <DRAG\_USE\_ANIM\_LAG>False</DRAG\_USE\_ANIM\_LAG> </False> </Condition> <Condition NotEmpty="ANIMATION\_CODE\_SETTER"> <True> <Switch> <Case Check="X\_MOVEMENT"> <X\_MOVEMENT> \#X\_MOVEMENT\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </X\_MOVEMENT> </Case> <Case Check="Y\_MOVEMENT"> <Y\_MOVEMENT> \#Y\_MOVEMENT\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </Y\_MOVEMENT> </Case> <Case Check="CALLBACKDRAGGING"> <CALLBACKDRAGGING> \#CALLBACKDRAGGING\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </CALLBACKDRAGGING> </Case> <Case Check="CALLBACKCODE\_DEFAULT\_IM"> <CALLBACKCODE\_DEFAULT\_IM> \#CALLBACKCODE\_DEFAULT\_IM\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM> \#CALLBACKCODE\_DRAG\_IM\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </CALLBACKCODE\_DRAG\_IM> </Case> </Switch> </True> </Condition> <Condition Check="INVERT\_ANIM"> <True> <ANIMCURSOR\_DIR Process="Float">\#ANIMCURSOR\_DIR\# -1 \*</ANIMCURSOR\_DIR> </True> </Condition> <Condition Valid="INVERT\_IM\_DRAG\_INPUT\_SCALAR"> <True> <DRAG\_SCALAR Process="Float">\#DRAG\_SCALAR\# -1 \*</DRAG\_SCALAR> </True> </Condition> <Switch> <Case Valid="NO\_HIGHLIGHT\_NODE\_ID"> <!-- Skip the highlight for this MouseRect (can be used to prevent breaking material using a dynamic texture such as touch screens) --> <HIGHLIGHT\_NODE\_ID>\_\_NO\_HIGHLIGHT\_\_</HIGHLIGHT\_NODE\_ID> </Case> <Case NotEmpty="HIGHLIGHT\_NODE\_ID"> <!-- Skip the highlight for this MouseRect (can be used to prevent breaking material using a dynamic texture such as touch screens) --> <HIGHLIGHT\_NODE\_ID>\#HIGHLIGHT\_NODE\_ID\#</HIGHLIGHT\_NODE\_ID> </Case> <Default> <HIGHLIGHT\_NODE\_ID/> </Default> </Switch> <Condition Valid="DISABLE\_INTERACTION\_LOCK"> <True> <DRAG\_IM\_LOCK\_ENABLED>False</DRAG\_IM\_LOCK\_ENABLED> </True> <False> <DRAG\_IM\_LOCK\_ENABLED>True</DRAG\_IM\_LOCK\_ENABLED> </False> </Condition> <Condition Valid="DISABLE\_MOUSERECT"> <True> <MOUSERECT\_DISABLED>True</MOUSERECT\_DISABLED> </True> <False> <MOUSERECT\_DISABLED>False</MOUSERECT\_DISABLED> </False> </Condition> <PARAM1>LEFTARROW</PARAM1> <PARAM2>RIGHTARROW</PARAM2> <PARAM3>CURSOR</PARAM3> <PARAM4>CENTER\_CURSOR</PARAM4> <PARAM5>UPARROW</PARAM5> <PARAM6>DOWNARROW</PARAM6> <PARAM7>CENTER\_RADIUS</PARAM7> <PARAM7\_EMPTY\_IF\_NOT\_DECLARED>False</PARAM7\_EMPTY\_IF\_NOT\_DECLARED> <PARAM8>MOUSEFLAGS</PARAM8> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="TOOLTIP\_TITLE"> <False> <TOOLTIP\_DISABLED>True</TOOLTIP\_DISABLED> </False> </Condition> </Parameters> <Switch> <Case Check="EMISSIVE\_NODE\_POTENTIOMETER"> <UseTemplate Name="ASOBO\_GT\_Emissive\_Potentiometer"> <POTENTIOMETER>\#EMISSIVE\_NODE\_POTENTIOMETER\#</POTENTIOMETER> </UseTemplate> </Case> <Case Check="EMISSIVE\_NODE\_SIMVAR\_POWER\_SETTING"> <UseTemplate Name="ASOBO\_GT\_Emissive\_Power\_Setting"> <SIMVAR\_POWER\_SETTING>\#EMISSIVE\_NODE\_SIMVAR\_POWER\_SETTING\#</SIMVAR\_POWER\_SETTING> </UseTemplate> </Case> </Switch> <Condition Check="ANIMATION\_CODE\_SETTER"> <UseTemplate Name="ASOBO\_GT\_Update\_SmoothLeverMovement"> </UseTemplate> </Condition> <!-- Process parameters with potential different implementation depending on IM --> <Loop> <Setup> <Param>ID</Param> <From>1</From> <Inc>1</Inc> <While> <Arg Valid="PARAM\#ID\#"/> </While> </Setup> <Do> <Parameters Type="Default" Lifetime="Iteration"> <Condition Valid="PARAM\#ID\#\_EMPTY\_IF\_NOT\_DECLARED"> <True> <EMPTY\_IF\_NOT\_DECLARED Process="Param">PARAM\#ID\#\_EMPTY\_IF\_NOT\_DECLARED</EMPTY\_IF\_NOT\_DECLARED> </True> <False> <EMPTY\_IF\_NOT\_DECLARED>True</EMPTY\_IF\_NOT\_DECLARED> </False> </Condition> </Parameters> <Parameters Type="Override" Lifetime="Iteration"> <PARAM Process="Param">PARAM\#ID\#</PARAM> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <Condition NotEmpty="\#PARAM\#"> <True> <Condition Check="\#PARAM\#\_DEFAULT\_IM"> <False> <\#PARAM\#\_DEFAULT\_IM Process="Param">\#PARAM\#</\#PARAM\#\_DEFAULT\_IM> </False> </Condition> <Condition Check="\#PARAM\#\_DRAG\_IM"> <False> <\#PARAM\#\_DRAG\_IM Process="Param">\#PARAM\#</\#PARAM\#\_DRAG\_IM> </False> </Condition> </True> <False> <Condition> <Test> <Or> <Arg NotEmpty="\#PARAM\#\_DEFAULT\_IM"/> <Arg NotEmpty="\#PARAM\#\_DRAG\_IM"/> </Or> </Test> <True> <!-- procede, do not override declared (not empty) args --> <Condition Valid="EMPTY\_IF\_NOT\_DECLARED"> <Condition NotEmpty="\#PARAM\#\_DEFAULT\_IM"> <False> <\#PARAM\#\_DEFAULT\_IM/> </False> </Condition> <Condition NotEmpty="\#PARAM\#\_DRAG\_IM"> <False> <\#PARAM\#\_DRAG\_IM/> </False> </Condition> </Condition> </True> <False> <Condition Valid="EMPTY\_IF\_NOT\_DECLARED"> <\#PARAM\#\_DEFAULT\_IM/> <\#PARAM\#\_DRAG\_IM/> </Condition> </False> </Condition> </False> </Condition> </Parameters> </Do> <Then> <UseTemplate Name="ASOBO\_GT\_MouseRect\_Impl"> </UseTemplate> </Then> </Loop> </Template> <Template Name="ASOBO\_GT\_MouseRect\_Impl"> <MouseRect> <IMCursorsInstances> <IMDefault> <CursorLeft>\#LEFTARROW\_DEFAULT\_IM\#</CursorLeft> <CursorRight>\#RIGHTARROW\_DEFAULT\_IM\#</CursorRight> <CursorUp>\#UPARROW\_DEFAULT\_IM\#</CursorUp> <CursorDown>\#DOWNARROW\_DEFAULT\_IM\#</CursorDown> <CursorCenter>\#CENTER\_CURSOR\_DEFAULT\_IM\#</CursorCenter> <Cursor>\#CURSOR\_DEFAULT\_IM\#</Cursor> <CursorCenterRadius>\#CENTER\_RADIUS\_DEFAULT\_IM\#</CursorCenterRadius> </IMDefault> <IMDrag> <CursorLeft>\#LEFTARROW\_DRAG\_IM\#</CursorLeft> <CursorRight>\#RIGHTARROW\_DRAG\_IM\#</CursorRight> <CursorUp>\#UPARROW\_DRAG\_IM\#</CursorUp> <CursorDown>\#DOWNARROW\_DRAG\_IM\#</CursorDown> <CursorCenter>\#CENTER\_CURSOR\_DRAG\_IM\#</CursorCenter> <Cursor>\#CURSOR\_DRAG\_IM\#</Cursor> <CursorCenterRadius>\#CENTER\_RADIUS\_DRAG\_IM\#</CursorCenterRadius> </IMDrag> </IMCursorsInstances> <IMMouseFlagsInstances> <IMDefault>\#MOUSEFLAGS\_DEFAULT\_IM\#</IMDefault> <IMDrag>\#MOUSEFLAGS\_DRAG\_IM\#</IMDrag> </IMMouseFlagsInstances> <IMTooltipsInstances> <IMDefault> <HelpID>\#HELPID\#</HelpID> <TooltipID>\#TOOLTIPID\#</TooltipID> <Animated> <Condition Check="ANIMREF\_ID"> <AnimRefID>\#ANIMREF\_ID\#</AnimRefID> </Condition> <AnimCursor min="\#ANIMCURSOR\_MIN\#" max="\#ANIMCURSOR\_MAX\#">\#ANIMCURSOR\_DIR\#</AnimCursor> <Condition Check="ANIMTIP\_LOOP"> <AnimTooltipLoop>\#ANIMTIP\_LOOP\#</AnimTooltipLoop> </Condition> <Loop> <Setup> <Param>ID</Param> <From>0</From> <Inc>1</Inc> <While> <Arg NotEmpty="ANIMTIP\_\#ID\#"/> </While> </Setup> <Do> <Parameters Type="Default" Lifetime="Iteration"> <ANIMTIP\_\#ID\#\_ON\_PERCENT>False</ANIMTIP\_\#ID\#\_ON\_PERCENT> <TOOLTIP\_\#ID\#\_ON\_CURSOR/> <TOOLTIP\_\#ID\#\_ON\_HITBOX/> </Parameters> <Parameters Type="Override" Lifetime="Iteration"> <ANIMTIP\_ON\_PERCENT Process="Param">ANIMTIP\_\#ID\#\_ON\_PERCENT</ANIMTIP\_ON\_PERCENT> <TOOLTIP\_ON\_CURSOR Process="Param">ANIMTIP\_\#ID\#\_ON\_CURSOR</TOOLTIP\_ON\_CURSOR> <TOOLTIP\_ON\_HITBOX Process="Param">ANIMTIP\_\#ID\#\_ON\_HITBOX</TOOLTIP\_ON\_HITBOX> <ANIMTIP Process="Param">ANIMTIP\_\#ID\#</ANIMTIP> </Parameters> <AnimTooltip percent="\#ANIMTIP\_ON\_PERCENT\#" cursor="\#TOOLTIP\_ON\_CURSOR\#" hitbox="\#TOOLTIP\_ON\_HITBOX\#">\#ANIMTIP\#</AnimTooltip> </Do> </Loop> </Animated> </IMDefault> <IMDrag> <TooltipEntries Disabled="\#TOOLTIP\_DISABLED\#"> <TTTitle RPN="\#TOOLTIP\_TITLE\_IS\_DYNAMIC\#">\#TOOLTIP\_TITLE\#</TTTitle> <Loop> <Setup> <Param>ID</Param> <From>0</From> <Inc>1</Inc> <While> <Arg NotEmpty="TOOLTIP\_ENTRY\_\#ID\#"/> </While> </Setup> <Do> <Parameters Type="Override" Lifetime="Iteration"> <TT\_ID Process="Param">TOOLTIP\_ENTRY\_\#ID\#</TT\_ID> </Parameters> <TooltipEntry ID="\#TT\_ID\#"/> </Do> </Loop> </TooltipEntries> </IMDrag> </IMTooltipsInstances> <Disabled>\#MOUSERECT\_DISABLED\#</Disabled> <DisabledInVr>\#MOUSERECT\_DISABLED\_IN\_VR\#</DisabledInVr> <DisabledWithMotionControllers>\#MOUSERECT\_DISABLED\_WITH\_MOTION\_CONTROLLERS\#</DisabledWithMotionControllers> <Lock>\#DRAG\_IM\_LOCK\_ENABLED\#</Lock> <LockFlagsTemporary>\#TEMPORARY\_LOCK\_FLAGS\#</LockFlagsTemporary> <HighlightNodeId>\#HIGHLIGHT\_NODE\_ID\#</HighlightNodeId> <IgnoreZTest>\#MOUSERECT\_IGNORE\_ZTEST\#</IgnoreZTest> <PrioritizeVCockpits>\#MOUSERECT\_PRIORITIZE\_VCOCKPITS\#</PrioritizeVCockpits> <GroupID>\#INTERACTABLE\_GROUP\_ID\#</GroupID> <Switch> <Case NotEmpty="EVENTID"> <EventID>\#EVENTID\#</EventID> </Case> <Case Check="CALLBACKCODE\_DEFAULT\_IM"> <CallbackCode> <IMCodeInstances> <IMDefault>\#CALLBACKCODE\_DEFAULT\_IM\#</IMDefault> <IMDrag>\#CALLBACKCODE\_DRAG\_IM\#</IMDrag> </IMCodeInstances> <DragAnimName>\#DRAG\_ANIM\_NAME\#</DragAnimName> <DragNodeId>\#DRAG\_NODE\_ID\#</DragNodeId> <DragAnimSynced>\#DRAG\_ANIM\_SYNCED\#</DragAnimSynced> <DragUseAnimLag>\#DRAG\_USE\_ANIM\_LAG\#</DragUseAnimLag> <DragMode>\#DRAG\_MODE\#</DragMode> <DragAxis>\#DRAG\_AXIS\#</DragAxis> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <DragFlagsLockable>\#DRAG\_MOUSEFLAGS\_LOCKABLE\#</DragFlagsLockable> </CallbackCode> </Case> <Case Check="Y\_MOVEMENT"> <CallbackJumpDragging> <YMovement> <Delta>\#DRAG\_DELTA\#</Delta> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <EventIdInc>\#CLOCKWISE\_EVENTID\#</EventIdInc> <EventIdDec>\#ANTICLOCKWISE\_EVENTID\#</EventIdDec> </YMovement> <DragUseAnimLag>\#DRAG\_USE\_ANIM\_LAG\#</DragUseAnimLag> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <DragFlagsLockable>\#DRAG\_MOUSEFLAGS\_LOCKABLE\#</DragFlagsLockable> </CallbackJumpDragging> </Case> <Case Check="X\_MOVEMENT"> <CallbackJumpDragging> <XMovement> <Delta>\#DRAG\_DELTA\#</Delta> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <EventIdInc>\#CLOCKWISE\_EVENTID\#</EventIdInc> <EventIdDec>\#ANTICLOCKWISE\_EVENTID\#</EventIdDec> </XMovement> <DragUseAnimLag>\#DRAG\_USE\_ANIM\_LAG\#</DragUseAnimLag> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <DragFlagsLockable>\#DRAG\_MOUSEFLAGS\_LOCKABLE\#</DragFlagsLockable> </CallbackJumpDragging> </Case> <Case Check="CALLBACKDRAGGING"> <CallbackDragging> <Variable>\#DRAG\_SIMVAR\#</Variable> <Units>\#DRAG\_SIMVAR\_UNITS\#</Units> <Scale>\#DRAG\_SCALE\#</Scale> <XScale>\#DRAG\_AXIS\_X\_SCALE\#</XScale> <YScale>\#DRAG\_AXIS\_Y\_SCALE\#</YScale> <ZScale>\#DRAG\_AXIS\_Z\_SCALE\#</ZScale> <MinValue>\#DRAG\_MIN\_VALUE\#</MinValue> <MaxValue>\#DRAG\_MAX\_VALUE\#</MaxValue> <EventID>\#DRAG\_EVENTID\_SET\#</EventID> <IsRelative>\#DRAG\_IS\_RELATIVE\#</IsRelative> <DragAnimName>\#DRAG\_ANIM\_NAME\#</DragAnimName> <DragNodeId>\#DRAG\_NODE\_ID\#</DragNodeId> <DragAnimSynced>\#DRAG\_ANIM\_SYNCED\#</DragAnimSynced> <DragUseAnimLag>\#DRAG\_USE\_ANIM\_LAG\#</DragUseAnimLag> <DragMode>\#DRAG\_MODE\#</DragMode> <DragAxis>\#DRAG\_AXIS\#</DragAxis> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <DragFlagsLockable>\#DRAG\_MOUSEFLAGS\_LOCKABLE\#</DragFlagsLockable> </CallbackDragging> </Case> </Switch> </MouseRect> </Template> </ModelBehaviors>     ### Includes - RelativeFile: [Subtemplates\\\\Interactions\_Subtemplates.xml](subtemplates/interactions-subtemplates/) ### Templates Template list 1. [ASOBO\_GT\_Interaction\_NoInteraction](#ASOBO_GT_Interaction_NoInteraction) 2. [ASOBO\_GT\_Interaction\_Tooltip](#ASOBO_GT_Interaction_Tooltip) 3. [ASOBO\_GT\_Interaction\_LeftSingle\_Event](#ASOBO_GT_Interaction_LeftSingle_Event) 4. [ASOBO\_GT\_Interaction\_LeftSingle\_Code](#ASOBO_GT_Interaction_LeftSingle_Code) 5. [ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code](#ASOBO_GT_Interaction_LeftSingle_Leave_Code) 6. [ASOBO\_GT\_Interaction\_Left\_Timed\_Code](#ASOBO_GT_Interaction_Left_Timed_Code) 7. [ASOBO\_GT\_Interaction\_LeftSingle\_MultiStates](#ASOBO_GT_Interaction_LeftSingle_MultiStates) 8. [ASOBO\_GT\_Interaction\_WheelAndContinuousLeft](#ASOBO_GT_Interaction_WheelAndContinuousLeft) 9. [ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingle](#ASOBO_GT_Interaction_WheelAndContinuousLeft_LeftSingle) 10. [ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_PushPull](#ASOBO_GT_Interaction_WheelAndContinuousLeft_PushPull) 11. [ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingleTimed](#ASOBO_GT_Interaction_WheelAndContinuousLeft_LeftSingleTimed) 12. [ASOBO\_GT\_Interaction\_WheelLeftDrag\_Axis](#ASOBO_GT_Interaction_WheelLeftDrag_Axis) 13. [ASOBO\_GT\_Interaction\_WheelLeftSingle\_Axis](#ASOBO_GT_Interaction_WheelLeftSingle_Axis) 14. [ASOBO\_GT\_Interaction\_DraggingXAxis\_EventSet](#ASOBO_GT_Interaction_DraggingXAxis_EventSet) 15. [ASOBO\_GT\_Interaction\_DraggingYAxis\_EventSet](#ASOBO_GT_Interaction_DraggingYAxis_EventSet) 16. [ASOBO\_GT\_Interaction\_DraggingXAxis\_EventsIncDec](#ASOBO_GT_Interaction_DraggingXAxis_EventsIncDec) 17. [ASOBO\_GT\_Interaction\_DraggingYAxis\_EventsIncDec](#ASOBO_GT_Interaction_DraggingYAxis_EventsIncDec) 18. [ASOBO\_GT\_Interaction\_DraggingYAxis\_Gates](#ASOBO_GT_Interaction_DraggingYAxis_Gates) 19. [ASOBO\_GT\_Interaction\_DraggingYAxis\_SimGates](#ASOBO_GT_Interaction_DraggingYAxis_SimGates) 20. [ASOBO\_GT\_Interaction\_DraggingAxis\_Code](#ASOBO_GT_Interaction_DraggingAxis_Code) 21. [ASOBO\_GT\_Interaction\_DraggingXAxis\_Code](#ASOBO_GT_Interaction_DraggingXAxis_Code) 22. [ASOBO\_GT\_Interaction\_DraggingYAxis\_Code](#ASOBO_GT_Interaction_DraggingYAxis_Code) 23. [ASOBO\_GT\_MouseRect](#ASOBO_GT_MouseRect) 24. [ASOBO\_GT\_MouseRect\_Impl](#ASOBO_GT_MouseRect_Impl) - #### ASOBO\_GT\_Interaction\_NoInteraction Definition from XML <Template Name="ASOBO\_GT\_Interaction\_NoInteraction"> <DefaultTemplateParameters> <MOUSEFLAGS/> <DISABLE\_INTERACTION\_LOCK>True</DISABLE\_INTERACTION\_LOCK> <DISABLE\_MOUSERECT>True</DISABLE\_MOUSERECT> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Part\_ID"/> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <CALLBACKCODE>0</CALLBACKCODE> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - MOUSEFLAGS - DISABLE\_INTERACTION\_LOCK - DISABLE\_MOUSERECT   Templates used: - [ASOBO\_GT\_Part\_ID](complex/misc/#ASOBO_GT_Part_ID) - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - CALLBACKCODE [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_Tooltip Definition from XML <Template Name="ASOBO\_GT\_Interaction\_Tooltip"> <Parameters Type="Default"> <ANIM\_NAME>\#NODE\_ID\#</ANIM\_NAME> <CONTAINER\_COUNT>0</CONTAINER\_COUNT> </Parameters> <Condition> <Test> <Greater> <Number>\#CONTAINER\_COUNT\#</Number> <Number>0</Number> </Greater> </Test> <True> <Component ID="\#NODE\_ID\#\_1" Node="\#NODE\_ID\#\_1"> <UseTemplate Name="ASOBO\_GT\_Interaction\_NoInteraction"> <TOOLTIPID>TT:COCKPIT.TOOLTIPS.INOP</TOOLTIPID> </UseTemplate> </Component> </True> <False> <Component ID="\#NODE\_ID\#" Node="\#NODE\_ID\#"> <UseTemplate Name="ASOBO\_GT\_Interaction\_NoInteraction"> <TOOLTIPID>TT:COCKPIT.TOOLTIPS.INOP</TOOLTIPID> </UseTemplate> <Condition NotEmpty="ANIM\_POS"> <True> <UseTemplate Name="ASOBO\_GT\_Anim\_Code"> <ANIM\_CODE>\#ANIM\_POS\#</ANIM\_CODE> </UseTemplate> </True> </Condition> <Condition NotEmpty="EMISSIVE\_CODE"> <True> <UseTemplate Name="ASOBO\_GT\_Emissive\_Gauge"/> </True> </Condition> </Component> </False> </Condition> <Condition> <Test> <Greater> <Number>\#CONTAINER\_COUNT\#</Number> <Number>1</Number> </Greater> </Test> <True> <Component ID="\#NODE\_ID\#\_2" Node="\#NODE\_ID\#\_2"> <UseTemplate Name="ASOBO\_GT\_Interaction\_NoInteraction"> <TOOLTIPID>TT:COCKPIT.TOOLTIPS.INOP</TOOLTIPID> </UseTemplate> </Component> </True> </Condition> <Condition> <Test> <Greater> <Number>\#CONTAINER\_COUNT\#</Number> <Number>2</Number> </Greater> </Test> <True> <Component ID="\#NODE\_ID\#\_3" Node="\#NODE\_ID\#\_3"> <UseTemplate Name="ASOBO\_GT\_Interaction\_NoInteraction"> <TOOLTIPID>TT:COCKPIT.TOOLTIPS.INOP</TOOLTIPID> </UseTemplate> </Component> </True> </Condition> </Template> Parameters initialization: - Default Parameters set: - ANIM\_NAME (using NODE\_ID) - CONTAINER\_COUNT Condition: Test - Case: True Parameters read: - NODE\_ID Components: - \#NODE\_ID\#\_1 (Node: \#NODE\_ID\#\_1)   Templates used: - [ASOBO\_GT\_Interaction\_NoInteraction](interactions/#ASOBO_GT_Interaction_NoInteraction) Parameters set: - TOOLTIPID - Case: False Parameters read: - NODE\_ID Components: - \#NODE\_ID\# (Node: \#NODE\_ID\#)   Templates used: - [ASOBO\_GT\_Interaction\_NoInteraction](interactions/#ASOBO_GT_Interaction_NoInteraction) Parameters set: - TOOLTIPID Condition: NotEmpty(ANIM\_POS) - Case: True   Templates used: - [ASOBO\_GT\_Anim\_Code](animations/#ASOBO_GT_Anim_Code) Parameters set: - ANIM\_CODE (using ANIM\_POS) Condition: NotEmpty(EMISSIVE\_CODE) - Case: True   Templates used: - [ASOBO\_GT\_Emissive\_Gauge](emissive/#ASOBO_GT_Emissive_Gauge) Condition: Test - Case: True Parameters read: - NODE\_ID Components: - \#NODE\_ID\#\_2 (Node: \#NODE\_ID\#\_2)   Templates used: - [ASOBO\_GT\_Interaction\_NoInteraction](interactions/#ASOBO_GT_Interaction_NoInteraction) Parameters set: - TOOLTIPID Condition: Test - Case: True Parameters read: - NODE\_ID Components: - \#NODE\_ID\#\_3 (Node: \#NODE\_ID\#\_3)   Templates used: - [ASOBO\_GT\_Interaction\_NoInteraction](interactions/#ASOBO_GT_Interaction_NoInteraction) Parameters set: - TOOLTIPID [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_LeftSingle\_Event Definition from XML <Template Name="ASOBO\_GT\_Interaction\_LeftSingle\_Event"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Hand</CURSOR> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle</MouseFlags> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - CURSOR   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - MouseFlags [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_LeftSingle\_Code Definition from XML <Template Name="ASOBO\_GT\_Interaction\_LeftSingle\_Code"> <Parameters Type="Override"> <IS\_SWITCH>False</IS\_SWITCH> </Parameters> <Parameters Type="Default"> <HELPID/> <TOOLTIPID/> <CURSOR>Hand</CURSOR> <Condition> <Test> <And> <Arg Valid="IS\_SWITCH"/> <Arg NotEmpty="ANIM\_CODE"/> </And> </Test> <True> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle</MOUSEFLAGS\_DEFAULT\_IM> <MOUSEFLAGS\_DRAG\_IM>LeftAll+Wheel+Lock+Unlock</MOUSEFLAGS\_DRAG\_IM> <AXIS>Y</AXIS> <THRESHOLD\_INPUT>0.03</THRESHOLD\_INPUT> <THRESHOLD\_MOUSE>0.01</THRESHOLD\_MOUSE> <Condition Valid="INVERT\_WHEEL\_INTERACTION"> <True> <FLAG\_POS\_WHEEL\_UP>2</FLAG\_POS\_WHEEL\_UP> <FLAG\_POS\_WHEEL\_DN>1</FLAG\_POS\_WHEEL\_DN> </True> <False> <FLAG\_POS\_WHEEL\_UP>1</FLAG\_POS\_WHEEL\_UP> <FLAG\_POS\_WHEEL\_DN>2</FLAG\_POS\_WHEEL\_DN> </False> </Condition> <Condition Valid="INVERT\_SWITCH\_ON\_CONDITION"> <True> <SWITCH\_ON\_CONDITION>0 ==</SWITCH\_ON\_CONDITION> </True> <False> <SWITCH\_ON\_CONDITION>0 ></SWITCH\_ON\_CONDITION> </False> </Condition> </True> <False> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle</MOUSEFLAGS\_DEFAULT\_IM> <MOUSEFLAGS\_DRAG\_IM>Lock</MOUSEFLAGS\_DRAG\_IM> <DISABLE\_INTERACTION\_LOCK>True</DISABLE\_INTERACTION\_LOCK> </False> </Condition> <Condition Check="LEFT\_SINGLE\_CODE"> <True> <LEFT\_SINGLE\_CODE\_DEFAULT\_IM>\#LEFT\_SINGLE\_CODE\#</LEFT\_SINGLE\_CODE\_DEFAULT\_IM> <LEFT\_SINGLE\_CODE\_DRAG\_IM>\#LEFT\_SINGLE\_CODE\#</LEFT\_SINGLE\_CODE\_DRAG\_IM> </True> <False> <LEFT\_SINGLE\_CODE\_DEFAULT\_IM/> <LEFT\_SINGLE\_CODE\_DRAG\_IM/> </False> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="IS\_SWITCH"> <Condition NotEmpty="ANIM\_CODE"> <False> <IS\_SWITCH>False</IS\_SWITCH> </False> <True> <LEFT\_SINGLE\_CODE\_DRAG\_IM> \#ANIM\_CODE\# \#SWITCH\_ON\_CONDITION\# (>O:\_bSwitchIsON) \#THRESHOLD\_INPUT\# \#THRESHOLD\_MOUSE\# (M:InputType) 1 == ? sp0 (M:Event) 'WheelUp' scmi 0 == if{ g\#FLAG\_POS\_WHEEL\_UP\# } els{ (M:Event) 'WheelDown' scmi 0 == if{ g\#FLAG\_POS\_WHEEL\_DN\# } els{ (M:Event) 'Lock' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_InitPos) } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_InitPos) } els{ (M:Event) 'LeftDrag' scmi 0 == if{ (M:Relative\#AXIS\#) (O:\_InitPos) - sp1 l1 0 > if{ l1 l0 > if{ (M:Relative\#AXIS\#) (>O:\_InitPos) g1 } } els{ l1 abs l0 > if{ (M:Relative\#AXIS\#) (>O:\_InitPos) g2 } } } } } } } quit :1 (O:\_bSwitchIsON) ! if{ g3 } quit :2 (O:\_bSwitchIsON) if{ g3 } quit :3 \#LEFT\_SINGLE\_CODE\_DRAG\_IM\# </LEFT\_SINGLE\_CODE\_DRAG\_IM> </True> </Condition> </Condition> </Parameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <CALLBACKCODE\_DRAG\_IM> \#LEFT\_SINGLE\_CODE\_DRAG\_IM\# </CALLBACKCODE\_DRAG\_IM> <CALLBACKCODE\_DEFAULT\_IM> \#LEFT\_SINGLE\_CODE\_DEFAULT\_IM\# </CALLBACKCODE\_DEFAULT\_IM> </UseTemplate> </Template> Parameters initialization: - Override Parameters set: - IS\_SWITCH - Default Parameters set: - HELPID - TOOLTIPID - CURSOR Condition: Test(IS\_SWITCH, ANIM\_CODE) - Case: True Parameters set: - CURSOR\_DRAG\_IM - MOUSEFLAGS\_DEFAULT\_IM - MOUSEFLAGS\_DRAG\_IM - AXIS - THRESHOLD\_INPUT - THRESHOLD\_MOUSE Condition: Valid(INVERT\_WHEEL\_INTERACTION) - Case: True Parameters set: - FLAG\_POS\_WHEEL\_UP - FLAG\_POS\_WHEEL\_DN - Case: False Parameters set: - FLAG\_POS\_WHEEL\_UP - FLAG\_POS\_WHEEL\_DN Condition: Valid(INVERT\_SWITCH\_ON\_CONDITION) - Case: True Parameters set: - SWITCH\_ON\_CONDITION - Case: False Parameters set: - SWITCH\_ON\_CONDITION - Case: False Parameters set: - MOUSEFLAGS\_DEFAULT\_IM - MOUSEFLAGS\_DRAG\_IM - DISABLE\_INTERACTION\_LOCK Condition: Check(LEFT\_SINGLE\_CODE) - Case: True Parameters set: - LEFT\_SINGLE\_CODE\_DEFAULT\_IM (using LEFT\_SINGLE\_CODE) - LEFT\_SINGLE\_CODE\_DRAG\_IM (using LEFT\_SINGLE\_CODE) - Case: False Parameters set: - LEFT\_SINGLE\_CODE\_DEFAULT\_IM - LEFT\_SINGLE\_CODE\_DRAG\_IM - Override Condition: Valid(IS\_SWITCH) - Case: True Condition: NotEmpty(ANIM\_CODE) - Case: False Parameters set: - IS\_SWITCH - Case: True Parameters set: - LEFT\_SINGLE\_CODE\_DRAG\_IM (using ANIM\_CODE, SWITCH\_ON\_CONDITION, THRESHOLD\_INPUT, THRESHOLD\_MOUSE, FLAG\_POS\_WHEEL\_UP, FLAG\_POS\_WHEEL\_DN, AXIS, LEFT\_SINGLE\_CODE\_DRAG\_IM)   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - CALLBACKCODE\_DRAG\_IM (using LEFT\_SINGLE\_CODE\_DRAG\_IM) - CALLBACKCODE\_DEFAULT\_IM (using LEFT\_SINGLE\_CODE\_DEFAULT\_IM) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code Definition from XML <Template Name="ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Hand</CURSOR> <MOUSEFLAGS>LeftAll+Lock+Unlock</MOUSEFLAGS> <MOUSE\_WHEEL\_INPUTS/> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code\_Subtemplate1"> <Condition Check="WHEEL\_UP\_CODE"> <MOUSEFLAGS>\#MOUSEFLAGS\#+WheelUp</MOUSEFLAGS> <MOUSE\_WHEEL\_INPUTS> els{ (M:Event) 'WheelUp' scmi 0 == if{ \#WHEEL\_UP\_CODE\# } \#MOUSE\_WHEEL\_INPUTS\# }</MOUSE\_WHEEL\_INPUTS> </Condition> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - CURSOR - MOUSEFLAGS - MOUSE\_WHEEL\_INPUTS   Templates used: - [ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code\_Subtemplate1](subtemplates/interactions-subtemplates/#ASOBO_GT_Interaction_LeftSingle_Leave_Code_Subtemplate1) Condition: Check(WHEEL\_UP\_CODE) - Case: True Parameters set: - MOUSEFLAGS (using MOUSEFLAGS) - MOUSE\_WHEEL\_INPUTS (using WHEEL\_UP\_CODE, MOUSE\_WHEEL\_INPUTS) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_Left\_Timed\_Code Definition from XML <Template Name="ASOBO\_GT\_Interaction\_Left\_Timed\_Code"> <Parameters Type="Default"> <Switch Param="TIMED\_TYPE"> <Case Value="X\_EVENTS"> <LONG\_CLICK\_TIME\_1>1</LONG\_CLICK\_TIME\_1> <LONG\_CLICK\_TIME\_2>2</LONG\_CLICK\_TIME\_2> </Case> <Default> <LONG\_CLICK\_TIME>2</LONG\_CLICK\_TIME> </Default> </Switch> <HELPID/> <TOOLTIPID/> <LEFT\_SINGLE\_CODE/> <LEFT\_LEAVE\_CODE/> <RELEASE\_CODE/> </Parameters> <Parameters Type="Default"> <Condition Valid="USE\_INPUT\_EVENT\_ID"> <True> <Switch Param="TIMED\_TYPE"> <Case Value="X\_EVENTS"> <SHORT\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</SHORT\_CLICK\_CODE> <LONG\_CLICK\_CODE\_1>\#LEFT\_LEAVE\_CODE\#</LONG\_CLICK\_CODE\_1> <LONG\_CLICK\_CODE\_2>\#LEFT\_LEAVE\_CODE\#</LONG\_CLICK\_CODE\_2> </Case> <Default> <SHORT\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</SHORT\_CLICK\_CODE> <LONG\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</LONG\_CLICK\_CODE> </Default> </Switch> </True> </Condition> </Parameters> <Parameters Type="Override"> <Condition Valid="USE\_INPUT\_EVENT\_ID"> <False> <LEFT\_SINGLE\_CODE> (E:SIMULATION TIME, second) (>O:\_PressTime) \#LEFT\_SINGLE\_CODE\# </LEFT\_SINGLE\_CODE> <LEFT\_LEAVE\_CODE> (O:\_PressTime) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\# + < if{ \#RELEASE\_CODE\# \#SHORT\_CLICK\_CODE\# } } 0 (>O:\_PressTime) \#LEFT\_LEAVE\_CODE\# </LEFT\_LEAVE\_CODE> </False> </Condition> </Parameters> <Switch Param="TIMED\_TYPE"> <Case Value="X\_EVENTS"> <Update Frequency="10"> (O:\_PressTime) 0 > if{ (O:\_PressForDuration) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) (O:\_PressForDuration) + > if{ \#LEFT\_LEAVE\_CODE\# } els{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\_1\# + >= if{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\_2\# + < if{ (O:\_Process\_Step) 0 == if{ \#LONG\_CLICK\_CODE\_1\# quit } } els{ (O:\_Process\_Step) 1 == if{ \#LONG\_CLICK\_CODE\_2\# quit } } } } } els{ (E:SIMULATION TIME, second) (O:\_PressTime) - sp0 l0 \#LONG\_CLICK\_TIME\_2\# >= if{ (O:\_Process\_Step) 1 == if{ \#LONG\_CLICK\_CODE\_2\# } quit } l0 \#LONG\_CLICK\_TIME\_1\# >= if{ (O:\_Process\_Step) 0 == if{ \#LONG\_CLICK\_CODE\_1\# } quit } } } </Update> </Case> <Default> <Update Frequency="10"> (O:\_PressTime) 0 > if{ (O:\_PressForDuration) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) (O:\_PressForDuration) + > if{ (O:\_PressForDuration) \#LONG\_CLICK\_TIME\# >= if{ \#LONG\_CLICK\_CODE\# } els{ \#RELEASE\_CODE\# \#SHORT\_CLICK\_CODE\# } 0 (>O:\_PressTime) } } els{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\# + > if{ \#LONG\_CLICK\_CODE\# 0 (>O:\_PressTime) } } } </Update> </Default> </Switch> <UseTemplate Name="ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code"/> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - LEFT\_SINGLE\_CODE - LEFT\_LEAVE\_CODE - RELEASE\_CODE Condition: Switch(TIMED\_TYPE) - Case: X\_EVENTS Parameters set: - LONG\_CLICK\_TIME\_1 - LONG\_CLICK\_TIME\_2 - Default case: Parameters set: - LONG\_CLICK\_TIME - Default Condition: Valid(USE\_INPUT\_EVENT\_ID) - Case: True Condition: Switch(TIMED\_TYPE) - Case: X\_EVENTS Parameters set: - SHORT\_CLICK\_CODE (using LEFT\_LEAVE\_CODE) - LONG\_CLICK\_CODE\_1 (using LEFT\_LEAVE\_CODE) - LONG\_CLICK\_CODE\_2 (using LEFT\_LEAVE\_CODE) - Default case: Parameters set: - SHORT\_CLICK\_CODE (using LEFT\_LEAVE\_CODE) - LONG\_CLICK\_CODE (using LEFT\_LEAVE\_CODE) - Override Condition: Valid(USE\_INPUT\_EVENT\_ID) - Case: False Parameters set: - LEFT\_SINGLE\_CODE (using LEFT\_SINGLE\_CODE) - LEFT\_LEAVE\_CODE (using LONG\_CLICK\_TIME, RELEASE\_CODE, SHORT\_CLICK\_CODE, LEFT\_LEAVE\_CODE)   Templates used: - [ASOBO\_GT\_Interaction\_LeftSingle\_Leave\_Code](interactions/#ASOBO_GT_Interaction_LeftSingle_Leave_Code) Condition: Switch(TIMED\_TYPE) - Case: X\_EVENTS Parameters read: - LEFT\_LEAVE\_CODE - LONG\_CLICK\_TIME\_1 - LONG\_CLICK\_TIME\_2 - LONG\_CLICK\_CODE\_1 - LONG\_CLICK\_CODE\_2 - Default case: Parameters read: - LONG\_CLICK\_TIME - LONG\_CLICK\_CODE - RELEASE\_CODE - SHORT\_CLICK\_CODE [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_LeftSingle\_MultiStates Definition from XML <Template Name="ASOBO\_GT\_Interaction\_LeftSingle\_MultiStates"> <DefaultTemplateParameters> <NUM\_STATES>2</NUM\_STATES> <SWITCH\_POSITION\_TYPE>O</SWITCH\_POSITION\_TYPE> <SWITCH\_POSITION\_VAR>SwitchState</SWITCH\_POSITION\_VAR> <SWITCH\_DIRECTION>Vertical</SWITCH\_DIRECTION> <CODE\_DOWN/> <CODE\_DOWN\_CLOSING/> <CODE\_UP/> <CODE\_UP\_CLOSING/> <CODE\_REPEAT/> <Condition Check="MOMENTARY\_SWITCH"> <True> <SWITCH\_POSITION\_TYPE\_TIMER>O</SWITCH\_POSITION\_TYPE\_TIMER> <SWITCH\_POSITION\_VAR\_TIMER>XMLVAR\_SwitchStateTimer</SWITCH\_POSITION\_VAR\_TIMER> <SWITCH\_POSITION\_TYPE\_ISDOWN>O</SWITCH\_POSITION\_TYPE\_ISDOWN> <SWITCH\_POSITION\_VAR\_ISDOWN>XMLVAR\_MomentarySwitch\_IsHeld</SWITCH\_POSITION\_VAR\_ISDOWN> <STATE\_MAX\_TIMER>2</STATE\_MAX\_TIMER> <STATE0\_TIMER>2</STATE0\_TIMER> </True> <False> <STATE0\_TIMER>0</STATE0\_TIMER> </False> </Condition> </DefaultTemplateParameters> <Condition> <Test> <Greater> <Number>\#STATE0\_TIMER\#</Number> <Number>0</Number> </Greater> </Test> <True> <UseTemplate Name="ASOBO\_GT\_Update"> <UPDATE\_ONCE>True</UPDATE\_ONCE> <UPDATE\_CODE>(\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) 0 == if{ 1 (>\#SWITCH\_POSITION\_TYPE\#:\#SWITCH\_POSITION\_VAR\#) }</UPDATE\_CODE> </UseTemplate> </True> </Condition> <UseTemplate Name="ASOBO\_GT\_Interaction\_LeftSingle\_ParamSetup"/> </Template> Parameters initialization: - Default Parameters set: - NUM\_STATES - SWITCH\_POSITION\_TYPE - SWITCH\_POSITION\_VAR - SWITCH\_DIRECTION - CODE\_DOWN - CODE\_DOWN\_CLOSING - CODE\_UP - CODE\_UP\_CLOSING - CODE\_REPEAT Condition: Check(MOMENTARY\_SWITCH) - Case: True Parameters set: - SWITCH\_POSITION\_TYPE\_TIMER - SWITCH\_POSITION\_VAR\_TIMER - SWITCH\_POSITION\_TYPE\_ISDOWN - SWITCH\_POSITION\_VAR\_ISDOWN - STATE\_MAX\_TIMER - STATE0\_TIMER - Case: False Parameters set: - STATE0\_TIMER   Templates used: - [ASOBO\_GT\_Interaction\_LeftSingle\_ParamSetup](subtemplates/interactions-subtemplates/#ASOBO_GT_Interaction_LeftSingle_ParamSetup) Condition: Test - Case: True   Templates used: - [ASOBO\_GT\_Update](updates/#ASOBO_GT_Update) Parameters set: - UPDATE\_ONCE - UPDATE\_CODE (using SWITCH\_POSITION\_TYPE, SWITCH\_POSITION\_VAR) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_WheelAndContinuousLeft Definition from XML <Template Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft"> <DefaultTemplateParameters> <SWITCH\_DIRECTION>Horizontal</SWITCH\_DIRECTION> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_\#SWITCH\_DIRECTION\#"/> </Template> Parameters initialization: - Default Parameters set: - SWITCH\_DIRECTION - ALWAYS\_USE\_ANIM\_LAG Parameters read: - SWITCH\_DIRECTION   Templates used: - ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_\#SWITCH\_DIRECTION\# - May resolve to the following template(s): - [ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_Horizontal](subtemplates/interactions-subtemplates/#ASOBO_GT_Interaction_WheelAndContinuousLeft_Horizontal) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingle Definition from XML <Template Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingle"> <Parameters Type="Default"> <CURSOR\_LEFT>TurnLeft</CURSOR\_LEFT> <CURSOR\_RIGHT>TurnRight</CURSOR\_RIGHT> <CENTER\_RADIUS>0.004</CENTER\_RADIUS> <DOWN\_TIME\_BEFORE\_REPEAT>0.5</DOWN\_TIME\_BEFORE\_REPEAT> <HELPID/> <TOOLTIPID/> <CENTER\_CURSOR>Hand</CENTER\_CURSOR> <THRESHOLD\_X\_INPUT>0.2</THRESHOLD\_X\_INPUT> <THRESHOLD\_X\_MOUSE>0.01</THRESHOLD\_X\_MOUSE> <THRESHOLD\_Y\_INPUT>0.05</THRESHOLD\_Y\_INPUT> <THRESHOLD\_Y\_MOUSE>0.025</THRESHOLD\_Y\_MOUSE> <LEFT\_LEAVE\_CODE/> <Condition Check="LEFT\_LEAVE\_CODE"> <True> <LEFT\_LEAVE\_CODE\_OUTER/> <LEFT\_LEAVE\_CODE\_INNER>\#LEFT\_LEAVE\_CODE\#</LEFT\_LEAVE\_CODE\_INNER> </True> <False> <LEFT\_LEAVE\_CODE\_OUTER/> <LEFT\_LEAVE\_CODE\_INNER/> </False> </Condition> <Condition Check="LEFT\_SINGLE\_CODE"> <True> <LEFT\_SINGLE\_CODE\_OUTER/> <LEFT\_SINGLE\_CODE\_INNER>\#LEFT\_SINGLE\_CODE\#</LEFT\_SINGLE\_CODE\_INNER> </True> <False> <LEFT\_SINGLE\_CODE\_OUTER/> <LEFT\_SINGLE\_CODE\_INNER/> </False> </Condition> <UPDATE\_FREQUENCY>10</UPDATE\_FREQUENCY> <UPARROW\_DRAG\_IM/> <DOWNARROW\_DRAG\_IM/> <LEFTARROW\_DRAG\_IM/> <RIGHTARROW\_DRAG\_IM/> <CURSOR\_CENTER\_DRAG\_IM/> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <Condition NotEmpty="CLOCKWISE\_CODE"> <True> <CLOCKWISE\_CODE\_DEFAULT\_IM>\#CLOCKWISE\_CODE\#</CLOCKWISE\_CODE\_DEFAULT\_IM> <CLOCKWISE\_CODE\_DRAG\_IM>\#CLOCKWISE\_CODE\#</CLOCKWISE\_CODE\_DRAG\_IM> </True> <False> <CLOCKWISE\_CODE\_DEFAULT\_IM/> <CLOCKWISE\_CODE\_DRAG\_IM/> </False> </Condition> <Condition NotEmpty="ANTICLOCKWISE\_CODE"> <True> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM>\#ANTICLOCKWISE\_CODE\#</ANTICLOCKWISE\_CODE\_DEFAULT\_IM> <ANTICLOCKWISE\_CODE\_DRAG\_IM>\#ANTICLOCKWISE\_CODE\#</ANTICLOCKWISE\_CODE\_DRAG\_IM> </True> <False> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM/> <ANTICLOCKWISE\_CODE\_DRAG\_IM/> </False> </Condition> <Condition Valid="NO\_PUSH\_PULL\_LOCK"> <True> <RESET\_LOCK/> <UPDATE\_LAST\_PUSH\_TIME/> <UPDATE\_LAST\_PULL\_TIME/> <CAN\_BE\_PUSHED>1</CAN\_BE\_PUSHED> <CAN\_BE\_PULLED>1</CAN\_BE\_PULLED> <LOCK\_PUSH/> <LOCK\_PULL/> <RESET\_PUSH/> <RESET\_PULL/> </True> <False> <PUSH\_RESET\_DELAY>0.15</PUSH\_RESET\_DELAY> <PULL\_RESET\_DELAY>0.15</PULL\_RESET\_DELAY> <RESET\_LOCK> (O:\_PushLocked) if{ 0 (>O:\_PushLocked) } (O:\_PullLocked) if{ 0 (>O:\_PullLocked) } </RESET\_LOCK> <UPDATE\_LAST\_PUSH\_TIME> (M:InputType) 1 == if{ (E:SIMULATION TIME, second) (>O:\_LastPushTime) } </UPDATE\_LAST\_PUSH\_TIME> <UPDATE\_LAST\_PULL\_TIME> (M:InputType) 1 == if{ (E:SIMULATION TIME, second) (>O:\_LastPullTime) } </UPDATE\_LAST\_PULL\_TIME> <CAN\_BE\_PUSHED>(O:\_PushLocked) ! @IsUsingRelativePos and</CAN\_BE\_PUSHED> <CAN\_BE\_PULLED>(O:\_PullLocked) ! @IsUsingRelativePos and</CAN\_BE\_PULLED> <LOCK\_PUSH>1 (>O:\_PushLocked)</LOCK\_PUSH> <LOCK\_PULL>1 (>O:\_PullLocked)</LOCK\_PULL> <RESET\_PUSH>(O:\_PushLocked) if{ 0 (>O:\_PushLocked) }</RESET\_PUSH> <RESET\_PULL>(O:\_PullLocked) if{ 0 (>O:\_PullLocked) }</RESET\_PULL> </False> </Condition> <ON\_DOWN\_EVENT/> <ON\_UP\_EVENT/> <SET\_IS\_INTERACTING>(>O:\_Is\_Interacting)</SET\_IS\_INTERACTING> <ADDITIONAL\_EVENT\_HANDLING/> <ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST/> <ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST/> <PRE\_DRAG\_UPDATE/> <POST\_DRAG\_UPDATE/> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> <LOCKABLE\_HANDLE\_CODE\_UP/> <NO\_LOCK\_HANDLE\_CODE\_UP/> <LOCKABLE\_HANDLE\_CODE\_DN/> <NO\_LOCK\_HANDLE\_CODE\_DN/> </Parameters> <Parameters Type="Override"> <THRESHOLD\_X>\#THRESHOLD\_X\_INPUT\# \#THRESHOLD\_X\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD\_X> <THRESHOLD\_Y>\#THRESHOLD\_Y\_INPUT\# \#THRESHOLD\_Y\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD\_Y> <Condition Valid="INVERT\_AXIS\_CODE"> <True> <Condition NotEmpty="CODE\_UP"> <False> <CODE\_UP>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_UP> </False> </Condition> <Condition NotEmpty="CODE\_DN"> <False> <CODE\_DN>\#CLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_DN> </False> </Condition> <Condition NotEmpty="CODE\_LEFT"> <False> <CODE\_LEFT>\#LEFT\_SINGLE\_CODE\#</CODE\_LEFT> </False> </Condition> <Condition NotEmpty="CODE\_RIGHT"> <False> <CODE\_RIGHT>\#LEFT\_LEAVE\_CODE\#</CODE\_RIGHT> </False> </Condition> </True> <False> <Condition NotEmpty="CODE\_UP"> <False> <CODE\_UP>\#LEFT\_SINGLE\_CODE\#</CODE\_UP> </False> </Condition> <Condition NotEmpty="CODE\_DN"> <False> <CODE\_DN>\#LEFT\_LEAVE\_CODE\#</CODE\_DN> </False> </Condition> <Condition NotEmpty="CODE\_LEFT"> <False> <CODE\_LEFT>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_LEFT> </False> </Condition> <Condition NotEmpty="CODE\_RIGHT"> <False> <CODE\_RIGHT>\#CLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_RIGHT> </False> </Condition> </False> </Condition> <Condition NotEmpty="UPDATE\_DEFAULT\_IM"> <False> <UPDATE\_DEFAULT\_IM> (O:\_MouseDownRelativePosX) 0 > if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (O:\_MouseDownRelativePosX) 0 < if{ \#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\# } } </UPDATE\_DEFAULT\_IM> </False> </Condition> </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> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="CODE\_UP"> <LOCKABLE\_HANDLE\_CODE\_UP>(M:Event) '\#LOCKABLE\_EVENT\_PRIMARY\#' scmi 0 == if{ \#CODE\_UP\# quit }</LOCKABLE\_HANDLE\_CODE\_UP> <NO\_LOCK\_HANDLE\_CODE\_UP>(M:Event) '\#NO\_LOCK\_EVENT\_PRIMARY\#' scmi 0 == if{ \#CODE\_UP\# quit }</NO\_LOCK\_HANDLE\_CODE\_UP> </Condition> <Condition NotEmpty="CODE\_DN"> <LOCKABLE\_HANDLE\_CODE\_DN>(M:Event) '\#LOCKABLE\_EVENT\_SECONDARY\#' scmi 0 == if{ \#CODE\_DN\# quit }</LOCKABLE\_HANDLE\_CODE\_DN> <NO\_LOCK\_HANDLE\_CODE\_DN>(M:Event) '\#NO\_LOCK\_EVENT\_SECONDARY\#' scmi 0 == if{ \#CODE\_DN\# quit }</NO\_LOCK\_HANDLE\_CODE\_DN> </Condition> </Parameters> <Parameters Type="Default"> <LOCKABLE\_INPUTS\_HANDLING> \#LOCKABLE\_HANDLE\_CODE\_UP\# \#LOCKABLE\_HANDLE\_CODE\_DN\# </LOCKABLE\_INPUTS\_HANDLING> <NO\_LOCK\_INPUTS\_HANDLING> \#NO\_LOCK\_HANDLE\_CODE\_UP\# \#NO\_LOCK\_HANDLE\_CODE\_DN\# </NO\_LOCK\_INPUTS\_HANDLING> </Parameters> <Parameters Type="Default"> <IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING> (M:InputType) 1 == if{ \#LOCKABLE\_INPUTS\_HANDLING\# } els{ \#NO\_LOCK\_INPUTS\_HANDLING\# } </IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle+LeftRelease+WheelUp+WheelDown+Lock+Unlock</MOUSEFLAGS\_DEFAULT\_IM> <MOUSEFLAGS\_DRAG\_IM>MiddleSingle+RightSingle+LeftAll+Wheel+Lock+Unlock</MOUSEFLAGS\_DRAG\_IM> </Parameters> <Update Frequency="\#UPDATE\_FREQUENCY\#" InteractionModel="Default"> (O:XMLVAR\_Interacting\_RepeatTime) (E:SIMULATION TIME, seconds) < if{ \#UPDATE\_DEFAULT\_IM\# } </Update> <Condition Valid="NO\_PUSH\_PULL\_LOCK"> <False> <Update Frequency="\#UPDATE\_FREQUENCY\#" InteractionModel="Drag"> (O:\_PushLocked) (O:\_LastPushTime) 0 > and if{ (E:SIMULATION TIME, second) (O:\_LastPushTime) - \#PUSH\_RESET\_DELAY\# > if{ 0 (>O:\_PushLocked) 0 (>O:\_LastPushTime) } } (O:\_PullLocked) (O:\_LastPullTime) 0 > and if{ (E:SIMULATION TIME, second) (O:\_LastPullTime) - \#PULL\_RESET\_DELAY\# > if{ 0 (>O:\_PullLocked) 0 (>O:\_LastPullTime) } } </Update> </False> </Condition> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <LEFTARROW>\#CURSOR\_LEFT\#</LEFTARROW> <RIGHTARROW>\#CURSOR\_RIGHT\#</RIGHTARROW> <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:RelativeX) abs \#CENTER\_RADIUS\# > if{ 0 (>O:\_ButtonPressed) (M:RelativeX) (>O:\_MouseDownRelativePosX) (E:SIMULATION TIME, seconds) \#DOWN\_TIME\_BEFORE\_REPEAT\# + (>O:XMLVAR\_Interacting\_RepeatTime) \#UPDATE\_DEFAULT\_IM\# \#LEFT\_SINGLE\_CODE\_OUTER\# } els{ 0 (>O:\_MouseDownRelativePosX) 1 (>O:\_ButtonPressed) \#LEFT\_SINGLE\_CODE\_INNER\# } } els{ (M:Event) 'LeftRelease' scmi 0 == if{ (O:\_MouseDownRelativePosX) 0 != if{ \#LEFT\_LEAVE\_CODE\_OUTER\# } (O:\_ButtonPressed) if{ \#LEFT\_LEAVE\_CODE\_INNER\# } 0 (>O:\_MouseDownRelativePosX) 0 (>O:\_ButtonPressed) } } } } </CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM> \#ADDITIONAL\_EVENT\_HANDLING\# \#IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING\# (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:RelativeX) (>O:\_LastX) (M:RelativeY) (>O:\_LastY) \#ON\_DOWN\_EVENT\# 1 \#SET\_IS\_INTERACTING\# } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_LastX) 0 (>O:\_LastY) \#RESET\_LOCK\# \#ON\_UP\_EVENT\# 0 \#SET\_IS\_INTERACTING\# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ \#PRE\_DRAG\_UPDATE\# (M:RelativeX) (O:\_LastX) - sp0 \#THRESHOLD\_X\# (>O:\_InputThresholdX) \#ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST\# l0 abs (O:\_InputThresholdX) > if{ l0 (O:\_InputThresholdX) / abs flr sp1 l0 (O:\_InputThresholdX) % abs sp2 :1 (\* for loop \*) l1 0 <= if{ g2 } l1 -- sp1 l0 0 > if{ \#CODE\_RIGHT\# } els{ \#CODE\_LEFT\# } g1 :2 l0 0 > if{ (M:RelativeX) l2 - (>O:\_LastX) } els{ (M:RelativeX) l2 + (>O:\_LastX) } } (M:RelativeY) (O:\_LastY) - sp0 \#THRESHOLD\_Y\# (>O:\_InputThresholdY) \#ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST\# l0 abs (O:\_InputThresholdY) > if{ l0 (O:\_InputThresholdY) / abs flr sp1 l0 (O:\_InputThresholdY) % abs sp2 :3 (\* for loop \*) l1 0 <= if{ g4 } l1 -- sp1 l0 0 > if{ \#UPDATE\_LAST\_PUSH\_TIME\# \#CAN\_BE\_PUSHED\# if{ \#LOCK\_PUSH\# \#CODE\_UP\# } \#RESET\_PULL\# } els{ \#UPDATE\_LAST\_PULL\_TIME\# \#CAN\_BE\_PULLED\# if{ \#LOCK\_PULL\# \#CODE\_DN\# } \#RESET\_PUSH\# } g3 :4 l0 0 > if{ (M:RelativeY) l2 - (>O:\_LastY) } els{ (M:RelativeY) l2 + (>O:\_LastY) } } \#POST\_DRAG\_UPDATE\# } } } } } quit </CALLBACKCODE\_DRAG\_IM> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - CURSOR\_LEFT - CURSOR\_RIGHT - CENTER\_RADIUS - DOWN\_TIME\_BEFORE\_REPEAT - HELPID - TOOLTIPID - CENTER\_CURSOR - THRESHOLD\_X\_INPUT - THRESHOLD\_X\_MOUSE - THRESHOLD\_Y\_INPUT - THRESHOLD\_Y\_MOUSE - LEFT\_LEAVE\_CODE - UPDATE\_FREQUENCY - UPARROW\_DRAG\_IM - DOWNARROW\_DRAG\_IM - LEFTARROW\_DRAG\_IM - RIGHTARROW\_DRAG\_IM - CURSOR\_CENTER\_DRAG\_IM - CURSOR\_DRAG\_IM - ON\_DOWN\_EVENT - ON\_UP\_EVENT - SET\_IS\_INTERACTING - ADDITIONAL\_EVENT\_HANDLING - ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST - ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST - PRE\_DRAG\_UPDATE - POST\_DRAG\_UPDATE - ALWAYS\_USE\_ANIM\_LAG - LOCKABLE\_HANDLE\_CODE\_UP - NO\_LOCK\_HANDLE\_CODE\_UP - LOCKABLE\_HANDLE\_CODE\_DN - NO\_LOCK\_HANDLE\_CODE\_DN Condition: Check(LEFT\_LEAVE\_CODE) - Case: True Parameters set: - LEFT\_LEAVE\_CODE\_OUTER - LEFT\_LEAVE\_CODE\_INNER (using LEFT\_LEAVE\_CODE) - Case: False Parameters set: - LEFT\_LEAVE\_CODE\_OUTER - LEFT\_LEAVE\_CODE\_INNER Condition: Check(LEFT\_SINGLE\_CODE) - Case: True Parameters set: - LEFT\_SINGLE\_CODE\_OUTER - LEFT\_SINGLE\_CODE\_INNER (using LEFT\_SINGLE\_CODE) - Case: False Parameters set: - LEFT\_SINGLE\_CODE\_OUTER - LEFT\_SINGLE\_CODE\_INNER 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: 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 Condition: Valid(NO\_PUSH\_PULL\_LOCK) - Case: True Parameters set: - RESET\_LOCK - UPDATE\_LAST\_PUSH\_TIME - UPDATE\_LAST\_PULL\_TIME - CAN\_BE\_PUSHED - CAN\_BE\_PULLED - LOCK\_PUSH - LOCK\_PULL - RESET\_PUSH - RESET\_PULL - Case: False Parameters set: - PUSH\_RESET\_DELAY - PULL\_RESET\_DELAY - RESET\_LOCK - UPDATE\_LAST\_PUSH\_TIME - UPDATE\_LAST\_PULL\_TIME - CAN\_BE\_PUSHED - CAN\_BE\_PULLED - LOCK\_PUSH - LOCK\_PULL - RESET\_PUSH - RESET\_PULL - Override Parameters set: - THRESHOLD\_X (using THRESHOLD\_X\_INPUT, THRESHOLD\_X\_MOUSE) - THRESHOLD\_Y (using THRESHOLD\_Y\_INPUT, THRESHOLD\_Y\_MOUSE) Condition: Valid(INVERT\_AXIS\_CODE) - Case: True Condition: NotEmpty(CODE\_UP) - Case: False Parameters set: - CODE\_UP (using ANTICLOCKWISE\_CODE\_DRAG\_IM) Condition: NotEmpty(CODE\_DN) - Case: False Parameters set: - CODE\_DN (using CLOCKWISE\_CODE\_DRAG\_IM) Condition: NotEmpty(CODE\_LEFT) - Case: False Parameters set: - CODE\_LEFT (using LEFT\_SINGLE\_CODE) Condition: NotEmpty(CODE\_RIGHT) - Case: False Parameters set: - CODE\_RIGHT (using LEFT\_LEAVE\_CODE) - Case: False Condition: NotEmpty(CODE\_UP) - Case: False Parameters set: - CODE\_UP (using LEFT\_SINGLE\_CODE) Condition: NotEmpty(CODE\_DN) - Case: False Parameters set: - CODE\_DN (using LEFT\_LEAVE\_CODE) Condition: NotEmpty(CODE\_LEFT) - Case: False Parameters set: - CODE\_LEFT (using ANTICLOCKWISE\_CODE\_DRAG\_IM) Condition: NotEmpty(CODE\_RIGHT) - Case: False Parameters set: - CODE\_RIGHT (using CLOCKWISE\_CODE\_DRAG\_IM) Condition: NotEmpty(UPDATE\_DEFAULT\_IM) - Case: False Parameters set: - UPDATE\_DEFAULT\_IM (using CLOCKWISE\_CODE\_DEFAULT\_IM, ANTICLOCKWISE\_CODE\_DEFAULT\_IM) - Default Parameters set: - LOCKABLE\_EVENT\_PRIMARY - LOCKABLE\_EVENT\_SECONDARY - NO\_LOCK\_EVENT\_PRIMARY - NO\_LOCK\_EVENT\_SECONDARY - Override Condition: NotEmpty(CODE\_UP) - Case: True Parameters set: - LOCKABLE\_HANDLE\_CODE\_UP (using LOCKABLE\_EVENT\_PRIMARY, CODE\_UP) - NO\_LOCK\_HANDLE\_CODE\_UP (using NO\_LOCK\_EVENT\_PRIMARY, CODE\_UP) Condition: NotEmpty(CODE\_DN) - Case: True Parameters set: - LOCKABLE\_HANDLE\_CODE\_DN (using LOCKABLE\_EVENT\_SECONDARY, CODE\_DN) - NO\_LOCK\_HANDLE\_CODE\_DN (using NO\_LOCK\_EVENT\_SECONDARY, CODE\_DN) - 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) - MOUSEFLAGS\_DEFAULT\_IM - MOUSEFLAGS\_DRAG\_IM Parameters read: - UPDATE\_FREQUENCY - UPDATE\_DEFAULT\_IM   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - LEFTARROW (using CURSOR\_LEFT) - RIGHTARROW (using CURSOR\_RIGHT) - CALLBACKCODE\_DEFAULT\_IM (using CLOCKWISE\_CODE\_DEFAULT\_IM, ANTICLOCKWISE\_CODE\_DEFAULT\_IM, CENTER\_RADIUS, DOWN\_TIME\_BEFORE\_REPEAT, UPDATE\_DEFAULT\_IM, LEFT\_SINGLE\_CODE\_OUTER, LEFT\_SINGLE\_CODE\_INNER, LEFT\_LEAVE\_CODE\_OUTER, LEFT\_LEAVE\_CODE\_INNER) - CALLBACKCODE\_DRAG\_IM (using ADDITIONAL\_EVENT\_HANDLING, IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING, CLOCKWISE\_CODE\_DRAG\_IM, ANTICLOCKWISE\_CODE\_DRAG\_IM, ON\_DOWN\_EVENT, SET\_IS\_INTERACTING, RESET\_LOCK, ON\_UP\_EVENT, PRE\_DRAG\_UPDATE, THRESHOLD\_X, ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST, CODE\_RIGHT, CODE\_LEFT, THRESHOLD\_Y, ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST, UPDATE\_LAST\_PUSH\_TIME, CAN\_BE\_PUSHED, LOCK\_PUSH, CODE\_UP, RESET\_PULL, UPDATE\_LAST\_PULL\_TIME, CAN\_BE\_PULLED, LOCK\_PULL, CODE\_DN, RESET\_PUSH, POST\_DRAG\_UPDATE) Condition: Valid(NO\_PUSH\_PULL\_LOCK) - Case: False Parameters read: - UPDATE\_FREQUENCY - PUSH\_RESET\_DELAY - PULL\_RESET\_DELAY [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_PushPull Definition from XML <Template Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_PushPull"> <Parameters Type="Default"> <CURSOR\_LEFT>TurnLeft</CURSOR\_LEFT> <CURSOR\_RIGHT>TurnRight</CURSOR\_RIGHT> <CENTER\_RADIUS>0.004</CENTER\_RADIUS> <HELPID/> <TOOLTIPID/> <LEFT\_LEAVE\_CODE/> <THRESHOLD\_X\_INPUT>0.2</THRESHOLD\_X\_INPUT> <THRESHOLD\_X\_MOUSE>0.01</THRESHOLD\_X\_MOUSE> <THRESHOLD\_Y\_INPUT>0.05</THRESHOLD\_Y\_INPUT> <THRESHOLD\_Y\_MOUSE>0.025</THRESHOLD\_Y\_MOUSE> <CURSOR\_UP>UpArrow</CURSOR\_UP> <CURSOR\_DOWN>DownArrow</CURSOR\_DOWN> <UPDATE\_FREQUENCY>10</UPDATE\_FREQUENCY> <Condition NotEmpty="CLOCKWISE\_CODE"> <True> <CLOCKWISE\_CODE\_DEFAULT\_IM>\#CLOCKWISE\_CODE\#</CLOCKWISE\_CODE\_DEFAULT\_IM> <CLOCKWISE\_CODE\_DRAG\_IM>\#CLOCKWISE\_CODE\#</CLOCKWISE\_CODE\_DRAG\_IM> </True> <False> <CLOCKWISE\_CODE\_DEFAULT\_IM/> <CLOCKWISE\_CODE\_DRAG\_IM/> </False> </Condition> <Condition NotEmpty="ANTICLOCKWISE\_CODE"> <True> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM>\#ANTICLOCKWISE\_CODE\#</ANTICLOCKWISE\_CODE\_DEFAULT\_IM> <ANTICLOCKWISE\_CODE\_DRAG\_IM>\#ANTICLOCKWISE\_CODE\#</ANTICLOCKWISE\_CODE\_DRAG\_IM> </True> <False> <ANTICLOCKWISE\_CODE\_DEFAULT\_IM/> <ANTICLOCKWISE\_CODE\_DRAG\_IM/> </False> </Condition> <Condition Valid="NO\_PUSH\_PULL\_LOCK"> <True> <RESET\_LOCK/> <UPDATE\_LAST\_PUSH\_TIME/> <UPDATE\_LAST\_PULL\_TIME/> <CAN\_BE\_PUSHED>1</CAN\_BE\_PUSHED> <CAN\_BE\_PULLED>1</CAN\_BE\_PULLED> <LOCK\_PUSH/> <LOCK\_PULL/> <RESET\_PUSH/> <RESET\_PULL/> </True> <False> <PUSH\_RESET\_DELAY>0.15</PUSH\_RESET\_DELAY> <PULL\_RESET\_DELAY>0.15</PULL\_RESET\_DELAY> <RESET\_LOCK> (O:IsPushed) if{ 0 (>O:IsPushed) } (O:IsPulled) if{ 0 (>O:IsPulled) } </RESET\_LOCK> <UPDATE\_LAST\_PUSH\_TIME> (M:InputType) 1 == if{ (E:SIMULATION TIME, second) (>O:\_LastPushTime) } </UPDATE\_LAST\_PUSH\_TIME> <UPDATE\_LAST\_PULL\_TIME> (M:InputType) 1 == if{ (E:SIMULATION TIME, second) (>O:\_LastPullTime) } </UPDATE\_LAST\_PULL\_TIME> <CAN\_BE\_PUSHED>(O:IsPushed) ! @IsUsingRelativePos and</CAN\_BE\_PUSHED> <CAN\_BE\_PULLED>(O:IsPulled) ! @IsUsingRelativePos and</CAN\_BE\_PULLED> <LOCK\_PUSH>1 (>O:IsPushed)</LOCK\_PUSH> <LOCK\_PULL>1 (>O:IsPulled)</LOCK\_PULL> <RESET\_PUSH>(O:IsPushed) if{ 0 (>O:IsPushed) }</RESET\_PUSH> <RESET\_PULL>(O:IsPulled) if{ 0 (>O:IsPulled) }</RESET\_PULL> </False> </Condition> <ON\_DOWN\_EVENT/> <ADDITIONAL\_EVENT\_HANDLING/> <ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST/> <ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST/> <UPARROW\_DRAG\_IM/> <DOWNARROW\_DRAG\_IM/> <LEFTARROW\_DRAG\_IM/> <RIGHTARROW\_DRAG\_IM/> <CURSOR\_CENTER\_DRAG\_IM/> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> <LOCKABLE\_HANDLE\_CODE\_UP/> <NO\_LOCK\_HANDLE\_CODE\_UP/> <LOCKABLE\_HANDLE\_CODE\_DN/> <NO\_LOCK\_HANDLE\_CODE\_DN/> </Parameters> <Parameters Type="Override"> <THRESHOLD\_X>\#THRESHOLD\_X\_INPUT\# \#THRESHOLD\_X\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD\_X> <THRESHOLD\_Y>\#THRESHOLD\_Y\_INPUT\# \#THRESHOLD\_Y\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD\_Y> <Condition Valid="INVERT\_AXIS\_CODE"> <True> <Condition NotEmpty="CODE\_UP"> <False> <CODE\_UP>\#PULL\_CODE\#</CODE\_UP> </False> </Condition> <Condition NotEmpty="CODE\_DN"> <False> <CODE\_DN>\#PUSH\_CODE\#</CODE\_DN> </False> </Condition> <Condition NotEmpty="CODE\_LEFT"> <False> <CODE\_LEFT>\#CLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_LEFT> </False> </Condition> <Condition NotEmpty="CODE\_RIGHT"> <False> <CODE\_RIGHT>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_RIGHT> </False> </Condition> </True> <False> <Condition NotEmpty="CODE\_UP"> <False> <CODE\_UP>\#PUSH\_CODE\#</CODE\_UP> </False> </Condition> <Condition NotEmpty="CODE\_DN"> <False> <CODE\_DN>\#PULL\_CODE\#</CODE\_DN> </False> </Condition> <Condition NotEmpty="CODE\_LEFT"> <False> <CODE\_LEFT>\#ANTICLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_LEFT> </False> </Condition> <Condition NotEmpty="CODE\_RIGHT"> <False> <CODE\_RIGHT>\#CLOCKWISE\_CODE\_DRAG\_IM\#</CODE\_RIGHT> </False> </Condition> </False> </Condition> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="CODE\_UP"> <LOCKABLE\_HANDLE\_CODE\_UP>(M:Event) 'LeftSingle' scmi 0 == if{ \#CODE\_UP\# quit }</LOCKABLE\_HANDLE\_CODE\_UP> <NO\_LOCK\_HANDLE\_CODE\_UP>(M:Event) 'RightSingle' scmi 0 == if{ \#CODE\_UP\# quit }</NO\_LOCK\_HANDLE\_CODE\_UP> </Condition> <Condition NotEmpty="CODE\_DN"> <LOCKABLE\_HANDLE\_CODE\_DN>(M:Event) 'RightSingle' scmi 0 == if{ \#CODE\_DN\# quit }</LOCKABLE\_HANDLE\_CODE\_DN> <NO\_LOCK\_HANDLE\_CODE\_DN>(M:Event) 'MiddleSingle' scmi 0 == if{ \#CODE\_DN\# quit }</NO\_LOCK\_HANDLE\_CODE\_DN> </Condition> </Parameters> <Parameters Type="Default"> <LOCKABLE\_INPUTS\_HANDLING> \#LOCKABLE\_HANDLE\_CODE\_UP\# \#LOCKABLE\_HANDLE\_CODE\_DN\# </LOCKABLE\_INPUTS\_HANDLING> <NO\_LOCK\_INPUTS\_HANDLING> \#NO\_LOCK\_HANDLE\_CODE\_UP\# \#NO\_LOCK\_HANDLE\_CODE\_DN\# </NO\_LOCK\_INPUTS\_HANDLING> </Parameters> <Parameters Type="Default"> <IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING> (M:InputType) 1 == if{ \#LOCKABLE\_INPUTS\_HANDLING\# } els{ \#NO\_LOCK\_INPUTS\_HANDLING\# } </IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle+LeftRelease+WheelUp+WheelDown</MOUSEFLAGS\_DEFAULT\_IM> <MOUSEFLAGS\_DRAG\_IM>MiddleSingle+RightSingle+LeftAll+Wheel+Lock+Unlock</MOUSEFLAGS\_DRAG\_IM> </Parameters> <Update Frequency="\#UPDATE\_FREQUENCY\#" InteractionModel="Default"> (O:\_MouseDownRelativePosX) 0 > if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (O:\_MouseDownRelativePosX) 0 < if{ \#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\# } } </Update> <Condition Valid="NO\_PUSH\_PULL\_LOCK"> <False> <Update Frequency="\#UPDATE\_FREQUENCY\#" InteractionModel="Drag"> (O:IsPushed) (O:\_LastPushTime) 0 > and if{ (E:SIMULATION TIME, second) (O:\_LastPushTime) - \#PUSH\_RESET\_DELAY\# > if{ 0 (>O:IsPushed) 0 (>O:\_LastPushTime) } } (O:IsPulled) (O:\_LastPullTime) 0 > and if{ (E:SIMULATION TIME, second) (O:\_LastPullTime) - \#PULL\_RESET\_DELAY\# > if{ 0 (>O:IsPulled) 0 (>O:\_LastPullTime) } } </Update> </False> </Condition> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <LEFTARROW>\#CURSOR\_LEFT\#</LEFTARROW> <RIGHTARROW>\#CURSOR\_RIGHT\#</RIGHTARROW> <UPARROW>\#CURSOR\_UP\#</UPARROW> <DOWNARROW>\#CURSOR\_DOWN\#</DOWNARROW> <CALLBACKCODE\_DEFAULT\_IM> (M:Event) 'WheelUp' scmi 0 == if{ \#CLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (M:Event) 'WheelDown' scmi 0 == if{ \#ANTICLOCKWISE\_CODE\_DEFAULT\_IM\# } els{ (M:Event) 'LeftRelease' scmi 0 == if{ 0 (>O:\_MouseDownRelativePosX) } (M:RelativeX) abs \#CENTER\_RADIUS\# > (M:RelativeY) abs \#CENTER\_RADIUS\# > or if{ (M:RelativeX) abs (M:RelativeY) abs > if{ (M:Event) 'LeftSingle' scmi 0 == if{ (M:RelativeX) (>O:\_MouseDownRelativePosX) } } els{ 0 (>O:\_MouseDownRelativePosX) (M:Event) 'LeftSingle' scmi 0 == if{ (M:RelativeY) 0 > if{ \#PUSH\_CODE\# 1 (>O:IsPushed) } els{ \#PULL\_CODE\# 1 (>O:IsPulled) } } els{ (M:Event) 'LeftRelease' scmi 0 == if{ \#LEFT\_LEAVE\_CODE\# 0 (>O:IsPulled) 0 (>O:IsPushed) } } } } } } </CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM> \#ADDITIONAL\_EVENT\_HANDLING\# \#IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING\# (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:RelativeX) (>O:\_LastX) (M:RelativeY) (>O:\_LastY) \#ON\_DOWN\_EVENT\# } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_LastX) 0 (>O:\_LastY) \#RESET\_LOCK\# \#LEFT\_LEAVE\_CODE\# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ (M:RelativeX) (O:\_LastX) - sp0 \#THRESHOLD\_X\# (>O:\_InputThresholdX) \#ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST\# l0 abs (O:\_InputThresholdX) > if{ l0 (O:\_InputThresholdX) / abs flr sp1 l0 (O:\_InputThresholdX) % abs sp2 :1 (\* for loop \*) l1 0 <= if{ g2 } l1 -- sp1 l0 0 > if{ \#CODE\_RIGHT\# } els{ \#CODE\_LEFT\# } g1 :2 l0 0 > if{ (M:RelativeX) l2 - (>O:\_LastX) } els{ (M:RelativeX) l2 + (>O:\_LastX) } } (M:RelativeY) (O:\_LastY) - sp0 \#THRESHOLD\_Y\# (>O:\_InputThresholdY) \#ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST\# l0 abs (O:\_InputThresholdY) > if{ l0 (O:\_InputThresholdY) / abs flr sp1 l0 (O:\_InputThresholdY) % abs sp2 :3 (\* for loop \*) l1 0 <= if{ g4 } l1 -- sp1 l0 0 > if{ \#UPDATE\_LAST\_PUSH\_TIME\# \#CAN\_BE\_PUSHED\# if{ \#LOCK\_PUSH\# \#CODE\_UP\# } \#RESET\_PULL\# } els{ \#UPDATE\_LAST\_PULL\_TIME\# \#CAN\_BE\_PULLED\# if{ \#LOCK\_PULL\# \#CODE\_DN\# } \#RESET\_PUSH\# } g3 :4 l0 0 > if{ (M:RelativeY) l2 - (>O:\_LastY) } els{ (M:RelativeY) l2 + (>O:\_LastY) } } } } } } } quit </CALLBACKCODE\_DRAG\_IM> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - CURSOR\_LEFT - CURSOR\_RIGHT - CENTER\_RADIUS - HELPID - TOOLTIPID - LEFT\_LEAVE\_CODE - THRESHOLD\_X\_INPUT - THRESHOLD\_X\_MOUSE - THRESHOLD\_Y\_INPUT - THRESHOLD\_Y\_MOUSE - CURSOR\_UP - CURSOR\_DOWN - UPDATE\_FREQUENCY - ON\_DOWN\_EVENT - ADDITIONAL\_EVENT\_HANDLING - ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST - ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST - UPARROW\_DRAG\_IM - DOWNARROW\_DRAG\_IM - LEFTARROW\_DRAG\_IM - RIGHTARROW\_DRAG\_IM - CURSOR\_CENTER\_DRAG\_IM - CURSOR\_DRAG\_IM - ALWAYS\_USE\_ANIM\_LAG - LOCKABLE\_HANDLE\_CODE\_UP - NO\_LOCK\_HANDLE\_CODE\_UP - LOCKABLE\_HANDLE\_CODE\_DN - NO\_LOCK\_HANDLE\_CODE\_DN 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: 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 Condition: Valid(NO\_PUSH\_PULL\_LOCK) - Case: True Parameters set: - RESET\_LOCK - UPDATE\_LAST\_PUSH\_TIME - UPDATE\_LAST\_PULL\_TIME - CAN\_BE\_PUSHED - CAN\_BE\_PULLED - LOCK\_PUSH - LOCK\_PULL - RESET\_PUSH - RESET\_PULL - Case: False Parameters set: - PUSH\_RESET\_DELAY - PULL\_RESET\_DELAY - RESET\_LOCK - UPDATE\_LAST\_PUSH\_TIME - UPDATE\_LAST\_PULL\_TIME - CAN\_BE\_PUSHED - CAN\_BE\_PULLED - LOCK\_PUSH - LOCK\_PULL - RESET\_PUSH - RESET\_PULL - Override Parameters set: - THRESHOLD\_X (using THRESHOLD\_X\_INPUT, THRESHOLD\_X\_MOUSE) - THRESHOLD\_Y (using THRESHOLD\_Y\_INPUT, THRESHOLD\_Y\_MOUSE) Condition: Valid(INVERT\_AXIS\_CODE) - Case: True Condition: NotEmpty(CODE\_UP) - Case: False Parameters set: - CODE\_UP (using PULL\_CODE) Condition: NotEmpty(CODE\_DN) - Case: False Parameters set: - CODE\_DN (using PUSH\_CODE) Condition: NotEmpty(CODE\_LEFT) - Case: False Parameters set: - CODE\_LEFT (using CLOCKWISE\_CODE\_DRAG\_IM) Condition: NotEmpty(CODE\_RIGHT) - Case: False Parameters set: - CODE\_RIGHT (using ANTICLOCKWISE\_CODE\_DRAG\_IM) - Case: False Condition: NotEmpty(CODE\_UP) - Case: False Parameters set: - CODE\_UP (using PUSH\_CODE) Condition: NotEmpty(CODE\_DN) - Case: False Parameters set: - CODE\_DN (using PULL\_CODE) Condition: NotEmpty(CODE\_LEFT) - Case: False Parameters set: - CODE\_LEFT (using ANTICLOCKWISE\_CODE\_DRAG\_IM) Condition: NotEmpty(CODE\_RIGHT) - Case: False Parameters set: - CODE\_RIGHT (using CLOCKWISE\_CODE\_DRAG\_IM) - Override Condition: NotEmpty(CODE\_UP) - Case: True Parameters set: - LOCKABLE\_HANDLE\_CODE\_UP (using CODE\_UP) - NO\_LOCK\_HANDLE\_CODE\_UP (using CODE\_UP) Condition: NotEmpty(CODE\_DN) - Case: True Parameters set: - LOCKABLE\_HANDLE\_CODE\_DN (using CODE\_DN) - NO\_LOCK\_HANDLE\_CODE\_DN (using CODE\_DN) - 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) - MOUSEFLAGS\_DEFAULT\_IM - MOUSEFLAGS\_DRAG\_IM Parameters read: - UPDATE\_FREQUENCY - CLOCKWISE\_CODE\_DEFAULT\_IM - ANTICLOCKWISE\_CODE\_DEFAULT\_IM   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - LEFTARROW (using CURSOR\_LEFT) - RIGHTARROW (using CURSOR\_RIGHT) - UPARROW (using CURSOR\_UP) - DOWNARROW (using CURSOR\_DOWN) - CALLBACKCODE\_DEFAULT\_IM (using CLOCKWISE\_CODE\_DEFAULT\_IM, ANTICLOCKWISE\_CODE\_DEFAULT\_IM, CENTER\_RADIUS, PUSH\_CODE, PULL\_CODE, LEFT\_LEAVE\_CODE) - CALLBACKCODE\_DRAG\_IM (using ADDITIONAL\_EVENT\_HANDLING, IM\_DRAG\_ADDITIONAL\_EVENT\_HANDLING, CLOCKWISE\_CODE\_DRAG\_IM, ANTICLOCKWISE\_CODE\_DRAG\_IM, ON\_DOWN\_EVENT, RESET\_LOCK, LEFT\_LEAVE\_CODE, THRESHOLD\_X, ON\_BEFORE\_DELTA\_X\_THRESHOLD\_TEST, CODE\_RIGHT, CODE\_LEFT, THRESHOLD\_Y, ON\_BEFORE\_DELTA\_Y\_THRESHOLD\_TEST, UPDATE\_LAST\_PUSH\_TIME, CAN\_BE\_PUSHED, LOCK\_PUSH, CODE\_UP, RESET\_PULL, UPDATE\_LAST\_PULL\_TIME, CAN\_BE\_PULLED, LOCK\_PULL, CODE\_DN, RESET\_PUSH) Condition: Valid(NO\_PUSH\_PULL\_LOCK) - Case: False Parameters read: - UPDATE\_FREQUENCY - PUSH\_RESET\_DELAY - PULL\_RESET\_DELAY [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingleTimed Definition from XML <Template Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingleTimed"> <Parameters Type="Default"> <LEFT\_SINGLE\_CODE/> <LEFT\_LEAVE\_CODE/> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> </Parameters> <Parameters Type="Override"> <Condition Valid="TIMER\_EVENTS\_HANDLED\_EXTERNALLY"> <True> <LONG\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</LONG\_CLICK\_CODE> <SHORT\_CLICK\_CODE>\#LEFT\_LEAVE\_CODE\#</SHORT\_CLICK\_CODE> </True> </Condition> </Parameters> <Update Frequency="10"> (O:\_PressTime) 0 > if{ (O:\_PressForDuration) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) (O:\_PressForDuration) + > if{ (O:\_PressForDuration) \#LONG\_CLICK\_TIME\# >= if{ \#LONG\_CLICK\_CODE\# } els{ \#SHORT\_CLICK\_CODE\# } } } els{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\# + > if{ \#LONG\_CLICK\_CODE\# } } } </Update> <UseTemplate Name="ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingle"> <Condition Valid="TIMER\_EVENTS\_HANDLED\_EXTERNALLY"> <False> <LEFT\_SINGLE\_CODE> (E:SIMULATION TIME, second) (>O:\_PressTime) \#LEFT\_SINGLE\_CODE\# </LEFT\_SINGLE\_CODE> <LEFT\_LEAVE\_CODE> (O:\_PressTime) 0 > if{ (E:SIMULATION TIME, second) (O:\_PressTime) \#LONG\_CLICK\_TIME\# + < if{ \#SHORT\_CLICK\_CODE\# } } 0 (>O:\_PressTime) \#LEFT\_LEAVE\_CODE\# </LEFT\_LEAVE\_CODE> </False> </Condition> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - LEFT\_SINGLE\_CODE - LEFT\_LEAVE\_CODE - ALWAYS\_USE\_ANIM\_LAG - Override Condition: Valid(TIMER\_EVENTS\_HANDLED\_EXTERNALLY) - Case: True Parameters set: - LONG\_CLICK\_CODE (using LEFT\_LEAVE\_CODE) - SHORT\_CLICK\_CODE (using LEFT\_LEAVE\_CODE) Parameters read: - LONG\_CLICK\_TIME - LONG\_CLICK\_CODE - SHORT\_CLICK\_CODE   Templates used: - [ASOBO\_GT\_Interaction\_WheelAndContinuousLeft\_LeftSingle](interactions/#ASOBO_GT_Interaction_WheelAndContinuousLeft_LeftSingle) Condition: Valid(TIMER\_EVENTS\_HANDLED\_EXTERNALLY) - Case: False Parameters set: - LEFT\_SINGLE\_CODE (using LEFT\_SINGLE\_CODE) - LEFT\_LEAVE\_CODE (using LONG\_CLICK\_TIME, SHORT\_CLICK\_CODE, LEFT\_LEAVE\_CODE) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_WheelLeftDrag\_Axis Definition from XML <Template Name="ASOBO\_GT\_Interaction\_WheelLeftDrag\_Axis"> <Parameters Type="Default"> <Condition Check="INVERT\_INTERACTION"> <INVERT\_INC\_DEC\_INTERACTION>True</INVERT\_INC\_DEC\_INTERACTION> <INVERT\_DRAG\_INTERACTION>True</INVERT\_DRAG\_INTERACTION> </Condition> </Parameters> <Parameters Type="Default"> <HELPID/> <TOOLTIPID/> <DELTA\_MIN>0.0005</DELTA\_MIN> <Condition Check="NO\_ARROWS"> <False> <Condition Check="AXIS" Match="Y"> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> </Condition> <Condition Check="AXIS" Match="X"> <LEFTARROW>TurnLeft</LEFTARROW> <RIGHTARROW>TurnRight</RIGHTARROW> </Condition> </False> </Condition> <CALLBACKCODE/> <Condition Valid="INVERT\_INC\_DEC\_INTERACTION"> <True> <FLAG\_1>2</FLAG\_1> <FLAG\_2>1</FLAG\_2> </True> <False> <FLAG\_1>1</FLAG\_1> <FLAG\_2>2</FLAG\_2> </False> </Condition> <Condition Valid="INVERT\_DRAG\_INTERACTION"> <True> <DRAG\_INVERTION>1</DRAG\_INVERTION> </True> <False> <DRAG\_INVERTION>-1</DRAG\_INVERTION> </False> </Condition> <COUNT>2</COUNT> <DOWN\_CODE/> <RELEASE\_CODE/> <LOCK\_CODE/> <UNLOCK\_CODE/> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> <EXTRA\_MOUSEFLAGS/> <EXTRA\_EVENT\_HANDLING/> </Parameters> <Parameters Type="Override"> <Condition Check="USE\_TRAJECTORY\_DRAG\_MODE"> <True> <LOCK\_CODE> 1 (>O:\_Interacting) \#LOCK\_CODE\# </LOCK\_CODE> <UNLOCK\_CODE> 0 (>O:\_Interacting) \#UNLOCK\_CODE\# </UNLOCK\_CODE> <DRAG\_CODE> (M:Relative\#AXIS\#) (>O:\_LastPos) (O:\_Interacting) if{ \#DRAG\_CODE\# } </DRAG\_CODE> </True> <False> <DRAG\_CODE> (O:\_LastPos) (M:Relative\#AXIS\#) - (>O:\_Delta) (O:\_Delta) abs \#DELTA\_MIN\# > if{ (O:\_Delta) \#DELTA\_MIN\# / \#DRAG\_INVERTION\# \* (>O:DragScale) (M:Relative\#AXIS\#) (>O:\_LastPos) \#DRAG\_CODE\# g3 quit } </DRAG\_CODE> </False> </Condition> <Condition Valid="RIGHT\_SINGLE\_CODE"> <True> <EXTRA\_MOUSEFLAGS>\#EXTRA\_MOUSEFLAGS\#+RightSingle</EXTRA\_MOUSEFLAGS> <EXTRA\_EVENT\_HANDLING> els{ (M:Event) 'RightSingle' scmi 0 == if{ \#RIGHT\_SINGLE\_CODE\# } } </EXTRA\_EVENT\_HANDLING> </True> </Condition> </Parameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftRelease+LeftDrag+WheelUp+WheelDown+Lock+Unlock\#EXTRA\_MOUSEFLAGS\#</MouseFlags> <CALLBACKCODE> (M:Event) 'Lock' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_LastPos) \#LOCK\_CODE\# } els{ (M:Event) 'Unlock' scmi 0 == if{ \#UNLOCK\_CODE\# } els{ (M:Event) 'WheelUp' scmi 0 == if{ g\#FLAG\_1\# } els{ (M:Event) 'WheelDown' scmi 0 == if{ g\#FLAG\_2\# } els{ (M:Event) 'LeftSingle' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_LastPos) \#DOWN\_CODE\# } els{ (M:Event) 'LeftRelease' scmi 0 == if{ \#RELEASE\_CODE\# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ \#DRAG\_CODE\# } \#EXTRA\_EVENT\_HANDLING\# } } } } } } g3 quit :1 \#POSITIVE\_AXIS\_CODE\# g3 quit :2 \#NEGATIVE\_AXIS\_CODE\# g3 quit :3 \#CALLBACKCODE\# </CALLBACKCODE> </UseTemplate> </Template> Parameters initialization: - Default Condition: Check(INVERT\_INTERACTION) - Case: True Parameters set: - INVERT\_INC\_DEC\_INTERACTION - INVERT\_DRAG\_INTERACTION - Default Parameters set: - HELPID - TOOLTIPID - DELTA\_MIN - CALLBACKCODE - COUNT - DOWN\_CODE - RELEASE\_CODE - LOCK\_CODE - UNLOCK\_CODE - CURSOR\_DRAG\_IM - ALWAYS\_USE\_ANIM\_LAG - EXTRA\_MOUSEFLAGS - EXTRA\_EVENT\_HANDLING Condition: Check(NO\_ARROWS) - Case: False Condition: Check(AXIS) - Case: True Parameters set: - UPARROW - DOWNARROW Condition: Check(AXIS) - Case: True Parameters set: - LEFTARROW - RIGHTARROW Condition: Valid(INVERT\_INC\_DEC\_INTERACTION) - Case: True Parameters set: - FLAG\_1 - FLAG\_2 - Case: False Parameters set: - FLAG\_1 - FLAG\_2 Condition: Valid(INVERT\_DRAG\_INTERACTION) - Case: True Parameters set: - DRAG\_INVERTION - Case: False Parameters set: - DRAG\_INVERTION - Override Condition: Check(USE\_TRAJECTORY\_DRAG\_MODE) - Case: True Parameters set: - LOCK\_CODE (using LOCK\_CODE) - UNLOCK\_CODE (using UNLOCK\_CODE) - DRAG\_CODE (using AXIS, DRAG\_CODE) - Case: False Parameters set: - DRAG\_CODE (using AXIS, DELTA\_MIN, DRAG\_INVERTION, DRAG\_CODE) Condition: Valid(RIGHT\_SINGLE\_CODE) - Case: True Parameters set: - EXTRA\_MOUSEFLAGS (using EXTRA\_MOUSEFLAGS) - EXTRA\_EVENT\_HANDLING (using RIGHT\_SINGLE\_CODE)   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - MouseFlags (using EXTRA\_MOUSEFLAGS) - CALLBACKCODE (using AXIS, LOCK\_CODE, UNLOCK\_CODE, FLAG\_1, FLAG\_2, DOWN\_CODE, RELEASE\_CODE, DRAG\_CODE, EXTRA\_EVENT\_HANDLING, POSITIVE\_AXIS\_CODE, NEGATIVE\_AXIS\_CODE, CALLBACKCODE) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_WheelLeftSingle\_Axis Definition from XML <Template Name="ASOBO\_GT\_Interaction\_WheelLeftSingle\_Axis"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <DELTA\_MIN>1</DELTA\_MIN> <Condition Check="NO\_ARROWS"> <False> <Condition Check="AXIS" Match="Y"> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> </Condition> <Condition Check="AXIS" Match="X"> <LEFTARROW>TurnLeft</LEFTARROW> <RIGHTARROW>TurnRight</RIGHTARROW> </Condition> </False> </Condition> <Condition NotEmpty="CALLBACKCODE"> <True> <CALLBACKCODE\_DEFAULT\_IM>\#CALLBACKCODE\#</CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM>\#CALLBACKCODE\#</CALLBACKCODE\_DRAG\_IM> </True> <False> <CALLBACKCODE\_DEFAULT\_IM/> <CALLBACKCODE\_DRAG\_IM/> </False> </Condition> <Condition NotEmpty="POSITIVE\_AXIS\_CODE"> <True> <POSITIVE\_AXIS\_CODE\_DEFAULT\_IM>\#POSITIVE\_AXIS\_CODE\#</POSITIVE\_AXIS\_CODE\_DEFAULT\_IM> <POSITIVE\_AXIS\_CODE\_DRAG\_IM>\#POSITIVE\_AXIS\_CODE\#</POSITIVE\_AXIS\_CODE\_DRAG\_IM> </True> </Condition> <Condition NotEmpty="NEGATIVE\_AXIS\_CODE"> <True> <NEGATIVE\_AXIS\_CODE\_DEFAULT\_IM>\#NEGATIVE\_AXIS\_CODE\#</NEGATIVE\_AXIS\_CODE\_DEFAULT\_IM> <NEGATIVE\_AXIS\_CODE\_DRAG\_IM>\#NEGATIVE\_AXIS\_CODE\#</NEGATIVE\_AXIS\_CODE\_DRAG\_IM> </True> </Condition> <Condition Valid="INVERT\_WHEEL\_INTERACTION"> <True> <FLAG\_POS\_WHEEL\_UP>4</FLAG\_POS\_WHEEL\_UP> <FLAG\_POS\_WHEEL\_DN>3</FLAG\_POS\_WHEEL\_DN> </True> <False> <FLAG\_POS\_WHEEL\_UP>3</FLAG\_POS\_WHEEL\_UP> <FLAG\_POS\_WHEEL\_DN>4</FLAG\_POS\_WHEEL\_DN> </False> </Condition> <Condition Valid="INVERT\_DRAG\_POSITIVE\_CONDITION"> <True> <DRAG\_IS\_POSITIVE\_CONDITION>0 <=</DRAG\_IS\_POSITIVE\_CONDITION> </True> <False> <DRAG\_IS\_POSITIVE\_CONDITION>0 ></DRAG\_IS\_POSITIVE\_CONDITION> </False> </Condition> <THRESHOLD\_MOUSE>0.01</THRESHOLD\_MOUSE> <THRESHOLD\_INPUT>0.25</THRESHOLD\_INPUT> <UPARROW\_DRAG\_IM/> <DOWNARROW\_DRAG\_IM/> <LEFTARROW\_DRAG\_IM/> <RIGHTARROW\_DRAG\_IM/> <CURSOR\_CENTER\_DRAG\_IM/> <CURSOR\_DRAG\_IM>Grab</CURSOR\_DRAG\_IM> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> <USE\_PAD\_DRAG\_IM\_LOCK>False</USE\_PAD\_DRAG\_IM\_LOCK> </DefaultTemplateParameters> <OverrideTemplateParameters> <THRESHOLD>\#THRESHOLD\_INPUT\# \#THRESHOLD\_MOUSE\# (M:InputType) 1 == ?</THRESHOLD> <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> </OverrideTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MOUSEFLAGS\_DRAG\_IM>LeftAll+WheelUp+WheelDown+Lock+Unlock</MOUSEFLAGS\_DRAG\_IM> <CALLBACKCODE\_DRAG\_IM> (M:Event) 'WheelUp' scmi 0 == if{ g\#FLAG\_POS\_WHEEL\_UP\# } els{ (M:Event) 'WheelDown' scmi 0 == if{ g\#FLAG\_POS\_WHEEL\_DN\# } els{ (M:Event) 'Lock' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) \#UNSET\_DRAG\_LOCK\# } els{ (M:Event) 'Unlock' scmi 0 == if{ 0 (>O:\_Last\#AXIS\#) } els{ (M:Event) 'LeftDrag' scmi 0 == if{ \#CHECK\_AND\_RESET\_DRAG\_LOCK\# \#CHECK\_IS\_DRAG\_LOCKED\# if{ (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) } els{ (M:Relative\#AXIS\#) (O:\_Last\#AXIS\#) - sp0 \#THRESHOLD\# (>O:\_InputThreshold) l0 abs (O:\_InputThreshold) > if{ \#SET\_DRAG\_LOCK\# l0 (O:\_InputThreshold) / abs flr sp1 l0 (O:\_InputThreshold) % abs sp2 :1 (\* for loop \*) l1 0 <= if{ g2 } l1 -- sp1 l0 \#DRAG\_IS\_POSITIVE\_CONDITION\# if{ \#POSITIVE\_AXIS\_CODE\_DRAG\_IM\# } els{ \#NEGATIVE\_AXIS\_CODE\_DRAG\_IM\# } g1 :2 l0 0 > if{ (M:Relative\#AXIS\#) l2 - (>O:\_Last\#AXIS\#) } els{ (M:Relative\#AXIS\#) l2 + (>O:\_Last\#AXIS\#) } g5 } } } } } } } quit :5 \#CALLBACKCODE\_DRAG\_IM\# quit :3 \#POSITIVE\_AXIS\_CODE\_DRAG\_IM\# g5 quit :4 \#NEGATIVE\_AXIS\_CODE\_DRAG\_IM\# g5 quit </CALLBACKCODE\_DRAG\_IM> <MOUSEFLAGS\_DEFAULT\_IM>LeftSingle+WheelUp+WheelDown</MOUSEFLAGS\_DEFAULT\_IM> <CALLBACKCODE\_DEFAULT\_IM> (M:Event) 'WheelUp' scmi 0 == if{ g1 } els{ (M:Event) 'WheelDown' scmi 0 == if{ g2 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ (M:Relative\#AXIS\#) (>O:\_LastPos) (M:Relative\#AXIS\#) 0 > if{ g1 } els{ g2 } } } } quit :1 \#POSITIVE\_AXIS\_CODE\_DEFAULT\_IM\# quit :2 \#NEGATIVE\_AXIS\_CODE\_DEFAULT\_IM\# quit \#CALLBACKCODE\_DEFAULT\_IM\# </CALLBACKCODE\_DEFAULT\_IM> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - DELTA\_MIN - THRESHOLD\_MOUSE - THRESHOLD\_INPUT - UPARROW\_DRAG\_IM - DOWNARROW\_DRAG\_IM - LEFTARROW\_DRAG\_IM - RIGHTARROW\_DRAG\_IM - CURSOR\_CENTER\_DRAG\_IM - CURSOR\_DRAG\_IM - ALWAYS\_USE\_ANIM\_LAG - USE\_PAD\_DRAG\_IM\_LOCK Condition: Check(NO\_ARROWS) - Case: False Condition: Check(AXIS) - Case: True Parameters set: - UPARROW - DOWNARROW Condition: Check(AXIS) - Case: True Parameters set: - LEFTARROW - RIGHTARROW Condition: NotEmpty(CALLBACKCODE) - Case: True Parameters set: - CALLBACKCODE\_DEFAULT\_IM (using CALLBACKCODE) - CALLBACKCODE\_DRAG\_IM (using CALLBACKCODE) - Case: False Parameters set: - CALLBACKCODE\_DEFAULT\_IM - CALLBACKCODE\_DRAG\_IM Condition: NotEmpty(POSITIVE\_AXIS\_CODE) - Case: True Parameters set: - POSITIVE\_AXIS\_CODE\_DEFAULT\_IM (using POSITIVE\_AXIS\_CODE) - POSITIVE\_AXIS\_CODE\_DRAG\_IM (using POSITIVE\_AXIS\_CODE) Condition: NotEmpty(NEGATIVE\_AXIS\_CODE) - Case: True Parameters set: - NEGATIVE\_AXIS\_CODE\_DEFAULT\_IM (using NEGATIVE\_AXIS\_CODE) - NEGATIVE\_AXIS\_CODE\_DRAG\_IM (using NEGATIVE\_AXIS\_CODE) Condition: Valid(INVERT\_WHEEL\_INTERACTION) - Case: True Parameters set: - FLAG\_POS\_WHEEL\_UP - FLAG\_POS\_WHEEL\_DN - Case: False 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 Parameters set: - THRESHOLD (using THRESHOLD\_INPUT, THRESHOLD\_MOUSE) 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   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - MOUSEFLAGS\_DRAG\_IM - CALLBACKCODE\_DRAG\_IM (using FLAG\_POS\_WHEEL\_UP, FLAG\_POS\_WHEEL\_DN, AXIS, UNSET\_DRAG\_LOCK, CHECK\_AND\_RESET\_DRAG\_LOCK, CHECK\_IS\_DRAG\_LOCKED, THRESHOLD, SET\_DRAG\_LOCK, DRAG\_IS\_POSITIVE\_CONDITION, POSITIVE\_AXIS\_CODE\_DRAG\_IM, NEGATIVE\_AXIS\_CODE\_DRAG\_IM, CALLBACKCODE\_DRAG\_IM) - MOUSEFLAGS\_DEFAULT\_IM - CALLBACKCODE\_DEFAULT\_IM (using AXIS, POSITIVE\_AXIS\_CODE\_DEFAULT\_IM, NEGATIVE\_AXIS\_CODE\_DEFAULT\_IM, CALLBACKCODE\_DEFAULT\_IM) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_DraggingXAxis\_EventSet Definition from XML <Template Name="ASOBO\_GT\_Interaction\_DraggingXAxis\_EventSet"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Grab</CURSOR> <DRAG\_SCALE>163.84</DRAG\_SCALE> <DRAG\_AXIS\_SCALE>100</DRAG\_AXIS\_SCALE> <DRAG\_MIN\_VALUE>0</DRAG\_MIN\_VALUE> <DRAG\_MAX\_VALUE>16384</DRAG\_MAX\_VALUE> <AXIS>X</AXIS> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftDrag+WheelUp+WheelDown+Lock</MouseFlags> <CALLBACKDRAGGING/> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - CURSOR - DRAG\_SCALE - DRAG\_AXIS\_SCALE - DRAG\_MIN\_VALUE - DRAG\_MAX\_VALUE - AXIS   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - MouseFlags - CALLBACKDRAGGING [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_DraggingYAxis\_EventSet Definition from XML <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_EventSet"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Grab</CURSOR> <DRAG\_SCALE>163.84</DRAG\_SCALE> <DRAG\_AXIS\_SCALE>-100</DRAG\_AXIS\_SCALE> <DRAG\_MIN\_VALUE>0</DRAG\_MIN\_VALUE> <DRAG\_MAX\_VALUE>16384</DRAG\_MAX\_VALUE> <AXIS>Y</AXIS> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftDrag+WheelUp+WheelDown+Lock</MouseFlags> <CALLBACKDRAGGING/> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - CURSOR - DRAG\_SCALE - DRAG\_AXIS\_SCALE - DRAG\_MIN\_VALUE - DRAG\_MAX\_VALUE - AXIS   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - MouseFlags - CALLBACKDRAGGING [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_DraggingXAxis\_EventsIncDec Definition from XML <Template Name="ASOBO\_GT\_Interaction\_DraggingXAxis\_EventsIncDec"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <DRAG\_DELTA>8</DRAG\_DELTA> <DRAG\_SCALAR>2</DRAG\_SCALAR> <CURSOR>Grab</CURSOR> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftDrag+WheelUp+WheelDown+Lock</MouseFlags> <X\_MOVEMENT/> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - DRAG\_DELTA - DRAG\_SCALAR - CURSOR   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - MouseFlags - X\_MOVEMENT [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_DraggingYAxis\_EventsIncDec Definition from XML <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_EventsIncDec"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <DRAG\_DELTA>20</DRAG\_DELTA> <DRAG\_SCALAR>5</DRAG\_SCALAR> <CURSOR>Grab</CURSOR> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftSingle+LeftDrag+WheelUp+WheelDown+Lock</MouseFlags> <Y\_MOVEMENT/> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - DRAG\_DELTA - DRAG\_SCALAR - CURSOR   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - MouseFlags - Y\_MOVEMENT [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_DraggingYAxis\_Gates Definition from XML <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_Gates"> <DefaultTemplateParameters> <STEPS\_NUMBER>3</STEPS\_NUMBER> <GATE\_TOLERANCE>0.2</GATE\_TOLERANCE> <DRAG\_SPEED>10</DRAG\_SPEED> <POSITION\_TYPE>O</POSITION\_TYPE> <POSITION\_VAR>Position</POSITION\_VAR> <CURSOR>Grab</CURSOR> <AXIS>Y</AXIS> <GATE\_DIRECTION>1</GATE\_DIRECTION> <IGNORE\_GATE>0</IGNORE\_GATE> <INIT\_DRAG/> </DefaultTemplateParameters> <OverrideTemplateParameters> <Condition Valid="USE\_TRAJECTORY\_DRAG\_MODE"> <True> <Condition Valid="OVERRIDE\_NEW\_POSITION"> <True> <NEW\_POSITION>\#OVERRIDE\_NEW\_POSITION\#</NEW\_POSITION> </True> <False> <NEW\_POSITION>\#STEPS\_NUMBER\# (M:DragPercent) \* </NEW\_POSITION> </False> </Condition> <INIT\_DRAG> \#INIT\_DRAG\# (M:DragPercent) (>O:InitialDragPercent) </INIT\_DRAG> <DRAG\_CODE> \#DRAG\_CODE\# (M:DragPercent) (>O:PrevDragPercent) </DRAG\_CODE> </True> <False> <NEW\_POSITION>(\#POSITION\_TYPE\#:\#POSITION\_VAR\#) l3 + </NEW\_POSITION> </False> </Condition> <Condition> <Test> <And> <Greater> <Number>\#IGNORE\_GATE\#</Number> <Number>0</Number> </Greater> <Lower> <Number>\#IGNORE\_GATE\#</Number> <Number>\#STEPS\_NUMBER\#</Number> </Lower> </And> </Test> <True> <IGNORE\_GATE\_CODE> (O:MaxDraggingPosition) \#IGNORE\_GATE\# == if{ (O:MaxDraggingPosition) ++ (>O:MaxDraggingPosition) } (O:MinDraggingPosition) \#IGNORE\_GATE\# == if{ (O:MinDraggingPosition) -- (>O:MinDraggingPosition) } </IGNORE\_GATE\_CODE> </True> <False> <IGNORE\_GATE\_CODE/> </False> </Condition> </OverrideTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MOUSEFLAGS>LeftAll+WheelUp+WheelDown+Lock+Unlock</MOUSEFLAGS> <CALLBACKCODE> (M:Event) 'Lock' scmp 0 == if{ (M:RelativeY) (>O:PrevY, Number) (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) (>O:InitialDraggingPosition) (O:InitialDraggingPosition) near (O:InitialDraggingPosition) - abs \#GATE\_TOLERANCE\# < sp1 \#INIT\_DRAG\# \#GATE\_DIRECTION\# -1 != if{ l1 if{ (O:InitialDraggingPosition) near 1 + \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } els{ (O:InitialDraggingPosition) ceil \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } } els{ \#STEPS\_NUMBER\# (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ l1 if{ (O:InitialDraggingPosition) near 1 - 0 max (>O:MinDraggingPosition) } els{ (O:InitialDraggingPosition) flr 0 max (>O:MinDraggingPosition) } } els{ 0 (>O:MinDraggingPosition) } \#IGNORE\_GATE\_CODE\# 1 (>O:IsDragging) } els{ (M:Event) 'Unlock' scmp 0 == if{ 0 (>O:IsDragging) } els{ (M:Event) 'LeftDrag' scmp 0 == if{ (M:InputType) 1 == if{ (O:\_ResetLimitsTime) (E:SIMULATION TIME, second) < if{ (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) (>O:InitialDraggingPosition) (O:InitialDraggingPosition) near (O:InitialDraggingPosition) - abs \#GATE\_TOLERANCE\# < sp1 \#INIT\_DRAG\# \#GATE\_DIRECTION\# -1 != if{ l1 if{ (O:InitialDraggingPosition) near 1 + \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } els{ (O:InitialDraggingPosition) ceil \#STEPS\_NUMBER\# min (>O:MaxDraggingPosition) } } els{ \#STEPS\_NUMBER\# (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ l1 if{ (O:InitialDraggingPosition) near 1 - 0 max (>O:MinDraggingPosition) } els{ (O:InitialDraggingPosition) flr 0 max (>O:MinDraggingPosition) } } els{ 0 (>O:MinDraggingPosition) } \#IGNORE\_GATE\_CODE\# } (E:SIMULATION TIME, second) 0.1 + (>O:\_ResetLimitsTime) } (O:PrevY) (M:RelativeY) - sp2 l2 \#DRAG\_SPEED\# \* sp3 \#GATE\_DIRECTION\# -1 != if{ (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#GATE\_TOLERANCE\# + flr 1 + (O:MaxDraggingPosition) min (>O:MaxDraggingPosition) } \#GATE\_DIRECTION\# 1 != if{ (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#GATE\_TOLERANCE\# - ceil 1 - (O:MinDraggingPosition) max (>O:MinDraggingPosition) } \#IGNORE\_GATE\_CODE\# \#NEW\_POSITION\# (O:MaxDraggingPosition) min (O:MinDraggingPosition) max (>\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#DRAG\_CODE\# (M:RelativeY) (>O:PrevY) } } } </CALLBACKCODE> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - STEPS\_NUMBER - GATE\_TOLERANCE - DRAG\_SPEED - POSITION\_TYPE - POSITION\_VAR - CURSOR - AXIS - GATE\_DIRECTION - IGNORE\_GATE - INIT\_DRAG - Override Condition: Valid(USE\_TRAJECTORY\_DRAG\_MODE) - Case: True Parameters set: - INIT\_DRAG (using INIT\_DRAG) - DRAG\_CODE (using DRAG\_CODE) Condition: Valid(OVERRIDE\_NEW\_POSITION) - Case: True Parameters set: - NEW\_POSITION (using OVERRIDE\_NEW\_POSITION) - Case: False Parameters set: - NEW\_POSITION (using STEPS\_NUMBER) - Case: False Parameters set: - NEW\_POSITION (using POSITION\_TYPE, POSITION\_VAR) Condition: Test - Case: True Parameters set: - IGNORE\_GATE\_CODE (using IGNORE\_GATE) - Case: False Parameters set: - IGNORE\_GATE\_CODE   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - MOUSEFLAGS - CALLBACKCODE (using POSITION\_TYPE, POSITION\_VAR, GATE\_TOLERANCE, INIT\_DRAG, GATE\_DIRECTION, STEPS\_NUMBER, IGNORE\_GATE\_CODE, DRAG\_SPEED, NEW\_POSITION, DRAG\_CODE) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_DraggingYAxis\_SimGates Definition from XML <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_SimGates"> <DefaultTemplateParameters> <STEPS\_NUMBER>3</STEPS\_NUMBER> <GATE\_TOLERANCE>0.2</GATE\_TOLERANCE> <DRAG\_SPEED>0.01</DRAG\_SPEED> <CURSOR>Grab</CURSOR> <GATE\_DIRECTION>1</GATE\_DIRECTION> <AXIS>Y</AXIS> <SIMVAR\_CONVERSION/> <EVENTID\_CONVERSION/> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_SimGates\_Base"/> </Template> Parameters initialization: - Default Parameters set: - STEPS\_NUMBER - GATE\_TOLERANCE - DRAG\_SPEED - CURSOR - GATE\_DIRECTION - AXIS - SIMVAR\_CONVERSION - EVENTID\_CONVERSION   Templates used: - [ASOBO\_GT\_Interaction\_DraggingYAxis\_SimGates\_Base](subtemplates/interactions-subtemplates/#ASOBO_GT_Interaction_DraggingYAxis_SimGates_Base) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_DraggingAxis\_Code Definition from XML <Template Name="ASOBO\_GT\_Interaction\_DraggingAxis\_Code"> <DefaultTemplateParameters> <HELPID/> <TOOLTIPID/> <CURSOR>Grab</CURSOR> <DRAG\_DELTA>0.001</DRAG\_DELTA> <DRAG\_SPEED>0.5</DRAG\_SPEED> <POSITION\_TYPE>O</POSITION\_TYPE> <POSITION\_VAR>Position</POSITION\_VAR> <Condition Check="IS\_LOOPING"> <True> <MIN\_LIMITER>dnor</MIN\_LIMITER> <MAX\_LIMITER>dnor</MAX\_LIMITER> </True> <False> <Condition Check="ANIM\_LENGTH"> <True> <MIN\_LIMITER> 0 max </MIN\_LIMITER> <MAX\_LIMITER> \#ANIM\_LENGTH\# min </MAX\_LIMITER> </True> <False> <ANIM\_LENGTH>100</ANIM\_LENGTH> <MIN\_LIMITER> 0 max </MIN\_LIMITER> <MAX\_LIMITER> 100 min </MAX\_LIMITER> </False> </Condition> </False> </Condition> <Condition Check="REVERSE\_INTERACTION"> <True> <FLAG\_1>2</FLAG\_1> <FLAG\_2>1</FLAG\_2> </True> <False> <FLAG\_1>1</FLAG\_1> <FLAG\_2>2</FLAG\_2> </False> </Condition> <LEFT\_SINGLE\_CODE/> <LEFT\_RELEASE\_CODE/> <ALWAYS\_USE\_ANIM\_LAG>False</ALWAYS\_USE\_ANIM\_LAG> </DefaultTemplateParameters> <UseTemplate Name="ASOBO\_GT\_MouseRect"> <MouseFlags>LeftAll+WheelUp+WheelDown</MouseFlags> <CALLBACKCODE> (M:Event) 'WheelUp' scmi 0 == if{ g1 } els{ (M:Event) 'WheelDown' scmi 0 == if{ g2 } els{ (M:Event) 'LeftSingle' scmi 0 == if{ \#LEFT\_SINGLE\_CODE\# (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) } els{ (M:Event) 'LeftRelease' scmi 0 == if{ \#LEFT\_RELEASE\_CODE\# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ (O:\_Last\#AXIS\#) (M:Relative\#AXIS\#) - \#DRAG\_DELTA\# / abs (>O:DragFactor) (O:\_Last\#AXIS\#) (M:Relative\#AXIS\#) - -\#DRAG\_DELTA\# < if{ (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) g1 } els{ (O:\_Last\#AXIS\#) (M:Relative\#AXIS\#) - \#DRAG\_DELTA\# > if{ (M:Relative\#AXIS\#) (>O:\_Last\#AXIS\#) g2 } els{ } } } } } } } quit :\#FLAG\_1\# (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#DRAG\_SPEED\# (O:DragFactor) \* + \#MAX\_LIMITER\# (>\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#UP\_CODE\# quit :\#FLAG\_2\# (\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#DRAG\_SPEED\# (O:DragFactor) \* - \#MIN\_LIMITER\# (>\#POSITION\_TYPE\#:\#POSITION\_VAR\#) \#DOWN\_CODE\# quit </CALLBACKCODE> </UseTemplate> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - CURSOR - DRAG\_DELTA - DRAG\_SPEED - POSITION\_TYPE - POSITION\_VAR - LEFT\_SINGLE\_CODE - LEFT\_RELEASE\_CODE - ALWAYS\_USE\_ANIM\_LAG Condition: Check(IS\_LOOPING) - Case: True Parameters set: - MIN\_LIMITER - MAX\_LIMITER - Case: False Condition: Check(ANIM\_LENGTH) - Case: True Parameters set: - MIN\_LIMITER - MAX\_LIMITER (using ANIM\_LENGTH) - Case: False Parameters set: - ANIM\_LENGTH - MIN\_LIMITER - MAX\_LIMITER Condition: Check(REVERSE\_INTERACTION) - Case: True Parameters set: - FLAG\_1 - FLAG\_2 - Case: False Parameters set: - FLAG\_1 - FLAG\_2   Templates used: - [ASOBO\_GT\_MouseRect](interactions/#ASOBO_GT_MouseRect) Parameters set: - MouseFlags - CALLBACKCODE (using LEFT\_SINGLE\_CODE, AXIS, LEFT\_RELEASE\_CODE, DRAG\_DELTA, FLAG\_1, POSITION\_TYPE, POSITION\_VAR, DRAG\_SPEED, MAX\_LIMITER, UP\_CODE, FLAG\_2, MIN\_LIMITER, DOWN\_CODE) [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_DraggingXAxis\_Code Definition from XML <Template Name="ASOBO\_GT\_Interaction\_DraggingXAxis\_Code"> <UseTemplate Name="ASOBO\_GT\_Interaction\_DraggingAxis\_Code"> <AXIS>X</AXIS> </UseTemplate> </Template>   Templates used: - [ASOBO\_GT\_Interaction\_DraggingAxis\_Code](interactions/#ASOBO_GT_Interaction_DraggingAxis_Code) Parameters set: - AXIS [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_Interaction\_DraggingYAxis\_Code Definition from XML <Template Name="ASOBO\_GT\_Interaction\_DraggingYAxis\_Code"> <UseTemplate Name="ASOBO\_GT\_Interaction\_DraggingAxis\_Code"> <AXIS>Y</AXIS> </UseTemplate> </Template>   Templates used: - [ASOBO\_GT\_Interaction\_DraggingAxis\_Code](interactions/#ASOBO_GT_Interaction_DraggingAxis_Code) Parameters set: - AXIS [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_MouseRect Definition from XML <Template Name="ASOBO\_GT\_MouseRect"> <Parameters Type="Default"> <HELPID/> <TOOLTIPID/> <ANIMCURSOR\_MIN/> <ANIMCURSOR\_MAX/> <ANIMTIP\_LOOP/> <ANIMTIP\_0\_ON\_PERCENT/> <ANIMTIP\_1\_ON\_PERCENT/> <ANIMTIP\_2\_ON\_PERCENT/> <ANIMTIP\_3\_ON\_PERCENT/> <ANIMTIP\_4\_ON\_PERCENT/> <ANIMTIP\_5\_ON\_PERCENT/> <ANIMTIP\_6\_ON\_PERCENT/> <ANIMTIP\_7\_ON\_PERCENT/> <ANIMTIP\_8\_ON\_PERCENT/> <ANIMTIP\_9\_ON\_PERCENT/> <ANIMTIP\_10\_ON\_PERCENT/> <ANIMTIP\_11\_ON\_PERCENT/> <ANIMTIP\_12\_ON\_PERCENT/> <ANIMTIP\_13\_ON\_PERCENT/> <ANIMTIP\_14\_ON\_PERCENT/> <ANIMTIP\_15\_ON\_PERCENT/> <ANIMTIP\_0\_ON\_CURSOR/> <ANIMTIP\_1\_ON\_CURSOR/> <ANIMTIP\_2\_ON\_CURSOR/> <ANIMTIP\_3\_ON\_CURSOR/> <ANIMTIP\_4\_ON\_CURSOR/> <ANIMTIP\_5\_ON\_CURSOR/> <ANIMTIP\_6\_ON\_CURSOR/> <ANIMTIP\_7\_ON\_CURSOR/> <ANIMTIP\_8\_ON\_CURSOR/> <ANIMTIP\_9\_ON\_CURSOR/> <ANIMTIP\_10\_ON\_CURSOR/> <ANIMTIP\_11\_ON\_CURSOR/> <ANIMTIP\_12\_ON\_CURSOR/> <ANIMTIP\_13\_ON\_CURSOR/> <ANIMTIP\_14\_ON\_CURSOR/> <ANIMTIP\_15\_ON\_CURSOR/> <ANIMTIP\_0\_ON\_HITBOX/> <ANIMTIP\_1\_ON\_HITBOX/> <ANIMTIP\_2\_ON\_HITBOX/> <ANIMTIP\_3\_ON\_HITBOX/> <ANIMTIP\_4\_ON\_HITBOX/> <ANIMTIP\_5\_ON\_HITBOX/> <ANIMTIP\_6\_ON\_HITBOX/> <ANIMTIP\_7\_ON\_HITBOX/> <ANIMTIP\_8\_ON\_HITBOX/> <ANIMTIP\_9\_ON\_HITBOX/> <ANIMTIP\_10\_ON\_HITBOX/> <ANIMTIP\_11\_ON\_HITBOX/> <ANIMTIP\_12\_ON\_HITBOX/> <ANIMTIP\_13\_ON\_HITBOX/> <ANIMTIP\_14\_ON\_HITBOX/> <ANIMTIP\_15\_ON\_HITBOX/> <DRAG\_IS\_RELATIVE>True</DRAG\_IS\_RELATIVE> <DRAG\_AXIS\_X\_SCALE>0</DRAG\_AXIS\_X\_SCALE> <DRAG\_AXIS\_Y\_SCALE>0</DRAG\_AXIS\_Y\_SCALE> <DRAG\_AXIS\_Z\_SCALE>0</DRAG\_AXIS\_Z\_SCALE> <Condition Check="DRAG\_AXIS\_SCALE"> <Switch Param="AXIS"> <Case Value="X"> <DRAG\_AXIS\_X\_SCALE>\#DRAG\_AXIS\_SCALE\#</DRAG\_AXIS\_X\_SCALE> </Case> <Case Value="Y"> <DRAG\_AXIS\_Y\_SCALE>\#DRAG\_AXIS\_SCALE\#</DRAG\_AXIS\_Y\_SCALE> </Case> <Case Value="Z"> <DRAG\_AXIS\_Z\_SCALE>\#DRAG\_AXIS\_SCALE\#</DRAG\_AXIS\_Z\_SCALE> </Case> </Switch> </Condition> <DRAG\_NODE\_ID/> <DRAG\_ANIM\_NAME/> <Condition Check="USE\_TRAJECTORY\_DRAG\_MODE"> <True> <DRAG\_MODE>Trajectory</DRAG\_MODE> <Condition Check="DONT\_SYNC\_DRAG\_TO\_ANIM"> <True> <DRAG\_ANIM\_SYNCED>False</DRAG\_ANIM\_SYNCED> </True> <False> <DRAG\_ANIM\_SYNCED>True</DRAG\_ANIM\_SYNCED> </False> </Condition> </True> <False> <DRAG\_MODE>Default</DRAG\_MODE> <DRAG\_ANIM\_SYNCED>True</DRAG\_ANIM\_SYNCED> </False> </Condition> <Condition Valid="AXIS"> <True> <DRAG\_AXIS>\#AXIS\#</DRAG\_AXIS> </True> <False> <DRAG\_AXIS>Any</DRAG\_AXIS> </False> </Condition> <DRAG\_SCALAR>0.025</DRAG\_SCALAR> <Condition Check="NODE\_ID"> <True> <DRAG\_ANIMATION\_VARIABLE\_TYPE>O</DRAG\_ANIMATION\_VARIABLE\_TYPE> <DRAG\_ANIMATION\_VARIABLE\_NAME>XMLVAR\_\#NODE\_ID\#\_Animation\_Position</DRAG\_ANIMATION\_VARIABLE\_NAME> <DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE>O</DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE> <DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME>XMLVAR\_\#NODE\_ID\#\_Animation\_Target\_Position</DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME> </True> </Condition> <ANIMCURSOR\_DIR>1.0</ANIMCURSOR\_DIR> <Condition Check="CALLBACKCODE"> <True> <CALLBACKCODE\_DEFAULT\_IM>\#CALLBACKCODE\#</CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM>\#CALLBACKCODE\#</CALLBACKCODE\_DRAG\_IM> </True> <False> <Condition Check="CALLBACKCODE\_DEFAULT\_IM"> <CALLBACKCODE\_DRAG\_IM>\#CALLBACKCODE\_DEFAULT\_IM\#</CALLBACKCODE\_DRAG\_IM> </Condition> </False> </Condition> <CENTER\_RADIUS>0</CENTER\_RADIUS> <ALWAYS\_USE\_ANIM\_LAG>True</ALWAYS\_USE\_ANIM\_LAG> <DRAG\_MOUSEFLAGS\_LOCKABLE>LeftDrag+RightDrag+MiddleDrag</DRAG\_MOUSEFLAGS\_LOCKABLE> <TOOLTIP\_TITLE/> <TOOLTIP\_DISABLED/> <TOOLTIP\_TITLE\_IS\_DYNAMIC>False</TOOLTIP\_TITLE\_IS\_DYNAMIC> <TEMPORARY\_LOCK\_FLAGS>LeftSingle</TEMPORARY\_LOCK\_FLAGS> <INTERACTABLE\_GROUP\_ID/> <MOUSERECT\_DISABLED\_IN\_VR>False</MOUSERECT\_DISABLED\_IN\_VR> <MOUSERECT\_DISABLED\_WITH\_MOTION\_CONTROLLERS>False</MOUSERECT\_DISABLED\_WITH\_MOTION\_CONTROLLERS> <MOUSERECT\_IGNORE\_ZTEST>False</MOUSERECT\_IGNORE\_ZTEST> <MOUSERECT\_PRIORITIZE\_VCOCKPITS>False</MOUSERECT\_PRIORITIZE\_VCOCKPITS> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="TOOLTIP\_TITLE\_INDEX"> <Condition NotEmpty="TOOLTIP\_TITLE\_ID"> <True> <TOOLTIP\_TITLE>\#TOOLTIP\_TITLE\_INDEX\# (R:1:\#TOOLTIP\_TITLE\_ID\#) @sprintf</TOOLTIP\_TITLE> </True> <False> <TOOLTIP\_TITLE>\#TOOLTIP\_TITLE\_INDEX\# (R:1:\#TOOLTIP\_TITLE\#) @sprintf</TOOLTIP\_TITLE> </False> </Condition> <TOOLTIP\_TITLE\_IS\_DYNAMIC>True</TOOLTIP\_TITLE\_IS\_DYNAMIC> </Condition> <Condition Valid="ALWAYS\_USE\_ANIM\_LAG"> <True> <DRAG\_USE\_ANIM\_LAG>True</DRAG\_USE\_ANIM\_LAG> </True> <False> <DRAG\_USE\_ANIM\_LAG>False</DRAG\_USE\_ANIM\_LAG> </False> </Condition> <Condition NotEmpty="ANIMATION\_CODE\_SETTER"> <True> <Switch> <Case Check="X\_MOVEMENT"> <X\_MOVEMENT> \#X\_MOVEMENT\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </X\_MOVEMENT> </Case> <Case Check="Y\_MOVEMENT"> <Y\_MOVEMENT> \#Y\_MOVEMENT\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </Y\_MOVEMENT> </Case> <Case Check="CALLBACKDRAGGING"> <CALLBACKDRAGGING> \#CALLBACKDRAGGING\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </CALLBACKDRAGGING> </Case> <Case Check="CALLBACKCODE\_DEFAULT\_IM"> <CALLBACKCODE\_DEFAULT\_IM> \#CALLBACKCODE\_DEFAULT\_IM\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </CALLBACKCODE\_DEFAULT\_IM> <CALLBACKCODE\_DRAG\_IM> \#CALLBACKCODE\_DRAG\_IM\# \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_VARIABLE\_NAME\#) \#ANIMATION\_CODE\_SETTER\# (>\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE\#:\#DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME\#) </CALLBACKCODE\_DRAG\_IM> </Case> </Switch> </True> </Condition> <Condition Check="INVERT\_ANIM"> <True> <ANIMCURSOR\_DIR Process="Float">\#ANIMCURSOR\_DIR\# -1 \*</ANIMCURSOR\_DIR> </True> </Condition> <Condition Valid="INVERT\_IM\_DRAG\_INPUT\_SCALAR"> <True> <DRAG\_SCALAR Process="Float">\#DRAG\_SCALAR\# -1 \*</DRAG\_SCALAR> </True> </Condition> <Switch> <Case Valid="NO\_HIGHLIGHT\_NODE\_ID"> <HIGHLIGHT\_NODE\_ID>\_\_NO\_HIGHLIGHT\_\_</HIGHLIGHT\_NODE\_ID> </Case> <Case NotEmpty="HIGHLIGHT\_NODE\_ID"> <HIGHLIGHT\_NODE\_ID>\#HIGHLIGHT\_NODE\_ID\#</HIGHLIGHT\_NODE\_ID> </Case> <Default> <HIGHLIGHT\_NODE\_ID/> </Default> </Switch> <Condition Valid="DISABLE\_INTERACTION\_LOCK"> <True> <DRAG\_IM\_LOCK\_ENABLED>False</DRAG\_IM\_LOCK\_ENABLED> </True> <False> <DRAG\_IM\_LOCK\_ENABLED>True</DRAG\_IM\_LOCK\_ENABLED> </False> </Condition> <Condition Valid="DISABLE\_MOUSERECT"> <True> <MOUSERECT\_DISABLED>True</MOUSERECT\_DISABLED> </True> <False> <MOUSERECT\_DISABLED>False</MOUSERECT\_DISABLED> </False> </Condition> <PARAM1>LEFTARROW</PARAM1> <PARAM2>RIGHTARROW</PARAM2> <PARAM3>CURSOR</PARAM3> <PARAM4>CENTER\_CURSOR</PARAM4> <PARAM5>UPARROW</PARAM5> <PARAM6>DOWNARROW</PARAM6> <PARAM7>CENTER\_RADIUS</PARAM7> <PARAM7\_EMPTY\_IF\_NOT\_DECLARED>False</PARAM7\_EMPTY\_IF\_NOT\_DECLARED> <PARAM8>MOUSEFLAGS</PARAM8> </Parameters> <Parameters Type="Override"> <Condition NotEmpty="TOOLTIP\_TITLE"> <False> <TOOLTIP\_DISABLED>True</TOOLTIP\_DISABLED> </False> </Condition> </Parameters> <Switch> <Case Check="EMISSIVE\_NODE\_POTENTIOMETER"> <UseTemplate Name="ASOBO\_GT\_Emissive\_Potentiometer"> <POTENTIOMETER>\#EMISSIVE\_NODE\_POTENTIOMETER\#</POTENTIOMETER> </UseTemplate> </Case> <Case Check="EMISSIVE\_NODE\_SIMVAR\_POWER\_SETTING"> <UseTemplate Name="ASOBO\_GT\_Emissive\_Power\_Setting"> <SIMVAR\_POWER\_SETTING>\#EMISSIVE\_NODE\_SIMVAR\_POWER\_SETTING\#</SIMVAR\_POWER\_SETTING> </UseTemplate> </Case> </Switch> <Condition Check="ANIMATION\_CODE\_SETTER"> <UseTemplate Name="ASOBO\_GT\_Update\_SmoothLeverMovement"/> </Condition> <Loop> <Setup> <Param>ID</Param> <From>1</From> <Inc>1</Inc> <While> <Arg Valid="PARAM\#ID\#"/> </While> </Setup> <Do> <Parameters Type="Default" Lifetime="Iteration"> <Condition Valid="PARAM\#ID\#\_EMPTY\_IF\_NOT\_DECLARED"> <True> <EMPTY\_IF\_NOT\_DECLARED Process="Param">PARAM\#ID\#\_EMPTY\_IF\_NOT\_DECLARED</EMPTY\_IF\_NOT\_DECLARED> </True> <False> <EMPTY\_IF\_NOT\_DECLARED>True</EMPTY\_IF\_NOT\_DECLARED> </False> </Condition> </Parameters> <Parameters Type="Override" Lifetime="Iteration"> <PARAM Process="Param">PARAM\#ID\#</PARAM> </Parameters> <Parameters Type="Override" Lifetime="Loop"> <Condition NotEmpty="\#PARAM\#"> <True> <Condition Check="\#PARAM\#\_DEFAULT\_IM"> <False> <\#PARAM\#\_DEFAULT\_IM Process="Param">\#PARAM\#</\#PARAM\#\_DEFAULT\_IM> </False> </Condition> <Condition Check="\#PARAM\#\_DRAG\_IM"> <False> <\#PARAM\#\_DRAG\_IM Process="Param">\#PARAM\#</\#PARAM\#\_DRAG\_IM> </False> </Condition> </True> <False> <Condition> <Test> <Or> <Arg NotEmpty="\#PARAM\#\_DEFAULT\_IM"/> <Arg NotEmpty="\#PARAM\#\_DRAG\_IM"/> </Or> </Test> <True> <Condition Valid="EMPTY\_IF\_NOT\_DECLARED"> <Condition NotEmpty="\#PARAM\#\_DEFAULT\_IM"> <False> <\#PARAM\#\_DEFAULT\_IM/> </False> </Condition> <Condition NotEmpty="\#PARAM\#\_DRAG\_IM"> <False> <\#PARAM\#\_DRAG\_IM/> </False> </Condition> </Condition> </True> <False> <Condition Valid="EMPTY\_IF\_NOT\_DECLARED"> <\#PARAM\#\_DEFAULT\_IM/> <\#PARAM\#\_DRAG\_IM/> </Condition> </False> </Condition> </False> </Condition> </Parameters> </Do> <Then> <UseTemplate Name="ASOBO\_GT\_MouseRect\_Impl"/> </Then> </Loop> </Template> Parameters initialization: - Default Parameters set: - HELPID - TOOLTIPID - ANIMCURSOR\_MIN - ANIMCURSOR\_MAX - ANIMTIP\_LOOP - ANIMTIP\_0\_ON\_PERCENT - ANIMTIP\_1\_ON\_PERCENT - ANIMTIP\_2\_ON\_PERCENT - ANIMTIP\_3\_ON\_PERCENT - ANIMTIP\_4\_ON\_PERCENT - ANIMTIP\_5\_ON\_PERCENT - ANIMTIP\_6\_ON\_PERCENT - ANIMTIP\_7\_ON\_PERCENT - ANIMTIP\_8\_ON\_PERCENT - ANIMTIP\_9\_ON\_PERCENT - ANIMTIP\_10\_ON\_PERCENT - ANIMTIP\_11\_ON\_PERCENT - ANIMTIP\_12\_ON\_PERCENT - ANIMTIP\_13\_ON\_PERCENT - ANIMTIP\_14\_ON\_PERCENT - ANIMTIP\_15\_ON\_PERCENT - ANIMTIP\_0\_ON\_CURSOR - ANIMTIP\_1\_ON\_CURSOR - ANIMTIP\_2\_ON\_CURSOR - ANIMTIP\_3\_ON\_CURSOR - ANIMTIP\_4\_ON\_CURSOR - ANIMTIP\_5\_ON\_CURSOR - ANIMTIP\_6\_ON\_CURSOR - ANIMTIP\_7\_ON\_CURSOR - ANIMTIP\_8\_ON\_CURSOR - ANIMTIP\_9\_ON\_CURSOR - ANIMTIP\_10\_ON\_CURSOR - ANIMTIP\_11\_ON\_CURSOR - ANIMTIP\_12\_ON\_CURSOR - ANIMTIP\_13\_ON\_CURSOR - ANIMTIP\_14\_ON\_CURSOR - ANIMTIP\_15\_ON\_CURSOR - ANIMTIP\_0\_ON\_HITBOX - ANIMTIP\_1\_ON\_HITBOX - ANIMTIP\_2\_ON\_HITBOX - ANIMTIP\_3\_ON\_HITBOX - ANIMTIP\_4\_ON\_HITBOX - ANIMTIP\_5\_ON\_HITBOX - ANIMTIP\_6\_ON\_HITBOX - ANIMTIP\_7\_ON\_HITBOX - ANIMTIP\_8\_ON\_HITBOX - ANIMTIP\_9\_ON\_HITBOX - ANIMTIP\_10\_ON\_HITBOX - ANIMTIP\_11\_ON\_HITBOX - ANIMTIP\_12\_ON\_HITBOX - ANIMTIP\_13\_ON\_HITBOX - ANIMTIP\_14\_ON\_HITBOX - ANIMTIP\_15\_ON\_HITBOX - DRAG\_IS\_RELATIVE - DRAG\_AXIS\_X\_SCALE - DRAG\_AXIS\_Y\_SCALE - DRAG\_AXIS\_Z\_SCALE - DRAG\_NODE\_ID - DRAG\_ANIM\_NAME - DRAG\_SCALAR - ANIMCURSOR\_DIR - CENTER\_RADIUS - ALWAYS\_USE\_ANIM\_LAG - DRAG\_MOUSEFLAGS\_LOCKABLE - TOOLTIP\_TITLE - TOOLTIP\_DISABLED - TOOLTIP\_TITLE\_IS\_DYNAMIC - TEMPORARY\_LOCK\_FLAGS - INTERACTABLE\_GROUP\_ID - MOUSERECT\_DISABLED\_IN\_VR - MOUSERECT\_DISABLED\_WITH\_MOTION\_CONTROLLERS - MOUSERECT\_IGNORE\_ZTEST - MOUSERECT\_PRIORITIZE\_VCOCKPITS Condition: Check(DRAG\_AXIS\_SCALE) - Case: True Condition: Switch(AXIS) - Case: X Parameters set: - DRAG\_AXIS\_X\_SCALE (using DRAG\_AXIS\_SCALE) - Case: Y Parameters set: - DRAG\_AXIS\_Y\_SCALE (using DRAG\_AXIS\_SCALE) - Case: Z Parameters set: - DRAG\_AXIS\_Z\_SCALE (using DRAG\_AXIS\_SCALE) Condition: Check(USE\_TRAJECTORY\_DRAG\_MODE) - Case: True Parameters set: - DRAG\_MODE Condition: Check(DONT\_SYNC\_DRAG\_TO\_ANIM) - Case: True Parameters set: - DRAG\_ANIM\_SYNCED - Case: False Parameters set: - DRAG\_ANIM\_SYNCED - Case: False Parameters set: - DRAG\_MODE - DRAG\_ANIM\_SYNCED Condition: Valid(AXIS) - Case: True Parameters set: - DRAG\_AXIS (using AXIS) - Case: False Parameters set: - DRAG\_AXIS Condition: Check(NODE\_ID) - Case: True Parameters set: - DRAG\_ANIMATION\_VARIABLE\_TYPE - DRAG\_ANIMATION\_VARIABLE\_NAME (using NODE\_ID) - DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE - DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME (using NODE\_ID) Condition: Check(CALLBACKCODE) - Case: True Parameters set: - CALLBACKCODE\_DEFAULT\_IM (using CALLBACKCODE) - CALLBACKCODE\_DRAG\_IM (using CALLBACKCODE) - Case: False Condition: Check(CALLBACKCODE\_DEFAULT\_IM) - Case: True Parameters set: - CALLBACKCODE\_DRAG\_IM (using CALLBACKCODE\_DEFAULT\_IM) - Override Parameters set: - PARAM1 - PARAM2 - PARAM3 - PARAM4 - PARAM5 - PARAM6 - PARAM7 - PARAM7\_EMPTY\_IF\_NOT\_DECLARED - PARAM8 Condition: NotEmpty(TOOLTIP\_TITLE\_INDEX) - Case: True Parameters set: - TOOLTIP\_TITLE\_IS\_DYNAMIC Condition: NotEmpty(TOOLTIP\_TITLE\_ID) - Case: True Parameters set: - TOOLTIP\_TITLE (using TOOLTIP\_TITLE\_INDEX, TOOLTIP\_TITLE\_ID) - Case: False Parameters set: - TOOLTIP\_TITLE (using TOOLTIP\_TITLE\_INDEX, TOOLTIP\_TITLE) Condition: Valid(ALWAYS\_USE\_ANIM\_LAG) - Case: True Parameters set: - DRAG\_USE\_ANIM\_LAG - Case: False Parameters set: - DRAG\_USE\_ANIM\_LAG Condition: NotEmpty(ANIMATION\_CODE\_SETTER) - Case: True Condition: Switch - Case: Check(X\_MOVEMENT) Parameters read: - X\_MOVEMENT Parameters set: - X\_MOVEMENT (using X\_MOVEMENT, ANIMATION\_CODE\_SETTER, DRAG\_ANIMATION\_VARIABLE\_TYPE, DRAG\_ANIMATION\_VARIABLE\_NAME, DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE, DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME) - Case: Check(Y\_MOVEMENT) Parameters read: - Y\_MOVEMENT Parameters set: - Y\_MOVEMENT (using Y\_MOVEMENT, ANIMATION\_CODE\_SETTER, DRAG\_ANIMATION\_VARIABLE\_TYPE, DRAG\_ANIMATION\_VARIABLE\_NAME, DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE, DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME) - Case: Check(CALLBACKDRAGGING) Parameters read: - CALLBACKDRAGGING Parameters set: - CALLBACKDRAGGING (using CALLBACKDRAGGING, ANIMATION\_CODE\_SETTER, DRAG\_ANIMATION\_VARIABLE\_TYPE, DRAG\_ANIMATION\_VARIABLE\_NAME, DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE, DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME) - Case: Check(CALLBACKCODE\_DEFAULT\_IM) Parameters read: - CALLBACKCODE\_DEFAULT\_IM Parameters set: - CALLBACKCODE\_DEFAULT\_IM (using CALLBACKCODE\_DEFAULT\_IM, ANIMATION\_CODE\_SETTER, DRAG\_ANIMATION\_VARIABLE\_TYPE, DRAG\_ANIMATION\_VARIABLE\_NAME, DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE, DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME) - CALLBACKCODE\_DRAG\_IM (using CALLBACKCODE\_DRAG\_IM, ANIMATION\_CODE\_SETTER, DRAG\_ANIMATION\_VARIABLE\_TYPE, DRAG\_ANIMATION\_VARIABLE\_NAME, DRAG\_ANIMATION\_TARGET\_VARIABLE\_TYPE, DRAG\_ANIMATION\_TARGET\_VARIABLE\_NAME) Condition: Check(INVERT\_ANIM) - Case: True Parameters set: - ANIMCURSOR\_DIR (using ANIMCURSOR\_DIR) Condition: Valid(INVERT\_IM\_DRAG\_INPUT\_SCALAR) - Case: True Parameters set: - DRAG\_SCALAR (using DRAG\_SCALAR) Condition: Switch - Case: Valid(NO\_HIGHLIGHT\_NODE\_ID) Parameters set: - HIGHLIGHT\_NODE\_ID - Case: NotEmpty(HIGHLIGHT\_NODE\_ID) Parameters set: - HIGHLIGHT\_NODE\_ID (using HIGHLIGHT\_NODE\_ID) - Default case: Parameters set: - HIGHLIGHT\_NODE\_ID Condition: Valid(DISABLE\_INTERACTION\_LOCK) - Case: True Parameters set: - DRAG\_IM\_LOCK\_ENABLED - Case: False Parameters set: - DRAG\_IM\_LOCK\_ENABLED Condition: Valid(DISABLE\_MOUSERECT) - Case: True Parameters set: - MOUSERECT\_DISABLED - Case: False Parameters set: - MOUSERECT\_DISABLED - Override Condition: NotEmpty(TOOLTIP\_TITLE) - Case: False Parameters set: - TOOLTIP\_DISABLED Parameters read: - ID Parameters set: - ID - PARAM (using ID)   Templates used: - [ASOBO\_GT\_MouseRect\_Impl](interactions/#ASOBO_GT_MouseRect_Impl) Condition: Switch - Case: Check(EMISSIVE\_NODE\_POTENTIOMETER) Parameters read: - EMISSIVE\_NODE\_POTENTIOMETER   Templates used: - [ASOBO\_GT\_Emissive\_Potentiometer](emissive/#ASOBO_GT_Emissive_Potentiometer) Parameters set: - POTENTIOMETER (using EMISSIVE\_NODE\_POTENTIOMETER) - Case: Check(EMISSIVE\_NODE\_SIMVAR\_POWER\_SETTING) Parameters read: - EMISSIVE\_NODE\_SIMVAR\_POWER\_SETTING   Templates used: - [ASOBO\_GT\_Emissive\_Power\_Setting](emissive/#ASOBO_GT_Emissive_Power_Setting) Parameters set: - SIMVAR\_POWER\_SETTING (using EMISSIVE\_NODE\_SIMVAR\_POWER\_SETTING) Condition: Check(ANIMATION\_CODE\_SETTER) - Case: True   Templates used: - [ASOBO\_GT\_Update\_SmoothLeverMovement](updates/#ASOBO_GT_Update_SmoothLeverMovement) Condition: Valid(PARAM\#ID\#\_EMPTY\_IF\_NOT\_DECLARED) - Case: True Parameters set: - EMPTY\_IF\_NOT\_DECLARED (using ID) - Case: False Parameters set: - EMPTY\_IF\_NOT\_DECLARED Condition: NotEmpty(\#PARAM\#) - Case: True Condition: Check(\#PARAM\#\_DEFAULT\_IM) - Case: False Parameters set: - \#PARAM\#\_DEFAULT\_IM (using PARAM) Condition: Check(\#PARAM\#\_DRAG\_IM) - Case: False Parameters set: - \#PARAM\#\_DRAG\_IM (using PARAM) - Case: False Condition: Test(\#PARAM\#\_DEFAULT\_IM, \#PARAM\#\_DRAG\_IM) - Case: True Condition: Valid(EMPTY\_IF\_NOT\_DECLARED) - Case: True Condition: NotEmpty(\#PARAM\#\_DEFAULT\_IM) - Case: False Parameters set: - \#PARAM\#\_DEFAULT\_IM Condition: NotEmpty(\#PARAM\#\_DRAG\_IM) - Case: False Parameters set: - \#PARAM\#\_DRAG\_IM - Case: False Condition: Valid(EMPTY\_IF\_NOT\_DECLARED) - Case: True Parameters set: - \#PARAM\#\_DEFAULT\_IM - \#PARAM\#\_DRAG\_IM [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html) - #### ASOBO\_GT\_MouseRect\_Impl Definition from XML <Template Name="ASOBO\_GT\_MouseRect\_Impl"> <MouseRect> <IMCursorsInstances> <IMDefault> <CursorLeft>\#LEFTARROW\_DEFAULT\_IM\#</CursorLeft> <CursorRight>\#RIGHTARROW\_DEFAULT\_IM\#</CursorRight> <CursorUp>\#UPARROW\_DEFAULT\_IM\#</CursorUp> <CursorDown>\#DOWNARROW\_DEFAULT\_IM\#</CursorDown> <CursorCenter>\#CENTER\_CURSOR\_DEFAULT\_IM\#</CursorCenter> <Cursor>\#CURSOR\_DEFAULT\_IM\#</Cursor> <CursorCenterRadius>\#CENTER\_RADIUS\_DEFAULT\_IM\#</CursorCenterRadius> </IMDefault> <IMDrag> <CursorLeft>\#LEFTARROW\_DRAG\_IM\#</CursorLeft> <CursorRight>\#RIGHTARROW\_DRAG\_IM\#</CursorRight> <CursorUp>\#UPARROW\_DRAG\_IM\#</CursorUp> <CursorDown>\#DOWNARROW\_DRAG\_IM\#</CursorDown> <CursorCenter>\#CENTER\_CURSOR\_DRAG\_IM\#</CursorCenter> <Cursor>\#CURSOR\_DRAG\_IM\#</Cursor> <CursorCenterRadius>\#CENTER\_RADIUS\_DRAG\_IM\#</CursorCenterRadius> </IMDrag> </IMCursorsInstances> <IMMouseFlagsInstances> <IMDefault>\#MOUSEFLAGS\_DEFAULT\_IM\#</IMDefault> <IMDrag>\#MOUSEFLAGS\_DRAG\_IM\#</IMDrag> </IMMouseFlagsInstances> <IMTooltipsInstances> <IMDefault> <HelpID>\#HELPID\#</HelpID> <TooltipID>\#TOOLTIPID\#</TooltipID> <Animated> <Condition Check="ANIMREF\_ID"> <AnimRefID>\#ANIMREF\_ID\#</AnimRefID> </Condition> <AnimCursor min="\#ANIMCURSOR\_MIN\#" max="\#ANIMCURSOR\_MAX\#">\#ANIMCURSOR\_DIR\#</AnimCursor> <Condition Check="ANIMTIP\_LOOP"> <AnimTooltipLoop>\#ANIMTIP\_LOOP\#</AnimTooltipLoop> </Condition> <Loop> <Setup> <Param>ID</Param> <From>0</From> <Inc>1</Inc> <While> <Arg NotEmpty="ANIMTIP\_\#ID\#"/> </While> </Setup> <Do> <Parameters Type="Default" Lifetime="Iteration"> <ANIMTIP\_\#ID\#\_ON\_PERCENT>False</ANIMTIP\_\#ID\#\_ON\_PERCENT> <TOOLTIP\_\#ID\#\_ON\_CURSOR/> <TOOLTIP\_\#ID\#\_ON\_HITBOX/> </Parameters> <Parameters Type="Override" Lifetime="Iteration"> <ANIMTIP\_ON\_PERCENT Process="Param">ANIMTIP\_\#ID\#\_ON\_PERCENT</ANIMTIP\_ON\_PERCENT> <TOOLTIP\_ON\_CURSOR Process="Param">ANIMTIP\_\#ID\#\_ON\_CURSOR</TOOLTIP\_ON\_CURSOR> <TOOLTIP\_ON\_HITBOX Process="Param">ANIMTIP\_\#ID\#\_ON\_HITBOX</TOOLTIP\_ON\_HITBOX> <ANIMTIP Process="Param">ANIMTIP\_\#ID\#</ANIMTIP> </Parameters> <AnimTooltip percent="\#ANIMTIP\_ON\_PERCENT\#" cursor="\#TOOLTIP\_ON\_CURSOR\#" hitbox="\#TOOLTIP\_ON\_HITBOX\#">\#ANIMTIP\#</AnimTooltip> </Do> </Loop> </Animated> </IMDefault> <IMDrag> <TooltipEntries Disabled="\#TOOLTIP\_DISABLED\#"> <TTTitle RPN="\#TOOLTIP\_TITLE\_IS\_DYNAMIC\#">\#TOOLTIP\_TITLE\#</TTTitle> <Loop> <Setup> <Param>ID</Param> <From>0</From> <Inc>1</Inc> <While> <Arg NotEmpty="TOOLTIP\_ENTRY\_\#ID\#"/> </While> </Setup> <Do> <Parameters Type="Override" Lifetime="Iteration"> <TT\_ID Process="Param">TOOLTIP\_ENTRY\_\#ID\#</TT\_ID> </Parameters> <TooltipEntry ID="\#TT\_ID\#"/> </Do> </Loop> </TooltipEntries> </IMDrag> </IMTooltipsInstances> <Disabled>\#MOUSERECT\_DISABLED\#</Disabled> <DisabledInVr>\#MOUSERECT\_DISABLED\_IN\_VR\#</DisabledInVr> <DisabledWithMotionControllers>\#MOUSERECT\_DISABLED\_WITH\_MOTION\_CONTROLLERS\#</DisabledWithMotionControllers> <Lock>\#DRAG\_IM\_LOCK\_ENABLED\#</Lock> <LockFlagsTemporary>\#TEMPORARY\_LOCK\_FLAGS\#</LockFlagsTemporary> <HighlightNodeId>\#HIGHLIGHT\_NODE\_ID\#</HighlightNodeId> <IgnoreZTest>\#MOUSERECT\_IGNORE\_ZTEST\#</IgnoreZTest> <PrioritizeVCockpits>\#MOUSERECT\_PRIORITIZE\_VCOCKPITS\#</PrioritizeVCockpits> <GroupID>\#INTERACTABLE\_GROUP\_ID\#</GroupID> <Switch> <Case NotEmpty="EVENTID"> <EventID>\#EVENTID\#</EventID> </Case> <Case Check="CALLBACKCODE\_DEFAULT\_IM"> <CallbackCode> <IMCodeInstances> <IMDefault>\#CALLBACKCODE\_DEFAULT\_IM\#</IMDefault> <IMDrag>\#CALLBACKCODE\_DRAG\_IM\#</IMDrag> </IMCodeInstances> <DragAnimName>\#DRAG\_ANIM\_NAME\#</DragAnimName> <DragNodeId>\#DRAG\_NODE\_ID\#</DragNodeId> <DragAnimSynced>\#DRAG\_ANIM\_SYNCED\#</DragAnimSynced> <DragUseAnimLag>\#DRAG\_USE\_ANIM\_LAG\#</DragUseAnimLag> <DragMode>\#DRAG\_MODE\#</DragMode> <DragAxis>\#DRAG\_AXIS\#</DragAxis> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <DragFlagsLockable>\#DRAG\_MOUSEFLAGS\_LOCKABLE\#</DragFlagsLockable> </CallbackCode> </Case> <Case Check="Y\_MOVEMENT"> <CallbackJumpDragging> <YMovement> <Delta>\#DRAG\_DELTA\#</Delta> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <EventIdInc>\#CLOCKWISE\_EVENTID\#</EventIdInc> <EventIdDec>\#ANTICLOCKWISE\_EVENTID\#</EventIdDec> </YMovement> <DragUseAnimLag>\#DRAG\_USE\_ANIM\_LAG\#</DragUseAnimLag> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <DragFlagsLockable>\#DRAG\_MOUSEFLAGS\_LOCKABLE\#</DragFlagsLockable> </CallbackJumpDragging> </Case> <Case Check="X\_MOVEMENT"> <CallbackJumpDragging> <XMovement> <Delta>\#DRAG\_DELTA\#</Delta> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <EventIdInc>\#CLOCKWISE\_EVENTID\#</EventIdInc> <EventIdDec>\#ANTICLOCKWISE\_EVENTID\#</EventIdDec> </XMovement> <DragUseAnimLag>\#DRAG\_USE\_ANIM\_LAG\#</DragUseAnimLag> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <DragFlagsLockable>\#DRAG\_MOUSEFLAGS\_LOCKABLE\#</DragFlagsLockable> </CallbackJumpDragging> </Case> <Case Check="CALLBACKDRAGGING"> <CallbackDragging> <Variable>\#DRAG\_SIMVAR\#</Variable> <Units>\#DRAG\_SIMVAR\_UNITS\#</Units> <Scale>\#DRAG\_SCALE\#</Scale> <XScale>\#DRAG\_AXIS\_X\_SCALE\#</XScale> <YScale>\#DRAG\_AXIS\_Y\_SCALE\#</YScale> <ZScale>\#DRAG\_AXIS\_Z\_SCALE\#</ZScale> <MinValue>\#DRAG\_MIN\_VALUE\#</MinValue> <MaxValue>\#DRAG\_MAX\_VALUE\#</MaxValue> <EventID>\#DRAG\_EVENTID\_SET\#</EventID> <IsRelative>\#DRAG\_IS\_RELATIVE\#</IsRelative> <DragAnimName>\#DRAG\_ANIM\_NAME\#</DragAnimName> <DragNodeId>\#DRAG\_NODE\_ID\#</DragNodeId> <DragAnimSynced>\#DRAG\_ANIM\_SYNCED\#</DragAnimSynced> <DragUseAnimLag>\#DRAG\_USE\_ANIM\_LAG\#</DragUseAnimLag> <DragMode>\#DRAG\_MODE\#</DragMode> <DragAxis>\#DRAG\_AXIS\#</DragAxis> <DragScalar>\#DRAG\_SCALAR\#</DragScalar> <DragFlagsLockable>\#DRAG\_MOUSEFLAGS\_LOCKABLE\#</DragFlagsLockable> </CallbackDragging> </Case> </Switch> </MouseRect> </Template> Parameters read: - LEFTARROW\_DEFAULT\_IM - RIGHTARROW\_DEFAULT\_IM - UPARROW\_DEFAULT\_IM - DOWNARROW\_DEFAULT\_IM - CENTER\_CURSOR\_DEFAULT\_IM - CURSOR\_DEFAULT\_IM - CENTER\_RADIUS\_DEFAULT\_IM - LEFTARROW\_DRAG\_IM - RIGHTARROW\_DRAG\_IM - UPARROW\_DRAG\_IM - DOWNARROW\_DRAG\_IM - CENTER\_CURSOR\_DRAG\_IM - CURSOR\_DRAG\_IM - CENTER\_RADIUS\_DRAG\_IM - MOUSEFLAGS\_DEFAULT\_IM - MOUSEFLAGS\_DRAG\_IM - HELPID - TOOLTIPID - ANIMCURSOR\_MIN - ANIMCURSOR\_MAX - ANIMCURSOR\_DIR - ID - ANIMTIP\_ON\_PERCENT - TOOLTIP\_ON\_CURSOR - TOOLTIP\_ON\_HITBOX - ANIMTIP - TOOLTIP\_DISABLED - TOOLTIP\_TITLE\_IS\_DYNAMIC - TOOLTIP\_TITLE - TT\_ID - MOUSERECT\_DISABLED - MOUSERECT\_DISABLED\_IN\_VR - MOUSERECT\_DISABLED\_WITH\_MOTION\_CONTROLLERS - DRAG\_IM\_LOCK\_ENABLED - TEMPORARY\_LOCK\_FLAGS - HIGHLIGHT\_NODE\_ID - INTERACTABLE\_GROUP\_ID Parameters set: - ID - ANIMTIP\_\#ID\#\_ON\_PERCENT - TOOLTIP\_\#ID\#\_ON\_CURSOR - TOOLTIP\_\#ID\#\_ON\_HITBOX - ANIMTIP\_ON\_PERCENT (using ID) - TOOLTIP\_ON\_CURSOR (using ID) - TOOLTIP\_ON\_HITBOX (using ID) - ANIMTIP (using ID) - TT\_ID (using ID) - IgnoreZTest (using MOUSERECT\_IGNORE\_ZTEST) - PrioritizeVCockpits (using MOUSERECT\_PRIORITIZE\_VCOCKPITS) Condition: Check(ANIMREF\_ID) - Case: True Parameters read: - ANIMREF\_ID Condition: Check(ANIMTIP\_LOOP) - Case: True Parameters read: - ANIMTIP\_LOOP Condition: Switch - Case: NotEmpty(EVENTID) Parameters read: - EVENTID - Case: Check(CALLBACKCODE\_DEFAULT\_IM) Parameters read: - CALLBACKCODE\_DEFAULT\_IM - CALLBACKCODE\_DRAG\_IM - DRAG\_ANIM\_NAME - DRAG\_NODE\_ID - DRAG\_ANIM\_SYNCED - DRAG\_USE\_ANIM\_LAG - DRAG\_MODE - DRAG\_AXIS - DRAG\_SCALAR - DRAG\_MOUSEFLAGS\_LOCKABLE - Case: Check(Y\_MOVEMENT) Parameters read: - Y\_MOVEMENT - DRAG\_DELTA - DRAG\_SCALAR - CLOCKWISE\_EVENTID - ANTICLOCKWISE\_EVENTID - DRAG\_USE\_ANIM\_LAG - DRAG\_MOUSEFLAGS\_LOCKABLE - Case: Check(X\_MOVEMENT) Parameters read: - X\_MOVEMENT - DRAG\_DELTA - DRAG\_SCALAR - CLOCKWISE\_EVENTID - ANTICLOCKWISE\_EVENTID - DRAG\_USE\_ANIM\_LAG - DRAG\_MOUSEFLAGS\_LOCKABLE - Case: Check(CALLBACKDRAGGING) Parameters read: - CALLBACKDRAGGING - DRAG\_SIMVAR - DRAG\_SIMVAR\_UNITS - DRAG\_SCALE - DRAG\_AXIS\_X\_SCALE - DRAG\_AXIS\_Y\_SCALE - DRAG\_AXIS\_Z\_SCALE - DRAG\_MIN\_VALUE - DRAG\_MAX\_VALUE - DRAG\_EVENTID\_SET - DRAG\_IS\_RELATIVE - DRAG\_ANIM\_NAME - DRAG\_NODE\_ID - DRAG\_ANIM\_SYNCED - DRAG\_USE\_ANIM\_LAG - DRAG\_MODE - DRAG\_AXIS - DRAG\_SCALAR - DRAG\_MOUSEFLAGS\_LOCKABLE [[Go back to top]](#top) [[Go back to index]](..\..\Template_Explorer.html)