127 lines
4.3 KiB
GDScript
127 lines
4.3 KiB
GDScript
extends Node3D
|
|
|
|
var xr_interface: XRInterface
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready() -> void:
|
|
xr_interface = XRServer.find_interface("OpenXR")
|
|
if xr_interface and xr_interface.is_initialized():
|
|
print("OpenXR initialized successfully")
|
|
|
|
# Turn off v-sync!
|
|
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
|
|
|
|
# Change our main viewport to output to the HMD
|
|
get_viewport().use_xr = true
|
|
else:
|
|
print("OpenXR not initialized, please check if your headset is connected")
|
|
spawn_arp_request_packet()
|
|
pass # Replace with function body.
|
|
|
|
|
|
var last_highlight = null;
|
|
var holding_object = null;
|
|
var last_action_object = null;
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _physics_process(delta: float) -> void:
|
|
if holding_object == null:
|
|
if last_highlight != null:
|
|
last_highlight.HIGHLIGHT = false
|
|
last_highlight = null
|
|
if $XROrigin3D/RightHand/RayCast3D.is_colliding():
|
|
$XROrigin3D/RightHand/RayCast3D.get_collider().get_parent_node_3d().HIGHLIGHT = true
|
|
last_highlight = $XROrigin3D/RightHand/RayCast3D.get_collider().get_parent_node_3d()
|
|
|
|
# Action Ray:
|
|
if $XROrigin3D/RightHand/ActionRay.is_colliding():
|
|
$XROrigin3D/RightHand/ActionRay.get_collider().highlight(true)
|
|
last_action_object = $XROrigin3D/RightHand/ActionRay.get_collider()
|
|
elif last_action_object != null:
|
|
last_action_object.highlight(false);
|
|
last_action_object = null
|
|
|
|
|
|
var MOUSE_SENSITIVITY = 0.001;
|
|
|
|
var packet_container_scene = preload("res://packet_container.tscn")
|
|
func _input(event):
|
|
if event.is_action_pressed("drop_action") && holding_object != null:
|
|
#$RotationHelper/XRCamera3D/HoldPosition/HoldPacketCollission.set_collision_layer(0)
|
|
var drop = packet_container_scene.instantiate()
|
|
drop.global_transform = holding_object.global_transform
|
|
$XROrigin3D/RightHand/HoldPosition.remove_child(holding_object)
|
|
drop.add_child(holding_object)
|
|
#drop.set_collision_layer(1)
|
|
drop.set_collision_mask(1)
|
|
drop.gravity_scale = 1
|
|
drop.packet = holding_object
|
|
add_child(drop)
|
|
holding_object = null
|
|
|
|
|
|
|
|
var packet_scene = preload("res://Packet.tscn")
|
|
var success_scene = preload("res://Success.tscn")
|
|
var arp_packet_info = preload("res://info_card.tscn")
|
|
func spawn_arp_request_packet():
|
|
var new_packet = packet_scene.instantiate()
|
|
new_packet.MAC_FROM = "00"
|
|
new_packet.MAC_TO = "FF"
|
|
new_packet.IP_FROM = "192.168.0.1"
|
|
new_packet.IP_TO = "192.168.0.12"
|
|
var info_card = arp_packet_info.instantiate()
|
|
new_packet.add_info_card(info_card)
|
|
$incoming1.send_packet(new_packet)
|
|
|
|
var phase = 0;
|
|
func _on_outgoing_1_packet_received(packet) -> void:
|
|
if packet.MAC_FROM == "A3" && packet.IP_FROM == "192.168.0.12" && phase == 0:
|
|
var new_packet = success_scene.instantiate()
|
|
$incoming1.send_packet(new_packet)
|
|
pass # Replace with function body.
|
|
|
|
|
|
func _on_outgoing_3_packet_received(packet) -> void:
|
|
if packet.MAC_FROM == "00" && packet.MAC_TO == "FF" && packet.IP_TO == "192.168.0.12":
|
|
var new_packet = packet_scene.instantiate()
|
|
new_packet.MAC_FROM = "A3"
|
|
new_packet.MAC_TO = "FF"
|
|
new_packet.IP_FROM = "192.168.0.12"
|
|
new_packet.IP_TO = packet.IP_FROM
|
|
var info_card = arp_packet_info.instantiate()
|
|
new_packet.add_info_card(info_card)
|
|
$incoming3.send_packet(new_packet)
|
|
pass # Replace with function body.
|
|
|
|
|
|
var holdingButton = ""
|
|
func _on_right_hand_button_pressed(name: String) -> void:
|
|
print(name)
|
|
if last_highlight != null && holding_object == null:
|
|
var packet_container = last_highlight.get_parent_node_3d()
|
|
packet_container.remove_packet(last_highlight)
|
|
#last_highlight.queue_free()
|
|
$XROrigin3D/RightHand/HoldPosition.add_child(last_highlight)
|
|
last_highlight.position = Vector3(0,0,0)
|
|
holding_object = last_highlight
|
|
holdingButton = name
|
|
if phase == 0 && holding_object.MAC_FROM == "00":
|
|
spawn_arp_request_packet()
|
|
if last_action_object != null:
|
|
last_action_object.action()
|
|
|
|
|
|
func _on_right_hand_button_released(name: String) -> void:
|
|
if holding_object != null && name == holdingButton:
|
|
var drop = packet_container_scene.instantiate()
|
|
drop.global_transform = holding_object.global_transform
|
|
$XROrigin3D/RightHand/HoldPosition.remove_child(holding_object)
|
|
drop.add_child(holding_object)
|
|
# drop.set_collision_layer(1)
|
|
drop.set_collision_mask(1)
|
|
drop.gravity_scale = 1
|
|
drop.packet = holding_object
|
|
add_child(drop)
|
|
holding_object = null
|