Grip is now just the movement and trigger is the pickup.
This commit is contained in:
parent
68fd3a45a8
commit
293c95c50c
2 changed files with 61 additions and 13 deletions
|
@ -41,6 +41,9 @@ class CopiedCollision extends RefCounted:
|
|||
## Grip controller axis
|
||||
@export var pickup_axis_action : String = "grip"
|
||||
|
||||
## Trigger Controller axis
|
||||
@export var pickup_axis_action_trigger : String = "trigger"
|
||||
|
||||
## Action controller button
|
||||
@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_ranged : 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
|
||||
var _object_in_grab_area := Array()
|
||||
|
@ -162,8 +167,12 @@ func _process(delta):
|
|||
if !enabled or !_controller.get_is_active():
|
||||
return
|
||||
|
||||
#Apply the public values to trick the movement script
|
||||
grip_value_public = _controller.get_float(pickup_axis_action)
|
||||
|
||||
# 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)):
|
||||
grip_pressed = false
|
||||
_on_grip_release()
|
||||
|
|
|
@ -31,6 +31,17 @@ signal player_world_grab_end
|
|||
@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
|
||||
var _left_handle : Node3D
|
||||
|
||||
|
@ -87,35 +98,61 @@ func physics_movement(delta: float, player_body: XRToolsPlayerBody, disabled: bo
|
|||
player_body.velocity = Vector3.ZERO
|
||||
|
||||
# Check for world-grab handles being deleted while held
|
||||
if not is_instance_valid(_left_handle):
|
||||
_left_handle = null
|
||||
if not is_instance_valid(_right_handle):
|
||||
_right_handle = null
|
||||
#if not is_instance_valid(_left_handle):
|
||||
#_left_handle = null
|
||||
#if not is_instance_valid(_right_handle):
|
||||
#_right_handle = null
|
||||
|
||||
# Disable world-grab movement if not holding the world
|
||||
if not _left_handle and not _right_handle:
|
||||
if _left_pickup_node.grip_value_public < 0.8:
|
||||
_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)
|
||||
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
|
||||
_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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
else:
|
||||
# Get the world-grab handle positions
|
||||
var left_grab_pos := _left_handle.global_position
|
||||
var right_grab_pos := _right_handle.global_position
|
||||
#var left_grab_pos := _left_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_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
|
||||
func _on_left_picked_up(what : Node3D) -> void:
|
||||
# Get the world-grab area
|
||||
return
|
||||
var world_grab_area = what as XRToolsWorldGrabArea
|
||||
if not world_grab_area:
|
||||
return
|
||||
|
@ -181,6 +219,7 @@ func _on_left_picked_up(what : Node3D) -> void:
|
|||
## Handler for right controller picked up
|
||||
func _on_right_picked_up(what : Node3D) -> void:
|
||||
# Get the world-grab area
|
||||
return
|
||||
var world_grab_area = what as XRToolsWorldGrabArea
|
||||
if not world_grab_area:
|
||||
return
|
||||
|
|
Loading…
Reference in a new issue