[Go back to index]

Asobo\Generic\Complex\Joystick.xml

Source XML
<ModelBehaviors> <!-- Basic Joystick interaction (all or nothing (0, 1 or -1), no in between value) JOYSTICK_X_CODE_LEFT(code): code executed when joystick is orientated left JOYSTICK_X_CODE_RIGHT(code): code executed when joystick is orientated right JOYSTICK_Y_CODE_DOWN(code): code executed when joystick is orientated down JOYSTICK_Y_CODE_UP(code): code executed when joystick is orientated up --> <Template Name = "ASOBO_GT_Joystick_Interaction"> <DefaultTemplateParameters> <JOYSTICK_LEFT_SINGLE_CODE/> <JOYSTICK_RELEASE_CODE/> <UPDATE_FREQUENCY>5</UPDATE_FREQUENCY> <DOWN_TIME_BEFORE_REPEAT>0.5</DOWN_TIME_BEFORE_REPEAT> <CENTER_RADIUS>0.0025</CENTER_RADIUS> <JOYSTICK_X_CODE_LEFT></JOYSTICK_X_CODE_LEFT> <JOYSTICK_X_CODE_RIGHT></JOYSTICK_X_CODE_RIGHT> <JOYSTICK_Y_CODE_DOWN></JOYSTICK_Y_CODE_DOWN> <JOYSTICK_Y_CODE_UP></JOYSTICK_Y_CODE_UP> <VAR_NAME>XMLVAR_Interacting_With_Joystick#ID#</VAR_NAME> <THRESHOLD_X_INPUT>0.03</THRESHOLD_X_INPUT> <THRESHOLD_X_MOUSE>0.001</THRESHOLD_X_MOUSE> <THRESHOLD_Y_INPUT>0.03</THRESHOLD_Y_INPUT> <THRESHOLD_Y_MOUSE>0.001</THRESHOLD_Y_MOUSE> </DefaultTemplateParameters> <OverrideTemplateParameters> <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> </OverrideTemplateParameters> <Update frequency="#UPDATE_FREQUENCY#" InteractionModel="Default"> (I:#VAR_NAME#) if{ (I:#JOYSTICK_ID#Interacting_With_X_Axis) if{ (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) (I:#JOYSTICK_ID#Interacting_RepeatTime) (E:SIMULATION TIME, seconds) &lt; and if{ (I:#JOYSTICK_ID#_Panning_X_Axis_Delta) 0 &lt; if{ #JOYSTICK_X_CODE_LEFT# } els{ #JOYSTICK_X_CODE_RIGHT# } } } els{ (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) (I:#JOYSTICK_ID#Interacting_RepeatTime) (E:SIMULATION TIME, seconds) &lt; and if{ (I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) 0 &lt; if{ #JOYSTICK_Y_CODE_DOWN# } els{ #JOYSTICK_Y_CODE_UP# } } } } </Update> <UseTemplate Name="ASOBO_GT_MouseRect"> <CALLBACKCODE_DEFAULT_IM> (M:Event) 'LeftSingle' scmi 0 == if{ 1 (&gt;I:#VAR_NAME#) (E:SIMULATION TIME, seconds) #DOWN_TIME_BEFORE_REPEAT# + (&gt;I:#JOYSTICK_ID#Interacting_RepeatTime) 1 sp0 #JOYSTICK_LEFT_SINGLE_CODE# g1 } els{ (M:Event) 'LeftRelease' scmi 0 == if{ 0 (&gt;I:#VAR_NAME#) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) #JOYSTICK_RELEASE_CODE# } els{ (M:Event) 'LeftDrag' scmi 0 == if{ g1 } } } quit :1 (M:RelativeX) abs (M:RelativeY) abs &gt; (&gt;I:#JOYSTICK_ID#Interacting_With_X_Axis) (M:RelativeX) abs #CENTER_RADIUS# &gt; (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) (M:RelativeY) abs #CENTER_RADIUS# &gt; (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) -1 1 (M:RelativeX) 0 &lt; ? (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) -1 1 (M:RelativeY) 0 &lt; ? (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) l0 if{ (I:#JOYSTICK_ID#Interacting_With_X_Axis) if{ (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) if{ (I:#JOYSTICK_ID#_Panning_X_Axis_Delta) 0 &lt; if{ #JOYSTICK_X_CODE_LEFT# } els{ #JOYSTICK_X_CODE_RIGHT# } } } els{ (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) if{ (I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) 0 &lt; if{ #JOYSTICK_Y_CODE_DOWN# } els{ #JOYSTICK_Y_CODE_UP# } } } } </CALLBACKCODE_DEFAULT_IM> <Condition Valid="NO_DRAG_IM_INTERACTION"> <True> <CALLBACKCODE_DRAG_IM>quit</CALLBACKCODE_DRAG_IM> <DISABLE_INTERACTION_LOCK>True</DISABLE_INTERACTION_LOCK> </True> <False> <CALLBACKCODE_DRAG_IM> (M:Event) 'LeftSingle' scmi 0 == if{ #JOYSTICK_LEFT_SINGLE_CODE# (M:RelativeX) (&gt;O:_LastX) (M:RelativeY) (&gt;O:_LastY) 1 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 1 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) } els{ (M:Event) 'LeftRelease' scmi 0 == if{ #JOYSTICK_RELEASE_CODE# 0 (&gt;O:_LastX) 0 (&gt;O:_LastY) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) } els{ (M:Event) 'LeftDrag' scmi 0 == if{ g1 } } } quit :1 (M:RelativeX) (O:_LastX) - sp0 #THRESHOLD_X# (&gt;O:_InputThresholdX) l0 (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) l0 abs (O:_InputThresholdX) &gt; if{ l0 (O:_InputThresholdX) / abs flr sp1 l0 (O:_InputThresholdX) % abs sp2 :1 (* for loop *) l1 0 &lt;= if{ g2 } l1 -- sp1 l0 0 &gt; if{ #JOYSTICK_X_CODE_RIGHT# } els{ #JOYSTICK_X_CODE_LEFT# } g1 :2 l0 0 &gt; if{ (M:RelativeX) l2 - (&gt;O:_LastX) } els{ (M:RelativeX) l2 + (&gt;O:_LastX) } } (M:RelativeY) (O:_LastY) - sp0 #THRESHOLD_Y# (&gt;O:_InputThresholdY) l0 (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) l0 abs (O:_InputThresholdY) &gt; if{ l0 (O:_InputThresholdY) / abs flr sp1 l0 (O:_InputThresholdY) % abs sp2 :3 (* for loop *) l1 0 &lt;= if{ g4 } l1 -- sp1 l0 0 &gt; if{ #JOYSTICK_Y_CODE_UP# } els{ #JOYSTICK_Y_CODE_DOWN# } g3 :4 l0 0 &gt; if{ (M:RelativeY) l2 - (&gt;O:_LastY) } els{ (M:RelativeY) l2 + (&gt;O:_LastY) } } </CALLBACKCODE_DRAG_IM> </False> </Condition> <MOUSEFLAGS>LeftAll</MOUSEFLAGS> </UseTemplate> </Template> <Template Name = "ASOBO_GT_Joystick"> <Parameters Type="Default"> <ANIM_NAME_L_R>Joystick_X_Axis</ANIM_NAME_L_R> <ANIM_NAME_DN_UP>Joystick_Y_Axis</ANIM_NAME_DN_UP> <LEFTARROW>LeftArrow</LEFTARROW> <RIGHTARROW>RightArrow</RIGHTARROW> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> <CENTER_CURSOR>Hand</CENTER_CURSOR> <ID>1</ID> <WWISE_JOYSTICK_EVENT_L>generic_joystick_L</WWISE_JOYSTICK_EVENT_L> <WWISE_JOYSTICK_EVENT_R>generic_joystick_R</WWISE_JOYSTICK_EVENT_R > <WWISE_JOYSTICK_EVENT_UP>generic_joystick_UP</WWISE_JOYSTICK_EVENT_UP> <WWISE_JOYSTICK_EVENT_DN>generic_joystick_DN</WWISE_JOYSTICK_EVENT_DN> </Parameters> <Parameters Type="Override"> <JOYSTICK_ID>Joystick_#ID#</JOYSTICK_ID> </Parameters> <Condition Valid="NO_ANIMATION"> <False> <UseTemplate Name="ASOBO_GT_Anim_Code"> <ANIM_CODE>(I:#JOYSTICK_ID#_Panning_X_Axis_Delta) (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) * 50 * 50 +</ANIM_CODE> <ANIM_LENGTH>100</ANIM_LENGTH> <ANIM_NAME>#ANIM_NAME_L_R#</ANIM_NAME> </UseTemplate> <UseTemplate Name="ASOBO_GT_Anim_Code"> <ANIM_CODE>(I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) * 50 * 50 +</ANIM_CODE> <ANIM_LENGTH>100</ANIM_LENGTH> <ANIM_NAME>#ANIM_NAME_DN_UP#</ANIM_NAME> </UseTemplate> <UseTemplate Name="ASOBO_GT_AnimTriggers_2SoundEvents"> <ANIM_NAME>#ANIM_NAME_L_R#</ANIM_NAME> <WWISE_EVENT_1>#WWISE_JOYSTICK_EVENT_L#</WWISE_EVENT_1> <DIRECTION_1>Both</DIRECTION_1> <WWISE_EVENT_2>#WWISE_JOYSTICK_EVENT_R#</WWISE_EVENT_2> <DIRECTION_2>Both</DIRECTION_2> </UseTemplate> <UseTemplate Name="ASOBO_GT_AnimTriggers_2SoundEvents"> <ANIM_NAME>#ANIM_NAME_DN_UP#</ANIM_NAME> <WWISE_EVENT_1>#WWISE_JOYSTICK_EVENT_DN#</WWISE_EVENT_1> <DIRECTION_1>Both</DIRECTION_1> <WWISE_EVENT_2>#WWISE_JOYSTICK_EVENT_UP#</WWISE_EVENT_2> <DIRECTION_2>Both</DIRECTION_2> </UseTemplate> </False> </Condition> <UseTemplate Name="ASOBO_GT_Joystick_Interaction"> </UseTemplate> </Template> <!-- Pan only interaction --> <Template Name = "ASOBO_GT_Joystick_Interaction_Pan"> <Parameters Type="Default"> <ID>1</ID> <WWISE_JOYSTICK_EVENT_L>generic_joystick_L</WWISE_JOYSTICK_EVENT_L> <WWISE_JOYSTICK_EVENT_R>generic_joystick_R</WWISE_JOYSTICK_EVENT_R > <WWISE_JOYSTICK_EVENT_UP>generic_joystick_UP</WWISE_JOYSTICK_EVENT_UP> <WWISE_JOYSTICK_EVENT_DN>generic_joystick_DN</WWISE_JOYSTICK_EVENT_DN> <JOYSTICK_X_CODE_LEFT></JOYSTICK_X_CODE_LEFT> <JOYSTICK_X_CODE_RIGHT></JOYSTICK_X_CODE_RIGHT> <JOYSTICK_Y_CODE_DOWN></JOYSTICK_Y_CODE_DOWN> <JOYSTICK_Y_CODE_UP></JOYSTICK_Y_CODE_UP> <THRESHOLD_X_INPUT>0.03</THRESHOLD_X_INPUT> <THRESHOLD_X_MOUSE>0.001</THRESHOLD_X_MOUSE> <THRESHOLD_Y_INPUT>0.03</THRESHOLD_Y_INPUT> <THRESHOLD_Y_MOUSE>0.001</THRESHOLD_Y_MOUSE> </Parameters> <UseTemplate Name="ASOBO_GT_Joystick"> <NO_ANIMATION>True</NO_ANIMATION> <NO_HIGHLIGHT_NODE_ID>True</NO_HIGHLIGHT_NODE_ID> <NO_DRAG_IM_INTERACTION>True</NO_DRAG_IM_INTERACTION> <UPARROW_DRAG_IM/> <DOWNARROW_DRAG_IM/> <LEFTARROW_DRAG_IM/> <RIGHTARROW_DRAG_IM/> <CURSOR_CENTER_DRAG_IM/> <CURSOR_DRAG_IM>Normal</CURSOR_DRAG_IM> </UseTemplate> </Template> <!-- Configurable, add Rotate and Push in addition to pan --> <Template Name = "ASOBO_GT_Joystick_Interaction_Knob"> <Parameters Type="Default"> <Switch Param="JOYSTICK_INTERACTION"> <Case Value="PAN_ONLY"> <ANIM_HANDLED_SEPARATELY>True</ANIM_HANDLED_SEPARATELY> </Case> <Default> <ANIM_NAME_KNOB>Joystick_Knob</ANIM_NAME_KNOB> <ANIM_NAME_PUSH>Joystick_Push</ANIM_NAME_PUSH> </Default> </Switch> <ANIM_NAME_L_R>Joystick_X_Axis</ANIM_NAME_L_R> <ANIM_NAME_DN_UP>Joystick_Y_Axis</ANIM_NAME_DN_UP> <KNOB_TURN_SPEED>10</KNOB_TURN_SPEED> <ID>1</ID> <WWISE_JOYSTICK_EVENT_L>generic_joystick_L</WWISE_JOYSTICK_EVENT_L> <WWISE_JOYSTICK_EVENT_R>generic_joystick_R</WWISE_JOYSTICK_EVENT_R > <WWISE_JOYSTICK_EVENT_UP>generic_joystick_UP</WWISE_JOYSTICK_EVENT_UP> <WWISE_JOYSTICK_EVENT_DN>generic_joystick_DN</WWISE_JOYSTICK_EVENT_DN> <WHEEL_UP_CODE/> <WHEEL_DOWN_CODE/> <LEFT_SINGLE_CODE_DEFAULT_IM/> <LEFT_RELEASE_CODE_DEFAULT_IM/> <LEFT_SINGLE_CODE_DRAG_IM/> <LEFT_RELEASE_CODE_DRAG_IM/> <JOYSTICK_X_CODE_LEFT/> <JOYSTICK_X_CODE_RIGHT/> <JOYSTICK_Y_CODE_DOWN/> <JOYSTICK_Y_CODE_UP/> <THRESHOLD_X_INPUT>0.03</THRESHOLD_X_INPUT> <THRESHOLD_X_MOUSE>0.001</THRESHOLD_X_MOUSE> <THRESHOLD_Y_INPUT>0.03</THRESHOLD_Y_INPUT> <THRESHOLD_Y_MOUSE>0.001</THRESHOLD_Y_MOUSE> <TIMEOUT_DELAY_RESET_AXIS>0.1</TIMEOUT_DELAY_RESET_AXIS> <IM_DRAG_ADDITIONAL_EVENT_HANDLING/> <USE_DEFAULT_ANIMATION>True</USE_DEFAULT_ANIMATION> </Parameters> <Parameters Type="Override"> <JOYSTICK_ID>Joystick_#ID#</JOYSTICK_ID> </Parameters> <Parameters Type="Override"> <SAVE_TIME_LAST_X_UPDATE>(E:SIMULATION TIME, seconds) #TIMEOUT_DELAY_RESET_AXIS# + (&gt;O:#JOYSTICK_ID#_X_NextTimeout)</SAVE_TIME_LAST_X_UPDATE> <SAVE_TIME_LAST_Y_UPDATE>(E:SIMULATION TIME, seconds) #TIMEOUT_DELAY_RESET_AXIS# + (&gt;O:#JOYSTICK_ID#_Y_NextTimeout)</SAVE_TIME_LAST_Y_UPDATE> </Parameters> <Parameters Type="Default"> <Condition Valid="USE_DEFAULT_ANIMATION"> <ANIM_CODE_AXIS_X>(I:#JOYSTICK_ID#_Panning_X_Axis_Delta) (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) * 50 * 50 +</ANIM_CODE_AXIS_X> <ANIM_CODE_AXIS_Y>(I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) * 50 * 50 +</ANIM_CODE_AXIS_Y> </Condition> <Switch Param="JOYSTICK_INTERACTION"> <Case Value="PAN_ONLY"> <MOUSEFLAGS_DRAG_IM>LeftAll+Lock+Unlock</MOUSEFLAGS_DRAG_IM> <!-- PREVENT ENTERING DEFAULT STATE (creating ROTATE and PUSH events) --> </Case> <Default> <CLOCKWISE_CODE>#WHEEL_UP_CODE#</CLOCKWISE_CODE> <ANTICLOCKWISE_CODE>#WHEEL_DOWN_CODE#</ANTICLOCKWISE_CODE> <LEFT_SINGLE_CODE>#LEFT_SINGLE_CODE_DEFAULT_IM#</LEFT_SINGLE_CODE> <LEFT_RELEASE_CODE>#LEFT_RELEASE_CODE_DEFAULT_IM#</LEFT_RELEASE_CODE> </Default> </Switch> <NO_PUSH_PULL_LOCK>True</NO_PUSH_PULL_LOCK> <PRE_DRAG_UPDATE/> <POST_DRAG_UPDATE/> </Parameters> <Parameters Type="Override"> <Condition Valid="USE_PAD_DRAG_IM_LOCK"> <True> <PRE_DRAG_UPDATE>#PRE_DRAG_UPDATE# (O:_ResetDragTime) (E:SIMULATION TIME, second) &lt; if{ 0 (&gt;O:_IsLimited) } (E:SIMULATION TIME, second) @DragLockResetTimer + (&gt;O:_ResetDragTime) (O:_IsLimited) if{ (M:RelativeX) (&gt;O:_LastX) (M:RelativeY) (&gt;O:_LastY) } els{ </PRE_DRAG_UPDATE> <POST_DRAG_UPDATE>} #POST_DRAG_UPDATE#</POST_DRAG_UPDATE> <LEFT_SINGLE_CODE_DRAG_IM>#LEFT_SINGLE_CODE_DRAG_IM# 0 (&gt;O:_IsLimited)</LEFT_SINGLE_CODE_DRAG_IM> </True> </Condition> </Parameters> <Parameters Type="Default"> <Condition Valid="USE_DEFAULT_ANIMATION"> <True> <CODE_UP>#JOYSTICK_Y_CODE_UP# 1 (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) #SAVE_TIME_LAST_Y_UPDATE#</CODE_UP> <CODE_DN>#JOYSTICK_Y_CODE_DOWN# -1 (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) #SAVE_TIME_LAST_Y_UPDATE#</CODE_DN> <CODE_LEFT>#JOYSTICK_X_CODE_LEFT# -1 (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) #SAVE_TIME_LAST_X_UPDATE#</CODE_LEFT> <CODE_RIGHT>#JOYSTICK_X_CODE_RIGHT# 1 (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) #SAVE_TIME_LAST_X_UPDATE#</CODE_RIGHT> <ON_DOWN_EVENT> #LEFT_SINGLE_CODE_DRAG_IM# 1 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 1 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) </ON_DOWN_EVENT> <ON_UP_EVENT> #LEFT_RELEASE_CODE_DRAG_IM# 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) </ON_UP_EVENT> </True> <False> <CODE_UP>#JOYSTICK_Y_CODE_UP#</CODE_UP> <CODE_DN>#JOYSTICK_Y_CODE_DOWN#</CODE_DN> <CODE_LEFT>#JOYSTICK_X_CODE_LEFT#</CODE_LEFT> <CODE_RIGHT>#JOYSTICK_X_CODE_RIGHT#</CODE_RIGHT> <ON_DOWN_EVENT>#LEFT_SINGLE_CODE_DRAG_IM#</ON_DOWN_EVENT> <ON_UP_EVENT>#LEFT_RELEASE_CODE_DRAG_IM#</ON_UP_EVENT> </False> </Condition> </Parameters> <Condition Valid="USE_DEFAULT_ANIMATION"> <UseTemplate Name="ASOBO_GT_Update"> <FREQUENCY Process="Int">#TIMEOUT_DELAY_RESET_AXIS# 0 &gt; if{ 1 #TIMEOUT_DELAY_RESET_AXIS# / } els{ 10 }</FREQUENCY> <UPDATE_CODE> (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) if{ (E:SIMULATION TIME, seconds) (O:#JOYSTICK_ID#_X_NextTimeout) &gt; if{ #SAVE_TIME_LAST_X_UPDATE# 0 (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) } } (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) if{ (E:SIMULATION TIME, seconds) (O:#JOYSTICK_ID#_Y_NextTimeout) &gt; if{ #SAVE_TIME_LAST_Y_UPDATE# 0 (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) } } </UPDATE_CODE> <INTERACTION_MODEL>Drag</INTERACTION_MODEL> </UseTemplate> </Condition> <UseTemplate Name="ASOBO_GT_Knob_Infinite_Push"> <CURSOR_LEFT>TurnLeft</CURSOR_LEFT> <CURSOR_RIGHT>TurnRight</CURSOR_RIGHT> <CENTER_CURSOR>Hand</CENTER_CURSOR> </UseTemplate> <UseTemplate Name="ASOBO_GT_Anim_Code"> <ANIM_CODE>#ANIM_CODE_AXIS_X#</ANIM_CODE> <ANIM_LENGTH>100</ANIM_LENGTH> <ANIM_NAME>#ANIM_NAME_L_R#</ANIM_NAME> <Condition Valid="INVERT_ANIM_L_R"> <INVERT_ANIM>True</INVERT_ANIM> </Condition> </UseTemplate> <UseTemplate Name="ASOBO_GT_Anim_Code"> <ANIM_CODE>#ANIM_CODE_AXIS_Y#</ANIM_CODE> <ANIM_LENGTH>100</ANIM_LENGTH> <ANIM_NAME>#ANIM_NAME_DN_UP#</ANIM_NAME> <Condition Valid="INVERT_ANIM_DN_UP"> <INVERT_ANIM>True</INVERT_ANIM> </Condition> </UseTemplate> <UseTemplate Name="ASOBO_GT_AnimTriggers_2SoundEvents"> <ANIM_NAME>#ANIM_NAME_L_R#</ANIM_NAME> <WWISE_EVENT_1>#WWISE_JOYSTICK_EVENT_L#</WWISE_EVENT_1> <DIRECTION_1>Both</DIRECTION_1> <WWISE_EVENT_2>#WWISE_JOYSTICK_EVENT_R#</WWISE_EVENT_2> <DIRECTION_2>Both</DIRECTION_2> </UseTemplate> <UseTemplate Name="ASOBO_GT_AnimTriggers_2SoundEvents"> <ANIM_NAME>#ANIM_NAME_DN_UP#</ANIM_NAME> <WWISE_EVENT_1>#WWISE_JOYSTICK_EVENT_DN#</WWISE_EVENT_1> <DIRECTION_1>Both</DIRECTION_1> <WWISE_EVENT_2>#WWISE_JOYSTICK_EVENT_UP#</WWISE_EVENT_2> <DIRECTION_2>Both</DIRECTION_2> </UseTemplate> </Template> </ModelBehaviors>

Templates

Template list
  • ASOBO_GT_Joystick_Interaction

    Definition from XML
    <Template Name="ASOBO_GT_Joystick_Interaction"> <DefaultTemplateParameters> <JOYSTICK_LEFT_SINGLE_CODE/> <JOYSTICK_RELEASE_CODE/> <UPDATE_FREQUENCY>5</UPDATE_FREQUENCY> <DOWN_TIME_BEFORE_REPEAT>0.5</DOWN_TIME_BEFORE_REPEAT> <CENTER_RADIUS>0.0025</CENTER_RADIUS> <JOYSTICK_X_CODE_LEFT/> <JOYSTICK_X_CODE_RIGHT/> <JOYSTICK_Y_CODE_DOWN/> <JOYSTICK_Y_CODE_UP/> <VAR_NAME>XMLVAR_Interacting_With_Joystick#ID#</VAR_NAME> <THRESHOLD_X_INPUT>0.03</THRESHOLD_X_INPUT> <THRESHOLD_X_MOUSE>0.001</THRESHOLD_X_MOUSE> <THRESHOLD_Y_INPUT>0.03</THRESHOLD_Y_INPUT> <THRESHOLD_Y_MOUSE>0.001</THRESHOLD_Y_MOUSE> </DefaultTemplateParameters> <OverrideTemplateParameters> <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> </OverrideTemplateParameters> <Update frequency="#UPDATE_FREQUENCY#" InteractionModel="Default"> (I:#VAR_NAME#) if{ (I:#JOYSTICK_ID#Interacting_With_X_Axis) if{ (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) (I:#JOYSTICK_ID#Interacting_RepeatTime) (E:SIMULATION TIME, seconds) &lt; and if{ (I:#JOYSTICK_ID#_Panning_X_Axis_Delta) 0 &lt; if{ #JOYSTICK_X_CODE_LEFT# } els{ #JOYSTICK_X_CODE_RIGHT# } } } els{ (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) (I:#JOYSTICK_ID#Interacting_RepeatTime) (E:SIMULATION TIME, seconds) &lt; and if{ (I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) 0 &lt; if{ #JOYSTICK_Y_CODE_DOWN# } els{ #JOYSTICK_Y_CODE_UP# } } } } </Update> <UseTemplate Name="ASOBO_GT_MouseRect"> <CALLBACKCODE_DEFAULT_IM> (M:Event) &apos;LeftSingle&apos; scmi 0 == if{ 1 (&gt;I:#VAR_NAME#) (E:SIMULATION TIME, seconds) #DOWN_TIME_BEFORE_REPEAT# + (&gt;I:#JOYSTICK_ID#Interacting_RepeatTime) 1 sp0 #JOYSTICK_LEFT_SINGLE_CODE# g1 } els{ (M:Event) &apos;LeftRelease&apos; scmi 0 == if{ 0 (&gt;I:#VAR_NAME#) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) #JOYSTICK_RELEASE_CODE# } els{ (M:Event) &apos;LeftDrag&apos; scmi 0 == if{ g1 } } } quit :1 (M:RelativeX) abs (M:RelativeY) abs &gt; (&gt;I:#JOYSTICK_ID#Interacting_With_X_Axis) (M:RelativeX) abs #CENTER_RADIUS# &gt; (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) (M:RelativeY) abs #CENTER_RADIUS# &gt; (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) -1 1 (M:RelativeX) 0 &lt; ? (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) -1 1 (M:RelativeY) 0 &lt; ? (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) l0 if{ (I:#JOYSTICK_ID#Interacting_With_X_Axis) if{ (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) if{ (I:#JOYSTICK_ID#_Panning_X_Axis_Delta) 0 &lt; if{ #JOYSTICK_X_CODE_LEFT# } els{ #JOYSTICK_X_CODE_RIGHT# } } } els{ (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) if{ (I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) 0 &lt; if{ #JOYSTICK_Y_CODE_DOWN# } els{ #JOYSTICK_Y_CODE_UP# } } } } </CALLBACKCODE_DEFAULT_IM> <Condition Valid="NO_DRAG_IM_INTERACTION"> <True> <CALLBACKCODE_DRAG_IM>quit</CALLBACKCODE_DRAG_IM> <DISABLE_INTERACTION_LOCK>True</DISABLE_INTERACTION_LOCK> </True> <False> <CALLBACKCODE_DRAG_IM> (M:Event) &apos;LeftSingle&apos; scmi 0 == if{ #JOYSTICK_LEFT_SINGLE_CODE# (M:RelativeX) (&gt;O:_LastX) (M:RelativeY) (&gt;O:_LastY) 1 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 1 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) } els{ (M:Event) &apos;LeftRelease&apos; scmi 0 == if{ #JOYSTICK_RELEASE_CODE# 0 (&gt;O:_LastX) 0 (&gt;O:_LastY) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) } els{ (M:Event) &apos;LeftDrag&apos; scmi 0 == if{ g1 } } } quit :1 (M:RelativeX) (O:_LastX) - sp0 #THRESHOLD_X# (&gt;O:_InputThresholdX) l0 (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) l0 abs (O:_InputThresholdX) &gt; if{ l0 (O:_InputThresholdX) / abs flr sp1 l0 (O:_InputThresholdX) % abs sp2 :1 (* for loop *) l1 0 &lt;= if{ g2 } l1 -- sp1 l0 0 &gt; if{ #JOYSTICK_X_CODE_RIGHT# } els{ #JOYSTICK_X_CODE_LEFT# } g1 :2 l0 0 &gt; if{ (M:RelativeX) l2 - (&gt;O:_LastX) } els{ (M:RelativeX) l2 + (&gt;O:_LastX) } } (M:RelativeY) (O:_LastY) - sp0 #THRESHOLD_Y# (&gt;O:_InputThresholdY) l0 (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) l0 abs (O:_InputThresholdY) &gt; if{ l0 (O:_InputThresholdY) / abs flr sp1 l0 (O:_InputThresholdY) % abs sp2 :3 (* for loop *) l1 0 &lt;= if{ g4 } l1 -- sp1 l0 0 &gt; if{ #JOYSTICK_Y_CODE_UP# } els{ #JOYSTICK_Y_CODE_DOWN# } g3 :4 l0 0 &gt; if{ (M:RelativeY) l2 - (&gt;O:_LastY) } els{ (M:RelativeY) l2 + (&gt;O:_LastY) } } </CALLBACKCODE_DRAG_IM> </False> </Condition> <MOUSEFLAGS>LeftAll</MOUSEFLAGS> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • JOYSTICK_LEFT_SINGLE_CODE
      • JOYSTICK_RELEASE_CODE
      • UPDATE_FREQUENCY
      • DOWN_TIME_BEFORE_REPEAT
      • CENTER_RADIUS
      • JOYSTICK_X_CODE_LEFT
      • JOYSTICK_X_CODE_RIGHT
      • JOYSTICK_Y_CODE_DOWN
      • JOYSTICK_Y_CODE_UP
      • VAR_NAME (using ID)
      • THRESHOLD_X_INPUT
      • THRESHOLD_X_MOUSE
      • THRESHOLD_Y_INPUT
      • THRESHOLD_Y_MOUSE
    • Override

      Parameters set:

      • THRESHOLD_X (using THRESHOLD_X_INPUT, THRESHOLD_X_MOUSE)
      • THRESHOLD_Y (using THRESHOLD_Y_INPUT, THRESHOLD_Y_MOUSE)

    Parameters read:

    • UPDATE_FREQUENCY
    • VAR_NAME
    • JOYSTICK_ID
    • JOYSTICK_X_CODE_LEFT
    • JOYSTICK_X_CODE_RIGHT
    • JOYSTICK_Y_CODE_DOWN
    • JOYSTICK_Y_CODE_UP

    Templates used:

    • ASOBO_GT_MouseRect

      Parameters set:

      • CALLBACKCODE_DEFAULT_IM (using VAR_NAME, DOWN_TIME_BEFORE_REPEAT, JOYSTICK_ID, JOYSTICK_LEFT_SINGLE_CODE, JOYSTICK_RELEASE_CODE, CENTER_RADIUS, JOYSTICK_X_CODE_LEFT, JOYSTICK_X_CODE_RIGHT, JOYSTICK_Y_CODE_DOWN, JOYSTICK_Y_CODE_UP)
      • MOUSEFLAGS

      Condition: Valid(NO_DRAG_IM_INTERACTION)

      • Case: True

        Parameters set:

        • CALLBACKCODE_DRAG_IM
        • DISABLE_INTERACTION_LOCK
      • Case: False

        Parameters set:

        • CALLBACKCODE_DRAG_IM (using JOYSTICK_LEFT_SINGLE_CODE, JOYSTICK_ID, JOYSTICK_RELEASE_CODE, THRESHOLD_X, JOYSTICK_X_CODE_RIGHT, JOYSTICK_X_CODE_LEFT, THRESHOLD_Y, JOYSTICK_Y_CODE_UP, JOYSTICK_Y_CODE_DOWN)
  • ASOBO_GT_Joystick

    Definition from XML
    <Template Name="ASOBO_GT_Joystick"> <Parameters Type="Default"> <ANIM_NAME_L_R>Joystick_X_Axis</ANIM_NAME_L_R> <ANIM_NAME_DN_UP>Joystick_Y_Axis</ANIM_NAME_DN_UP> <LEFTARROW>LeftArrow</LEFTARROW> <RIGHTARROW>RightArrow</RIGHTARROW> <UPARROW>UpArrow</UPARROW> <DOWNARROW>DownArrow</DOWNARROW> <CENTER_CURSOR>Hand</CENTER_CURSOR> <ID>1</ID> <WWISE_JOYSTICK_EVENT_L>generic_joystick_L</WWISE_JOYSTICK_EVENT_L> <WWISE_JOYSTICK_EVENT_R>generic_joystick_R</WWISE_JOYSTICK_EVENT_R> <WWISE_JOYSTICK_EVENT_UP>generic_joystick_UP</WWISE_JOYSTICK_EVENT_UP> <WWISE_JOYSTICK_EVENT_DN>generic_joystick_DN</WWISE_JOYSTICK_EVENT_DN> </Parameters> <Parameters Type="Override"> <JOYSTICK_ID>Joystick_#ID#</JOYSTICK_ID> </Parameters> <Condition Valid="NO_ANIMATION"> <False> <UseTemplate Name="ASOBO_GT_Anim_Code"> <ANIM_CODE>(I:#JOYSTICK_ID#_Panning_X_Axis_Delta) (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) * 50 * 50 +</ANIM_CODE> <ANIM_LENGTH>100</ANIM_LENGTH> <ANIM_NAME>#ANIM_NAME_L_R#</ANIM_NAME> </UseTemplate> <UseTemplate Name="ASOBO_GT_Anim_Code"> <ANIM_CODE>(I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) * 50 * 50 +</ANIM_CODE> <ANIM_LENGTH>100</ANIM_LENGTH> <ANIM_NAME>#ANIM_NAME_DN_UP#</ANIM_NAME> </UseTemplate> <UseTemplate Name="ASOBO_GT_AnimTriggers_2SoundEvents"> <ANIM_NAME>#ANIM_NAME_L_R#</ANIM_NAME> <WWISE_EVENT_1>#WWISE_JOYSTICK_EVENT_L#</WWISE_EVENT_1> <DIRECTION_1>Both</DIRECTION_1> <WWISE_EVENT_2>#WWISE_JOYSTICK_EVENT_R#</WWISE_EVENT_2> <DIRECTION_2>Both</DIRECTION_2> </UseTemplate> <UseTemplate Name="ASOBO_GT_AnimTriggers_2SoundEvents"> <ANIM_NAME>#ANIM_NAME_DN_UP#</ANIM_NAME> <WWISE_EVENT_1>#WWISE_JOYSTICK_EVENT_DN#</WWISE_EVENT_1> <DIRECTION_1>Both</DIRECTION_1> <WWISE_EVENT_2>#WWISE_JOYSTICK_EVENT_UP#</WWISE_EVENT_2> <DIRECTION_2>Both</DIRECTION_2> </UseTemplate> </False> </Condition> <UseTemplate Name="ASOBO_GT_Joystick_Interaction"/> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • ANIM_NAME_L_R
      • ANIM_NAME_DN_UP
      • LEFTARROW
      • RIGHTARROW
      • UPARROW
      • DOWNARROW
      • CENTER_CURSOR
      • ID
      • WWISE_JOYSTICK_EVENT_L
      • WWISE_JOYSTICK_EVENT_R
      • WWISE_JOYSTICK_EVENT_UP
      • WWISE_JOYSTICK_EVENT_DN
    • Override

      Parameters set:

      • JOYSTICK_ID (using ID)

    Templates used:

    Condition: Valid(NO_ANIMATION)

    • Case: False

      Templates used:

      • ASOBO_GT_Anim_Code

        Parameters set:

        • ANIM_CODE (using JOYSTICK_ID)
        • ANIM_LENGTH
        • ANIM_NAME (using ANIM_NAME_L_R)
      • ASOBO_GT_Anim_Code

        Parameters set:

        • ANIM_CODE (using JOYSTICK_ID)
        • ANIM_LENGTH
        • ANIM_NAME (using ANIM_NAME_DN_UP)
      • ASOBO_GT_AnimTriggers_2SoundEvents

        Parameters set:

        • ANIM_NAME (using ANIM_NAME_L_R)
        • WWISE_EVENT_1 (using WWISE_JOYSTICK_EVENT_L)
        • DIRECTION_1
        • WWISE_EVENT_2 (using WWISE_JOYSTICK_EVENT_R)
        • DIRECTION_2
      • ASOBO_GT_AnimTriggers_2SoundEvents

        Parameters set:

        • ANIM_NAME (using ANIM_NAME_DN_UP)
        • WWISE_EVENT_1 (using WWISE_JOYSTICK_EVENT_DN)
        • DIRECTION_1
        • WWISE_EVENT_2 (using WWISE_JOYSTICK_EVENT_UP)
        • DIRECTION_2
  • ASOBO_GT_Joystick_Interaction_Pan

    Definition from XML
    <Template Name="ASOBO_GT_Joystick_Interaction_Pan"> <Parameters Type="Default"> <ID>1</ID> <WWISE_JOYSTICK_EVENT_L>generic_joystick_L</WWISE_JOYSTICK_EVENT_L> <WWISE_JOYSTICK_EVENT_R>generic_joystick_R</WWISE_JOYSTICK_EVENT_R> <WWISE_JOYSTICK_EVENT_UP>generic_joystick_UP</WWISE_JOYSTICK_EVENT_UP> <WWISE_JOYSTICK_EVENT_DN>generic_joystick_DN</WWISE_JOYSTICK_EVENT_DN> <JOYSTICK_X_CODE_LEFT/> <JOYSTICK_X_CODE_RIGHT/> <JOYSTICK_Y_CODE_DOWN/> <JOYSTICK_Y_CODE_UP/> <THRESHOLD_X_INPUT>0.03</THRESHOLD_X_INPUT> <THRESHOLD_X_MOUSE>0.001</THRESHOLD_X_MOUSE> <THRESHOLD_Y_INPUT>0.03</THRESHOLD_Y_INPUT> <THRESHOLD_Y_MOUSE>0.001</THRESHOLD_Y_MOUSE> </Parameters> <UseTemplate Name="ASOBO_GT_Joystick"> <NO_ANIMATION>True</NO_ANIMATION> <NO_HIGHLIGHT_NODE_ID>True</NO_HIGHLIGHT_NODE_ID> <NO_DRAG_IM_INTERACTION>True</NO_DRAG_IM_INTERACTION> <UPARROW_DRAG_IM/> <DOWNARROW_DRAG_IM/> <LEFTARROW_DRAG_IM/> <RIGHTARROW_DRAG_IM/> <CURSOR_CENTER_DRAG_IM/> <CURSOR_DRAG_IM>Normal</CURSOR_DRAG_IM> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • ID
      • WWISE_JOYSTICK_EVENT_L
      • WWISE_JOYSTICK_EVENT_R
      • WWISE_JOYSTICK_EVENT_UP
      • WWISE_JOYSTICK_EVENT_DN
      • JOYSTICK_X_CODE_LEFT
      • JOYSTICK_X_CODE_RIGHT
      • JOYSTICK_Y_CODE_DOWN
      • JOYSTICK_Y_CODE_UP
      • THRESHOLD_X_INPUT
      • THRESHOLD_X_MOUSE
      • THRESHOLD_Y_INPUT
      • THRESHOLD_Y_MOUSE

    Templates used:

    • ASOBO_GT_Joystick

      Parameters set:

      • NO_ANIMATION
      • NO_HIGHLIGHT_NODE_ID
      • NO_DRAG_IM_INTERACTION
      • UPARROW_DRAG_IM
      • DOWNARROW_DRAG_IM
      • LEFTARROW_DRAG_IM
      • RIGHTARROW_DRAG_IM
      • CURSOR_CENTER_DRAG_IM
      • CURSOR_DRAG_IM
  • ASOBO_GT_Joystick_Interaction_Knob

    Definition from XML
    <Template Name="ASOBO_GT_Joystick_Interaction_Knob"> <Parameters Type="Default"> <Switch Param="JOYSTICK_INTERACTION"> <Case Value="PAN_ONLY"> <ANIM_HANDLED_SEPARATELY>True</ANIM_HANDLED_SEPARATELY> </Case> <Default> <ANIM_NAME_KNOB>Joystick_Knob</ANIM_NAME_KNOB> <ANIM_NAME_PUSH>Joystick_Push</ANIM_NAME_PUSH> </Default> </Switch> <ANIM_NAME_L_R>Joystick_X_Axis</ANIM_NAME_L_R> <ANIM_NAME_DN_UP>Joystick_Y_Axis</ANIM_NAME_DN_UP> <KNOB_TURN_SPEED>10</KNOB_TURN_SPEED> <ID>1</ID> <WWISE_JOYSTICK_EVENT_L>generic_joystick_L</WWISE_JOYSTICK_EVENT_L> <WWISE_JOYSTICK_EVENT_R>generic_joystick_R</WWISE_JOYSTICK_EVENT_R> <WWISE_JOYSTICK_EVENT_UP>generic_joystick_UP</WWISE_JOYSTICK_EVENT_UP> <WWISE_JOYSTICK_EVENT_DN>generic_joystick_DN</WWISE_JOYSTICK_EVENT_DN> <WHEEL_UP_CODE/> <WHEEL_DOWN_CODE/> <LEFT_SINGLE_CODE_DEFAULT_IM/> <LEFT_RELEASE_CODE_DEFAULT_IM/> <LEFT_SINGLE_CODE_DRAG_IM/> <LEFT_RELEASE_CODE_DRAG_IM/> <JOYSTICK_X_CODE_LEFT/> <JOYSTICK_X_CODE_RIGHT/> <JOYSTICK_Y_CODE_DOWN/> <JOYSTICK_Y_CODE_UP/> <THRESHOLD_X_INPUT>0.03</THRESHOLD_X_INPUT> <THRESHOLD_X_MOUSE>0.001</THRESHOLD_X_MOUSE> <THRESHOLD_Y_INPUT>0.03</THRESHOLD_Y_INPUT> <THRESHOLD_Y_MOUSE>0.001</THRESHOLD_Y_MOUSE> <TIMEOUT_DELAY_RESET_AXIS>0.1</TIMEOUT_DELAY_RESET_AXIS> <IM_DRAG_ADDITIONAL_EVENT_HANDLING/> <USE_DEFAULT_ANIMATION>True</USE_DEFAULT_ANIMATION> </Parameters> <Parameters Type="Override"> <JOYSTICK_ID>Joystick_#ID#</JOYSTICK_ID> </Parameters> <Parameters Type="Override"> <SAVE_TIME_LAST_X_UPDATE>(E:SIMULATION TIME, seconds) #TIMEOUT_DELAY_RESET_AXIS# + (&gt;O:#JOYSTICK_ID#_X_NextTimeout)</SAVE_TIME_LAST_X_UPDATE> <SAVE_TIME_LAST_Y_UPDATE>(E:SIMULATION TIME, seconds) #TIMEOUT_DELAY_RESET_AXIS# + (&gt;O:#JOYSTICK_ID#_Y_NextTimeout)</SAVE_TIME_LAST_Y_UPDATE> </Parameters> <Parameters Type="Default"> <Condition Valid="USE_DEFAULT_ANIMATION"> <ANIM_CODE_AXIS_X>(I:#JOYSTICK_ID#_Panning_X_Axis_Delta) (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) * 50 * 50 +</ANIM_CODE_AXIS_X> <ANIM_CODE_AXIS_Y>(I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) * 50 * 50 +</ANIM_CODE_AXIS_Y> </Condition> <Switch Param="JOYSTICK_INTERACTION"> <Case Value="PAN_ONLY"> <MOUSEFLAGS_DRAG_IM>LeftAll+Lock+Unlock</MOUSEFLAGS_DRAG_IM> </Case> <Default> <CLOCKWISE_CODE>#WHEEL_UP_CODE#</CLOCKWISE_CODE> <ANTICLOCKWISE_CODE>#WHEEL_DOWN_CODE#</ANTICLOCKWISE_CODE> <LEFT_SINGLE_CODE>#LEFT_SINGLE_CODE_DEFAULT_IM#</LEFT_SINGLE_CODE> <LEFT_RELEASE_CODE>#LEFT_RELEASE_CODE_DEFAULT_IM#</LEFT_RELEASE_CODE> </Default> </Switch> <NO_PUSH_PULL_LOCK>True</NO_PUSH_PULL_LOCK> <PRE_DRAG_UPDATE/> <POST_DRAG_UPDATE/> </Parameters> <Parameters Type="Override"> <Condition Valid="USE_PAD_DRAG_IM_LOCK"> <True> <PRE_DRAG_UPDATE>#PRE_DRAG_UPDATE# (O:_ResetDragTime) (E:SIMULATION TIME, second) &lt; if{ 0 (&gt;O:_IsLimited) } (E:SIMULATION TIME, second) @DragLockResetTimer + (&gt;O:_ResetDragTime) (O:_IsLimited) if{ (M:RelativeX) (&gt;O:_LastX) (M:RelativeY) (&gt;O:_LastY) } els{ </PRE_DRAG_UPDATE> <POST_DRAG_UPDATE>} #POST_DRAG_UPDATE#</POST_DRAG_UPDATE> <LEFT_SINGLE_CODE_DRAG_IM>#LEFT_SINGLE_CODE_DRAG_IM# 0 (&gt;O:_IsLimited)</LEFT_SINGLE_CODE_DRAG_IM> </True> </Condition> </Parameters> <Parameters Type="Default"> <Condition Valid="USE_DEFAULT_ANIMATION"> <True> <CODE_UP>#JOYSTICK_Y_CODE_UP# 1 (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) #SAVE_TIME_LAST_Y_UPDATE#</CODE_UP> <CODE_DN>#JOYSTICK_Y_CODE_DOWN# -1 (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) #SAVE_TIME_LAST_Y_UPDATE#</CODE_DN> <CODE_LEFT>#JOYSTICK_X_CODE_LEFT# -1 (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) #SAVE_TIME_LAST_X_UPDATE#</CODE_LEFT> <CODE_RIGHT>#JOYSTICK_X_CODE_RIGHT# 1 (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) #SAVE_TIME_LAST_X_UPDATE#</CODE_RIGHT> <ON_DOWN_EVENT> #LEFT_SINGLE_CODE_DRAG_IM# 1 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 1 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) </ON_DOWN_EVENT> <ON_UP_EVENT> #LEFT_RELEASE_CODE_DRAG_IM# 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) 0 (&gt;I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) </ON_UP_EVENT> </True> <False> <CODE_UP>#JOYSTICK_Y_CODE_UP#</CODE_UP> <CODE_DN>#JOYSTICK_Y_CODE_DOWN#</CODE_DN> <CODE_LEFT>#JOYSTICK_X_CODE_LEFT#</CODE_LEFT> <CODE_RIGHT>#JOYSTICK_X_CODE_RIGHT#</CODE_RIGHT> <ON_DOWN_EVENT>#LEFT_SINGLE_CODE_DRAG_IM#</ON_DOWN_EVENT> <ON_UP_EVENT>#LEFT_RELEASE_CODE_DRAG_IM#</ON_UP_EVENT> </False> </Condition> </Parameters> <Condition Valid="USE_DEFAULT_ANIMATION"> <UseTemplate Name="ASOBO_GT_Update"> <FREQUENCY Process="Int">#TIMEOUT_DELAY_RESET_AXIS# 0 &gt; if{ 1 #TIMEOUT_DELAY_RESET_AXIS# / } els{ 10 }</FREQUENCY> <UPDATE_CODE> (I:#JOYSTICK_ID#_Can_Pan_On_X_Axis) if{ (E:SIMULATION TIME, seconds) (O:#JOYSTICK_ID#_X_NextTimeout) &gt; if{ #SAVE_TIME_LAST_X_UPDATE# 0 (&gt;I:#JOYSTICK_ID#_Panning_X_Axis_Delta) } } (I:#JOYSTICK_ID#_Can_Pan_On_Y_Axis) if{ (E:SIMULATION TIME, seconds) (O:#JOYSTICK_ID#_Y_NextTimeout) &gt; if{ #SAVE_TIME_LAST_Y_UPDATE# 0 (&gt;I:#JOYSTICK_ID#_Panning_Y_Axis_Delta) } } </UPDATE_CODE> <INTERACTION_MODEL>Drag</INTERACTION_MODEL> </UseTemplate> </Condition> <UseTemplate Name="ASOBO_GT_Knob_Infinite_Push"> <CURSOR_LEFT>TurnLeft</CURSOR_LEFT> <CURSOR_RIGHT>TurnRight</CURSOR_RIGHT> <CENTER_CURSOR>Hand</CENTER_CURSOR> </UseTemplate> <UseTemplate Name="ASOBO_GT_Anim_Code"> <ANIM_CODE>#ANIM_CODE_AXIS_X#</ANIM_CODE> <ANIM_LENGTH>100</ANIM_LENGTH> <ANIM_NAME>#ANIM_NAME_L_R#</ANIM_NAME> <Condition Valid="INVERT_ANIM_L_R"> <INVERT_ANIM>True</INVERT_ANIM> </Condition> </UseTemplate> <UseTemplate Name="ASOBO_GT_Anim_Code"> <ANIM_CODE>#ANIM_CODE_AXIS_Y#</ANIM_CODE> <ANIM_LENGTH>100</ANIM_LENGTH> <ANIM_NAME>#ANIM_NAME_DN_UP#</ANIM_NAME> <Condition Valid="INVERT_ANIM_DN_UP"> <INVERT_ANIM>True</INVERT_ANIM> </Condition> </UseTemplate> <UseTemplate Name="ASOBO_GT_AnimTriggers_2SoundEvents"> <ANIM_NAME>#ANIM_NAME_L_R#</ANIM_NAME> <WWISE_EVENT_1>#WWISE_JOYSTICK_EVENT_L#</WWISE_EVENT_1> <DIRECTION_1>Both</DIRECTION_1> <WWISE_EVENT_2>#WWISE_JOYSTICK_EVENT_R#</WWISE_EVENT_2> <DIRECTION_2>Both</DIRECTION_2> </UseTemplate> <UseTemplate Name="ASOBO_GT_AnimTriggers_2SoundEvents"> <ANIM_NAME>#ANIM_NAME_DN_UP#</ANIM_NAME> <WWISE_EVENT_1>#WWISE_JOYSTICK_EVENT_DN#</WWISE_EVENT_1> <DIRECTION_1>Both</DIRECTION_1> <WWISE_EVENT_2>#WWISE_JOYSTICK_EVENT_UP#</WWISE_EVENT_2> <DIRECTION_2>Both</DIRECTION_2> </UseTemplate> </Template>

    Parameters initialization:

    • Default

      Parameters set:

      • ANIM_NAME_L_R
      • ANIM_NAME_DN_UP
      • KNOB_TURN_SPEED
      • ID
      • WWISE_JOYSTICK_EVENT_L
      • WWISE_JOYSTICK_EVENT_R
      • WWISE_JOYSTICK_EVENT_UP
      • WWISE_JOYSTICK_EVENT_DN
      • WHEEL_UP_CODE
      • WHEEL_DOWN_CODE
      • LEFT_SINGLE_CODE_DEFAULT_IM
      • LEFT_RELEASE_CODE_DEFAULT_IM
      • LEFT_SINGLE_CODE_DRAG_IM
      • LEFT_RELEASE_CODE_DRAG_IM
      • JOYSTICK_X_CODE_LEFT
      • JOYSTICK_X_CODE_RIGHT
      • JOYSTICK_Y_CODE_DOWN
      • JOYSTICK_Y_CODE_UP
      • THRESHOLD_X_INPUT
      • THRESHOLD_X_MOUSE
      • THRESHOLD_Y_INPUT
      • THRESHOLD_Y_MOUSE
      • TIMEOUT_DELAY_RESET_AXIS
      • IM_DRAG_ADDITIONAL_EVENT_HANDLING
      • USE_DEFAULT_ANIMATION

      Condition: Switch(JOYSTICK_INTERACTION)

      • Case: PAN_ONLY

        Parameters set:

        • ANIM_HANDLED_SEPARATELY
      • Default case:

        Parameters set:

        • ANIM_NAME_KNOB
        • ANIM_NAME_PUSH
    • Override

      Parameters set:

      • JOYSTICK_ID (using ID)
    • Override

      Parameters set:

      • SAVE_TIME_LAST_X_UPDATE (using TIMEOUT_DELAY_RESET_AXIS, JOYSTICK_ID)
      • SAVE_TIME_LAST_Y_UPDATE (using TIMEOUT_DELAY_RESET_AXIS, JOYSTICK_ID)
    • Default

      Parameters set:

      • NO_PUSH_PULL_LOCK
      • PRE_DRAG_UPDATE
      • POST_DRAG_UPDATE

      Condition: Valid(USE_DEFAULT_ANIMATION)

      • Case: True

        Parameters set:

        • ANIM_CODE_AXIS_X (using JOYSTICK_ID)
        • ANIM_CODE_AXIS_Y (using JOYSTICK_ID)

      Condition: Switch(JOYSTICK_INTERACTION)

      • Case: PAN_ONLY

        Parameters set:

        • MOUSEFLAGS_DRAG_IM
      • Default case:

        Parameters set:

        • CLOCKWISE_CODE (using WHEEL_UP_CODE)
        • ANTICLOCKWISE_CODE (using WHEEL_DOWN_CODE)
        • LEFT_SINGLE_CODE (using LEFT_SINGLE_CODE_DEFAULT_IM)
        • LEFT_RELEASE_CODE (using LEFT_RELEASE_CODE_DEFAULT_IM)
    • Override

      Condition: Valid(USE_PAD_DRAG_IM_LOCK)

      • Case: True

        Parameters set:

        • PRE_DRAG_UPDATE (using PRE_DRAG_UPDATE)
        • POST_DRAG_UPDATE (using POST_DRAG_UPDATE)
        • LEFT_SINGLE_CODE_DRAG_IM (using LEFT_SINGLE_CODE_DRAG_IM)
    • Default

      Condition: Valid(USE_DEFAULT_ANIMATION)

      • Case: True

        Parameters set:

        • CODE_UP (using JOYSTICK_Y_CODE_UP, JOYSTICK_ID, SAVE_TIME_LAST_Y_UPDATE)
        • CODE_DN (using JOYSTICK_Y_CODE_DOWN, JOYSTICK_ID, SAVE_TIME_LAST_Y_UPDATE)
        • CODE_LEFT (using JOYSTICK_X_CODE_LEFT, JOYSTICK_ID, SAVE_TIME_LAST_X_UPDATE)
        • CODE_RIGHT (using JOYSTICK_X_CODE_RIGHT, JOYSTICK_ID, SAVE_TIME_LAST_X_UPDATE)
        • ON_DOWN_EVENT (using LEFT_SINGLE_CODE_DRAG_IM, JOYSTICK_ID)
        • ON_UP_EVENT (using LEFT_RELEASE_CODE_DRAG_IM, JOYSTICK_ID)
      • Case: False

        Parameters set:

        • CODE_UP (using JOYSTICK_Y_CODE_UP)
        • CODE_DN (using JOYSTICK_Y_CODE_DOWN)
        • CODE_LEFT (using JOYSTICK_X_CODE_LEFT)
        • CODE_RIGHT (using JOYSTICK_X_CODE_RIGHT)
        • ON_DOWN_EVENT (using LEFT_SINGLE_CODE_DRAG_IM)
        • ON_UP_EVENT (using LEFT_RELEASE_CODE_DRAG_IM)

    Templates used:

    • ASOBO_GT_Knob_Infinite_Push

      Parameters set:

      • CURSOR_LEFT
      • CURSOR_RIGHT
      • CENTER_CURSOR
    • ASOBO_GT_Anim_Code

      Parameters set:

      • ANIM_CODE (using ANIM_CODE_AXIS_X)
      • ANIM_LENGTH
      • ANIM_NAME (using ANIM_NAME_L_R)

      Condition: Valid(INVERT_ANIM_L_R)

      • Case: True

        Parameters set:

        • INVERT_ANIM
    • ASOBO_GT_Anim_Code

      Parameters set:

      • ANIM_CODE (using ANIM_CODE_AXIS_Y)
      • ANIM_LENGTH
      • ANIM_NAME (using ANIM_NAME_DN_UP)

      Condition: Valid(INVERT_ANIM_DN_UP)

      • Case: True

        Parameters set:

        • INVERT_ANIM
    • ASOBO_GT_AnimTriggers_2SoundEvents

      Parameters set:

      • ANIM_NAME (using ANIM_NAME_L_R)
      • WWISE_EVENT_1 (using WWISE_JOYSTICK_EVENT_L)
      • DIRECTION_1
      • WWISE_EVENT_2 (using WWISE_JOYSTICK_EVENT_R)
      • DIRECTION_2
    • ASOBO_GT_AnimTriggers_2SoundEvents

      Parameters set:

      • ANIM_NAME (using ANIM_NAME_DN_UP)
      • WWISE_EVENT_1 (using WWISE_JOYSTICK_EVENT_DN)
      • DIRECTION_1
      • WWISE_EVENT_2 (using WWISE_JOYSTICK_EVENT_UP)
      • DIRECTION_2

    Condition: Valid(USE_DEFAULT_ANIMATION)

    • Case: True

      Templates used:

      • ASOBO_GT_Update

        Parameters set:

        • FREQUENCY (using TIMEOUT_DELAY_RESET_AXIS)
        • UPDATE_CODE (using JOYSTICK_ID, SAVE_TIME_LAST_X_UPDATE, SAVE_TIME_LAST_Y_UPDATE)
        • INTERACTION_MODEL