Files
PacketsPlease/main.gd

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