From f648077fff4917cd7716e33339acd745ee4f571c Mon Sep 17 00:00:00 2001 From: Hartmut Seichter Date: Tue, 1 Jul 2025 08:49:57 +0200 Subject: [PATCH] first idea how to deal with receivers in a flexible way --- Root.tscn | 8 ++++++-- VRPN.gd | 13 ++++++++++--- VRPN_Receiver.gd | 9 +++++++++ VRPN_Receiver.gd.uid | 1 + 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 VRPN_Receiver.gd create mode 100644 VRPN_Receiver.gd.uid diff --git a/Root.tscn b/Root.tscn index 7b125c8..f82e587 100644 --- a/Root.tscn +++ b/Root.tscn @@ -1,12 +1,16 @@ -[gd_scene load_steps=2 format=3 uid="uid://bj5ykdjle10tt"] +[gd_scene load_steps=3 format=3 uid="uid://bj5ykdjle10tt"] [ext_resource type="Script" uid="uid://dmq3i7qmo1qe0" path="res://VRPN.gd" id="2_24d08"] +[ext_resource type="Script" uid="uid://dpj1wrvfsiq4v" path="res://VRPN_Receiver.gd" id="2_170dk"] [node name="Node3D" type="Node3D"] -[node name="VRPN" type="Node3D" parent="."] +[node name="VRPN" type="Node3D" parent="." node_paths=PackedStringArray("tracker_receivers")] script = ExtResource("2_24d08") +tracker_receivers = [NodePath("RB1")] +vrpn_server = "212.201.64.122" [node name="RB1" type="Node3D" parent="VRPN"] +script = ExtResource("2_170dk") [node name="RB2" type="Node3D" parent="VRPN"] diff --git a/VRPN.gd b/VRPN.gd index 5262e89..c26000d 100644 --- a/VRPN.gd +++ b/VRPN.gd @@ -18,7 +18,7 @@ signal data(data:Array) signal disconnected signal error -@export var tracker_targets : Dictionary[String,Node3D] = {} +@export var tracker_receivers : Array[VRPN_Receiver] = [] # Graphics Interaction Lab OptiTrack system @212.201.64.122 @@ -180,9 +180,16 @@ static func marshall_body(data : PackedByteArray,message_type : int, sender_id: var quat_y = body.get_double() var quat_z = body.get_double() var quat = Quaternion(quat_x,quat_y,quat_z,quat_w) - - print("Sender:{0} Sensor:{1} Pos:{2} Quat:{3}".format([session.sensors[sender_id],sensor_id,pos,quat])) + for r in session.tracker_receivers: + r._on_pos_quat({ + "tracker" : session.sensors[sender_id], + "sensor" : sensor_id, + "position" : pos, + "rotation" : quat + }) + + #print("Sender:{0} Sensor:{1} Pos:{2} Quat:{3}".format([session.sensors[sender_id],sensor_id,pos,quat])) _: pass #print("unhandled message type {0}".format([message_type])) diff --git a/VRPN_Receiver.gd b/VRPN_Receiver.gd new file mode 100644 index 0000000..2405e7a --- /dev/null +++ b/VRPN_Receiver.gd @@ -0,0 +1,9 @@ +extends Node3D + +class_name VRPN_Receiver + +@export var sensor : String = "Tracker0" + +func _on_pos_quat(tracker_data : Dictionary): + print(tracker_data) + diff --git a/VRPN_Receiver.gd.uid b/VRPN_Receiver.gd.uid new file mode 100644 index 0000000..fcbe47b --- /dev/null +++ b/VRPN_Receiver.gd.uid @@ -0,0 +1 @@ +uid://dpj1wrvfsiq4v