Grip is now just the movement and trigger is the pickup.

This commit is contained in:
DESKTOP-P2AGUDS\Titan 2025-02-15 23:40:33 -06:00
parent 68fd3a45a8
commit 293c95c50c
2 changed files with 61 additions and 13 deletions

View file

@ -41,6 +41,9 @@ class CopiedCollision extends RefCounted:
## Grip controller axis ## Grip controller axis
@export var pickup_axis_action : String = "grip" @export var pickup_axis_action : String = "grip"
## Trigger Controller axis
@export var pickup_axis_action_trigger : String = "trigger"
## Action controller button ## Action controller button
@export var action_button_action : String = "trigger_click" @export var action_button_action : String = "trigger_click"
@ -76,6 +79,8 @@ var closest_object : Node3D = null
var picked_up_object : Node3D = null var picked_up_object : Node3D = null
var picked_up_ranged : bool = false var picked_up_ranged : bool = false
var grip_pressed : bool = false var grip_pressed : bool = false
var trigger_value : float = 0
var grip_value_public : float = 0 #Used to trick the movement_world_grab
# Private fields # Private fields
var _object_in_grab_area := Array() var _object_in_grab_area := Array()
@ -162,8 +167,12 @@ func _process(delta):
if !enabled or !_controller.get_is_active(): if !enabled or !_controller.get_is_active():
return return
#Apply the public values to trick the movement script
grip_value_public = _controller.get_float(pickup_axis_action)
# Handle our grip # Handle our grip
var grip_value = _controller.get_float(pickup_axis_action) #var grip_value = grip_value_public
var grip_value = _controller.get_float(pickup_axis_action_trigger)
if (grip_pressed and grip_value < (_grip_threshold - 0.1)): if (grip_pressed and grip_value < (_grip_threshold - 0.1)):
grip_pressed = false grip_pressed = false
_on_grip_release() _on_grip_release()

View file

@ -31,6 +31,17 @@ signal player_world_grab_end
@export var world_scale_max := 2.0 @export var world_scale_max := 2.0
## Grip controller axis
#@export var pickup_axis_action : String = "grip"
##GPT stuff
var _left_grab_origin : Vector3 = Vector3.ZERO
var _right_grab_origin : Vector3 = Vector3.ZERO
var _is_left_grabbing : bool = false
var _is_right_grabbing : bool = false
# Left world-grab handle # Left world-grab handle
var _left_handle : Node3D var _left_handle : Node3D
@ -87,35 +98,61 @@ func physics_movement(delta: float, player_body: XRToolsPlayerBody, disabled: bo
player_body.velocity = Vector3.ZERO player_body.velocity = Vector3.ZERO
# Check for world-grab handles being deleted while held # Check for world-grab handles being deleted while held
if not is_instance_valid(_left_handle): #if not is_instance_valid(_left_handle):
_left_handle = null #_left_handle = null
if not is_instance_valid(_right_handle): #if not is_instance_valid(_right_handle):
_right_handle = null #_right_handle = null
# Disable world-grab movement if not holding the world if _left_pickup_node.grip_value_public < 0.8:
if not _left_handle and not _right_handle: _is_left_grabbing = false
if _right_pickup_node.grip_value_public < 0.8:
_is_right_grabbing = false
if (not _right_pickup_node.grip_value_public > 0.9 and not _left_pickup_node.grip_value_public > 0.9):
_set_world_grab_moving(false) _set_world_grab_moving(false)
return return
# Disable world-grab movement if not holding the world
#if not _left_handle and not _right_handle:
# _set_world_grab_moving(false)
# return
# World grabbed # World grabbed
_set_world_grab_moving(true) _set_world_grab_moving(true)
#GPT welcome to shity code
#Replacing the left and right world handles with the positions when the controller is grabbed
if _left_pickup_node.grip_value_public > 0.9 and not _is_left_grabbing:
_left_grab_origin = _left_controller.global_position
_is_left_grabbing = true
if _right_pickup_node.grip_value_public > 0.9 and not _is_right_grabbing:
_right_grab_origin = _right_controller.global_position
_is_right_grabbing = true
# Handle world-grab movement # Handle world-grab movement
var offset := Vector3.ZERO var offset := Vector3.ZERO
if _left_handle and not _right_handle: #if _left_handle and not _right_handle:
if _is_left_grabbing and not _is_right_grabbing:
# Left-hand movement only # Left-hand movement only
var left_pickup_pos := _left_controller.global_position var left_pickup_pos := _left_controller.global_position
var left_grab_pos := _left_handle.global_position #var left_grab_pos := _left_handle.global_position
var left_grab_pos := _left_grab_origin
offset = left_pickup_pos - left_grab_pos offset = left_pickup_pos - left_grab_pos
elif _right_handle and not _left_handle: #if _right_handle and not _left_handle:
elif _is_right_grabbing and not _is_left_grabbing:
# Right-hand movement only # Right-hand movement only
var right_pickup_pos := _right_controller.global_position var right_pickup_pos := _right_controller.global_position
var right_grab_pos := _right_handle.global_position #var right_grab_pos := _right_handle.global_position
var right_grab_pos := _right_grab_origin
offset = right_pickup_pos - right_grab_pos offset = right_pickup_pos - right_grab_pos
else: else:
# Get the world-grab handle positions # Get the world-grab handle positions
var left_grab_pos := _left_handle.global_position #var left_grab_pos := _left_handle.global_position
var right_grab_pos := _right_handle.global_position #var right_grab_pos := _right_handle.global_position
var left_grab_pos := _left_grab_origin
var right_grab_pos := _right_grab_origin
var grab_l2r := (right_grab_pos - left_grab_pos).slide(player_body.up_player) var grab_l2r := (right_grab_pos - left_grab_pos).slide(player_body.up_player)
var grab_mid := (left_grab_pos + right_grab_pos) * 0.5 var grab_mid := (left_grab_pos + right_grab_pos) * 0.5
@ -168,6 +205,7 @@ func _set_world_grab_moving(active: bool) -> void:
## Handler for left controller picked up ## Handler for left controller picked up
func _on_left_picked_up(what : Node3D) -> void: func _on_left_picked_up(what : Node3D) -> void:
# Get the world-grab area # Get the world-grab area
return
var world_grab_area = what as XRToolsWorldGrabArea var world_grab_area = what as XRToolsWorldGrabArea
if not world_grab_area: if not world_grab_area:
return return
@ -181,6 +219,7 @@ func _on_left_picked_up(what : Node3D) -> void:
## Handler for right controller picked up ## Handler for right controller picked up
func _on_right_picked_up(what : Node3D) -> void: func _on_right_picked_up(what : Node3D) -> void:
# Get the world-grab area # Get the world-grab area
return
var world_grab_area = what as XRToolsWorldGrabArea var world_grab_area = what as XRToolsWorldGrabArea
if not world_grab_area: if not world_grab_area:
return return