Skip to content

Commit 52ae3bd

Browse files
authored
Better format and static type Desktop Direct Move (#772)
1 parent 13f805c commit 52ae3bd

File tree

1 file changed

+53
-33
lines changed

1 file changed

+53
-33
lines changed

addons/godot-xr-tools/desktop-support/movement_desktop_direct.gd

Lines changed: 53 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
class_name XRToolsDesktopMovementDirect
33
extends 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

Comments
 (0)