init
This commit is contained in:
50
addons/godot-xr-tools/desktop-support/mouse_capture.gd
Normal file
50
addons/godot-xr-tools/desktop-support/mouse_capture.gd
Normal file
@@ -0,0 +1,50 @@
|
||||
@tool
|
||||
class_name XRToolsDesktopMouseCapture
|
||||
extends XRToolsMovementProvider
|
||||
|
||||
## XR Tools Mouse Capture
|
||||
##
|
||||
## This script provides support for desktop mouse capture. This script works
|
||||
## with the PlayerBody attached to the players XROrigin3D.
|
||||
|
||||
|
||||
## Movement provider order
|
||||
@export var order : int = 1
|
||||
|
||||
## Our directional input
|
||||
@export var escape_action : String = "ui_cancel"
|
||||
|
||||
#Last mouse capture status and should it be auto captured
|
||||
@export var capture : bool = true
|
||||
|
||||
|
||||
# XRStart node
|
||||
@onready var xr_start_node = XRTools.find_xr_child(
|
||||
XRTools.find_xr_ancestor(self,
|
||||
"*Staging",
|
||||
"XRToolsStaging"),"StartXR","Node")
|
||||
|
||||
|
||||
# Add support for is_xr_class on XRTools classes
|
||||
func is_xr_class(xr_name: String) -> bool:
|
||||
return xr_name == "XRToolsDesktopMouseCapture" or super(xr_name)
|
||||
|
||||
|
||||
# Perform jump movement
|
||||
func physics_movement(_delta: float, player_body: XRToolsPlayerBody, _disabled: bool):
|
||||
# Skip if the player body isn't active
|
||||
var check1 :bool= (xr_start_node.is_xr_active() and Input.mouse_mode==Input.MOUSE_MODE_CAPTURED)
|
||||
if !player_body.enabled or check1:
|
||||
return
|
||||
|
||||
|
||||
if Input.is_action_just_pressed("ui_cancel"):
|
||||
capture=!capture
|
||||
|
||||
#print(Input.mouse_mode==Input.MOUSE_MODE_CAPTURED)
|
||||
|
||||
if Input.mouse_mode==Input.MOUSE_MODE_CAPTURED and (xr_start_node.is_xr_active() or !capture):
|
||||
Input.mouse_mode=Input.MOUSE_MODE_VISIBLE
|
||||
elif (!xr_start_node.is_xr_active() and capture):
|
||||
Input.mouse_mode=Input.MOUSE_MODE_CAPTURED
|
||||
return
|
||||
Reference in New Issue
Block a user