22class_name XRToolsDesktopMovementDirect
33extends XRToolsMovementProvider
44
5-
65## XR Tools Movement Provider for Direct Movement
76##
87## This script provides direct movement for the player. This script works
@@ -11,43 +10,74 @@ extends XRToolsMovementProvider
1110## The player may have multiple [XRToolsMovementDirect] nodes attached to
1211## different controllers to provide different types of direct movement.
1312
14-
1513## Movement provider order
16- @export var order : int = 10
14+ @export var order : int = 10
1715
1816## Movement speed
19- @export var max_speed : float = 3.0
17+ @export var max_speed : float = 3.0
18+
19+ ## Whether the player can strafe
20+ @export var strafe : bool = false
21+
22+ ## Input action for moving forwards
23+ @export var input_forward : String = "ui_up"
24+
25+ ## Input action for moving backwards
26+ @export var input_backward : String = "ui_down"
2027
21- ## If true, the player can strafe
22- @export var strafe : bool = false
28+ ## Input action for moving left
29+ @export var input_left : String = "ui_left"
2330
24- ## Input action for movement direction
25- @export var input_forward : String = "ui_up"
26- @export var input_backward : String = "ui_down"
27- @export var input_left : String = "ui_left"
28- @export var input_right : String = "ui_right"
31+ ## Input action for moving right
32+ @export var input_right : String = "ui_right"
2933
3034
31- # XRStart node
32- @onready var xr_start_node = XRTools .find_xr_child (
33- XRTools .find_xr_ancestor (self ,
34- "*Staging" ,
35- "XRToolsStaging" ),"StartXR" ,"Node" )
35+ ## XRStart node
36+ @onready var xr_start_node : XRToolsStartXR = XRTools .find_xr_child (
37+ XRTools .find_xr_ancestor (
38+ self ,
39+ "*Staging" ,
40+ "XRToolsStaging" ,
41+ ),
42+ "StartXR" ,
43+ "Node" ,
44+ )
45+
46+
47+ ## Find the right [XRToolsDesktopMovementDirect] node.
48+ ##
49+ ## This function searches from the specified node for the right controller
50+ ## [XRToolsDesktopMovementDirect] assuming the node is a sibling of the [XROrigin3D].
51+ static func find (node : Node ) -> XRToolsDesktopMovementDirect :
52+ return XRTools .find_xr_child (
53+ XRHelpers .get_xr_origin (node ),
54+ "*" ,
55+ "XRToolsDesktopMovementDirect" ,
56+ ) as XRToolsDesktopMovementDirect
3657
3758
38- # Add support for is_xr_class on XRTools classes
39- func is_xr_class (xr_name : String ) -> bool :
59+ ## Add support for is_xr_class on XRTools classes
60+ func is_xr_class (xr_name : String ) -> bool :
4061 return xr_name == "XRToolsDesktopMovementDirect" or super (xr_name )
4162
4263
43- # Perform jump movement
44- func physics_movement (_delta : float , player_body : XRToolsPlayerBody , _disabled : bool ):
64+ ## Perform jump movement
65+ func physics_movement (
66+ _delta : float ,
67+ player_body : XRToolsPlayerBody ,
68+ _disabled : bool ,
69+ ) -> void :
4570 # Skip if the controller isn't active
46- if ! player_body .enabled or xr_start_node .is_xr_active ():
71+ if not player_body .enabled or xr_start_node .is_xr_active ():
4772 return
4873
49- # Calculate input vector
50- var input_dir = Input .get_vector (input_left , input_right , input_backward , input_forward )
74+ # Calculate input vector
75+ var input_dir = Input .get_vector (
76+ input_left ,
77+ input_right ,
78+ input_backward ,
79+ input_forward
80+ )
5181
5282 # Apply forwards/backwards ground control
5383 player_body .ground_control_velocity .y += input_dir .y * max_speed
@@ -60,13 +90,3 @@ func physics_movement(_delta: float, player_body: XRToolsPlayerBody, _disabled:
6090 var length := player_body .ground_control_velocity .length ()
6191 if length > max_speed :
6292 player_body .ground_control_velocity *= max_speed / length
63-
64- ## Find the right [XRToolsDesktopMovementDirect] node.
65- ##
66- ## This function searches from the specified node for the right controller
67- ## [XRToolsDesktopMovementDirect] assuming the node is a sibling of the [XROrigin3D].
68- static func find (node : Node ) -> XRToolsDesktopMovementDirect :
69- return XRTools .find_xr_child (
70- XRHelpers .get_xr_origin (node ),
71- "*" ,
72- "XRToolsDesktopMovementDirect" ) as XRToolsDesktopMovementDirect
0 commit comments