rename to VRPN_Client to make sure there is no confusion
This commit is contained in:
parent
3f823111d1
commit
46491f8e2f
6 changed files with 41 additions and 42 deletions
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=5 format=3 uid="uid://en7tpf1d6yak"]
|
[gd_scene load_steps=5 format=3 uid="uid://en7tpf1d6yak"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dmq3i7qmo1qe0" path="res://addons/vrpn/scripts/VRPN.gd" id="1_jrm7s"]
|
[ext_resource type="Script" uid="uid://dmq3i7qmo1qe0" path="res://addons/vrpn/scripts/VRPN_Client.gd" id="1_jrm7s"]
|
||||||
[ext_resource type="Script" uid="uid://dpj1wrvfsiq4v" path="res://addons/vrpn/scripts/VRPN_Tracker.gd" id="2_fp2uy"]
|
[ext_resource type="Script" uid="uid://dpj1wrvfsiq4v" path="res://addons/vrpn/scripts/VRPN_Tracker.gd" id="2_fp2uy"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b426fy7d6jw2d" path="res://addons/vrpn/assets/axis.blend" id="3_73ywu"]
|
[ext_resource type="PackedScene" uid="uid://b426fy7d6jw2d" path="res://addons/vrpn/assets/axis.blend" id="3_73ywu"]
|
||||||
|
|
||||||
|
@ -23,17 +23,17 @@ shadow_enabled = true
|
||||||
script = ExtResource("1_jrm7s")
|
script = ExtResource("1_jrm7s")
|
||||||
vrpn_server = "212.201.64.122"
|
vrpn_server = "212.201.64.122"
|
||||||
|
|
||||||
[node name="RB1" type="Node3D" parent="Root/VRPN" node_paths=PackedStringArray("vrpn")]
|
[node name="RB1" type="Node3D" parent="Root/VRPN" node_paths=PackedStringArray("vrpn_client")]
|
||||||
script = ExtResource("2_fp2uy")
|
script = ExtResource("2_fp2uy")
|
||||||
vrpn = NodePath("..")
|
vrpn_client = NodePath("..")
|
||||||
tracker_name = "RB1"
|
tracker_name = "RB1"
|
||||||
|
|
||||||
[node name="axis" parent="Root/VRPN/RB1" instance=ExtResource("3_73ywu")]
|
[node name="axis" parent="Root/VRPN/RB1" instance=ExtResource("3_73ywu")]
|
||||||
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
|
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
|
||||||
|
|
||||||
[node name="RB2" type="Node3D" parent="Root/VRPN" node_paths=PackedStringArray("vrpn")]
|
[node name="RB2" type="Node3D" parent="Root/VRPN" node_paths=PackedStringArray("vrpn_client")]
|
||||||
script = ExtResource("2_fp2uy")
|
script = ExtResource("2_fp2uy")
|
||||||
vrpn = NodePath("..")
|
vrpn_client = NodePath("..")
|
||||||
tracker_name = "RB2"
|
tracker_name = "RB2"
|
||||||
|
|
||||||
[node name="axis" parent="Root/VRPN/RB2" instance=ExtResource("3_73ywu")]
|
[node name="axis" parent="Root/VRPN/RB2" instance=ExtResource("3_73ywu")]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=6 format=3 uid="uid://bj5ykdjle10tt"]
|
[gd_scene load_steps=6 format=3 uid="uid://bj5ykdjle10tt"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dmq3i7qmo1qe0" path="res://addons/vrpn/scripts/VRPN.gd" id="2_24d08"]
|
[ext_resource type="Script" uid="uid://dmq3i7qmo1qe0" path="res://addons/vrpn/scripts/VRPN_Client.gd" id="2_24d08"]
|
||||||
[ext_resource type="Script" uid="uid://dpj1wrvfsiq4v" path="res://addons/vrpn/scripts/VRPN_Tracker.gd" id="2_170dk"]
|
[ext_resource type="Script" uid="uid://dpj1wrvfsiq4v" path="res://addons/vrpn/scripts/VRPN_Tracker.gd" id="2_170dk"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b426fy7d6jw2d" path="res://addons/vrpn/assets/axis.blend" id="3_170dk"]
|
[ext_resource type="PackedScene" uid="uid://b426fy7d6jw2d" path="res://addons/vrpn/assets/axis.blend" id="3_170dk"]
|
||||||
[ext_resource type="Script" uid="uid://bmlyip5xa5df4" path="res://addons/vrpn/scripts/VRPN_Button.gd" id="4_j4l28"]
|
[ext_resource type="Script" uid="uid://bmlyip5xa5df4" path="res://addons/vrpn/scripts/VRPN_Button.gd" id="4_j4l28"]
|
||||||
|
@ -28,9 +28,9 @@ mesh = SubResource("PlaneMesh_24d08")
|
||||||
[node name="SpinTracker" type="Node3D" parent="Root"]
|
[node name="SpinTracker" type="Node3D" parent="Root"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.764802, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.764802, 0)
|
||||||
|
|
||||||
[node name="Tracker1" type="Node3D" parent="Root/SpinTracker" node_paths=PackedStringArray("vrpn")]
|
[node name="Tracker1" type="Node3D" parent="Root/SpinTracker" node_paths=PackedStringArray("vrpn_client")]
|
||||||
script = ExtResource("2_170dk")
|
script = ExtResource("2_170dk")
|
||||||
vrpn = NodePath("../../VRPN")
|
vrpn_client = NodePath("../../VRPN")
|
||||||
tracker_name = "Tracker1"
|
tracker_name = "Tracker1"
|
||||||
tracker_use_position = false
|
tracker_use_position = false
|
||||||
|
|
||||||
|
@ -44,9 +44,9 @@ text = "Y-Axis"
|
||||||
[node name="Offset2" type="Node3D" parent="Root/SpinTracker"]
|
[node name="Offset2" type="Node3D" parent="Root/SpinTracker"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0)
|
||||||
|
|
||||||
[node name="Tracker2" type="Node3D" parent="Root/SpinTracker/Offset2" node_paths=PackedStringArray("vrpn")]
|
[node name="Tracker2" type="Node3D" parent="Root/SpinTracker/Offset2" node_paths=PackedStringArray("vrpn_client")]
|
||||||
script = ExtResource("2_170dk")
|
script = ExtResource("2_170dk")
|
||||||
vrpn = NodePath("../../../VRPN")
|
vrpn_client = NodePath("../../../VRPN")
|
||||||
tracker_name = "Tracker2"
|
tracker_name = "Tracker2"
|
||||||
tracker_use_position = false
|
tracker_use_position = false
|
||||||
|
|
||||||
|
@ -60,9 +60,9 @@ text = "Z-Axis"
|
||||||
[node name="Offset0" type="Node3D" parent="Root/SpinTracker"]
|
[node name="Offset0" type="Node3D" parent="Root/SpinTracker"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0)
|
||||||
|
|
||||||
[node name="Tracker0" type="Node3D" parent="Root/SpinTracker/Offset0" node_paths=PackedStringArray("vrpn")]
|
[node name="Tracker0" type="Node3D" parent="Root/SpinTracker/Offset0" node_paths=PackedStringArray("vrpn_client")]
|
||||||
script = ExtResource("2_170dk")
|
script = ExtResource("2_170dk")
|
||||||
vrpn = NodePath("../../../VRPN")
|
vrpn_client = NodePath("../../../VRPN")
|
||||||
tracker_use_position = false
|
tracker_use_position = false
|
||||||
|
|
||||||
[node name="axis" parent="Root/SpinTracker/Offset0/Tracker0" instance=ExtResource("3_170dk")]
|
[node name="axis" parent="Root/SpinTracker/Offset0/Tracker0" instance=ExtResource("3_170dk")]
|
||||||
|
@ -72,6 +72,6 @@ transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.769847, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.769847, 0)
|
||||||
text = "X-Axis"
|
text = "X-Axis"
|
||||||
|
|
||||||
[node name="Button0" type="Node3D" parent="Root/SpinTracker" node_paths=PackedStringArray("vrpn")]
|
[node name="Button0" type="Node3D" parent="Root/SpinTracker" node_paths=PackedStringArray("vrpn_client")]
|
||||||
script = ExtResource("4_j4l28")
|
script = ExtResource("4_j4l28")
|
||||||
vrpn = NodePath("../../VRPN")
|
vrpn_client = NodePath("../../VRPN")
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
class_name VRPN_Button
|
class_name VRPN_Button
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
@export var vrpn : VRPN = null
|
@export var vrpn_client : VRPN_Client = null
|
||||||
@export var button_sensor : String = "Button0"
|
@export var button_sensor : String = "Button0"
|
||||||
@export var register_on_start : bool = true
|
@export var register_on_start : bool = true
|
||||||
|
|
||||||
var state : int = 0
|
var state : int = 0
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
if not vrpn:
|
if not vrpn_client:
|
||||||
push_warning("No VRPN client for button on '%s' given." % [self.name])
|
push_warning("No VRPN client for button on '%s' given." % [self.name])
|
||||||
elif register_on_start:
|
elif register_on_start:
|
||||||
vrpn.buttons.append(self)
|
vrpn_client.buttons.append(self)
|
||||||
|
|
||||||
func _on_vrpn(vrpn_data : Dictionary) -> void:
|
func _on_vrpn(vrpn_data : Dictionary) -> void:
|
||||||
if vrpn_data['sensor'] == button_sensor:
|
if vrpn_data['sensor'] == button_sensor:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
class_name VRPN
|
class_name VRPN_Client
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
# tracking associated data
|
# tracking associated data
|
||||||
|
@ -88,11 +88,11 @@ func _on_data(data : Array):
|
||||||
var as_cookie = bytes.get_string_from_ascii()
|
var as_cookie = bytes.get_string_from_ascii()
|
||||||
|
|
||||||
# Cookie Hack!
|
# Cookie Hack!
|
||||||
if as_cookie.begins_with(VRPN.magic_cookie_start): #
|
if as_cookie.begins_with(VRPN_Client.magic_cookie_start): #
|
||||||
# kaboom we just send back the same cookie :)
|
# kaboom we just send back the same cookie :)
|
||||||
self.send(bytes)
|
self.send(bytes)
|
||||||
else:
|
else:
|
||||||
VRPN.marshall_block(bytes,self)
|
VRPN_Client.marshall_block(bytes,self)
|
||||||
|
|
||||||
|
|
||||||
func _on_connected(s : StreamPeerTCP):
|
func _on_connected(s : StreamPeerTCP):
|
||||||
|
@ -105,7 +105,7 @@ func _on_error(msg:String):
|
||||||
push_warning(msg) # Replace with function body.
|
push_warning(msg) # Replace with function body.
|
||||||
|
|
||||||
|
|
||||||
static func marshall_block(data : PackedByteArray,session : VRPN) -> void:
|
static func marshall_block(data : PackedByteArray,client : VRPN_Client) -> void:
|
||||||
|
|
||||||
# need to fix that
|
# need to fix that
|
||||||
var block_offset : int = 0
|
var block_offset : int = 0
|
||||||
|
@ -134,7 +134,7 @@ static func marshall_block(data : PackedByteArray,session : VRPN) -> void:
|
||||||
#print("message_type '%d'" % message_type)
|
#print("message_type '%d'" % message_type)
|
||||||
#print("sequence_num '%d'" % sequence_num)
|
#print("sequence_num '%d'" % sequence_num)
|
||||||
|
|
||||||
marshall_body(data.slice(block_offset+header_size,block_offset+length),message_type,sender_id,session)
|
marshall_body(data.slice(block_offset+header_size,block_offset+length),message_type,sender_id,client)
|
||||||
|
|
||||||
# next datablock
|
# next datablock
|
||||||
block_offset += aligned_size(length)
|
block_offset += aligned_size(length)
|
||||||
|
@ -144,7 +144,7 @@ static func decode_string(stream : StreamPeerBuffer) -> String:
|
||||||
return stream.get_string(len)
|
return stream.get_string(len)
|
||||||
|
|
||||||
|
|
||||||
static func marshall_body(data : PackedByteArray,message_type : int, sender_id: int, session : VRPN):
|
static func marshall_body(data : PackedByteArray,message_type : int, sender_id: int, client : VRPN_Client):
|
||||||
var body := StreamPeerBuffer.new()
|
var body := StreamPeerBuffer.new()
|
||||||
body.data_array = data
|
body.data_array = data
|
||||||
body.big_endian = true
|
body.big_endian = true
|
||||||
|
@ -157,16 +157,16 @@ static func marshall_body(data : PackedByteArray,message_type : int, sender_id:
|
||||||
-1: # sensor names
|
-1: # sensor names
|
||||||
var name = decode_string(body)
|
var name = decode_string(body)
|
||||||
print("sensor name is '%s' with '%d" % [name,sender_id])
|
print("sensor name is '%s' with '%d" % [name,sender_id])
|
||||||
session.sensors[sender_id] = name
|
client.sensors[sender_id] = name
|
||||||
-2: # message names
|
-2: # message names
|
||||||
var name = decode_string(body)
|
var name = decode_string(body)
|
||||||
print("message name is '%s' for message_type '%d'" % [name,sender_id])
|
print("message name is '%s' for message_type '%d'" % [name,sender_id])
|
||||||
session.messages[sender_id] = name
|
client.messages[sender_id] = name
|
||||||
return
|
return
|
||||||
|
|
||||||
# now we use the string identifiers
|
# now we use the string identifiers
|
||||||
# because they are supposedly dynamically assigned
|
# because they are supposedly dynamically assigned
|
||||||
match session.messages[message_type]:
|
match client.messages[message_type]:
|
||||||
'vrpn_Tracker Pos_Quat': # quat pos
|
'vrpn_Tracker Pos_Quat': # quat pos
|
||||||
# get id
|
# get id
|
||||||
var sensor_id = body.get_32()
|
var sensor_id = body.get_32()
|
||||||
|
@ -176,10 +176,10 @@ static func marshall_body(data : PackedByteArray,message_type : int, sender_id:
|
||||||
# VRPN quat layout and Godot Quaternion c'tor identical with x,y,z,w
|
# VRPN quat layout and Godot Quaternion c'tor identical with x,y,z,w
|
||||||
var quat = Quaternion(body.get_double(),body.get_double(),body.get_double(),body.get_double()).normalized()
|
var quat = Quaternion(body.get_double(),body.get_double(),body.get_double(),body.get_double()).normalized()
|
||||||
# submit to listener
|
# submit to listener
|
||||||
for r in session.tracker:
|
for r in client.tracker:
|
||||||
r._on_vrpn({
|
r._on_vrpn({
|
||||||
"type" : TrackingDataType.POS_QUAT,
|
"type" : TrackingDataType.POS_QUAT,
|
||||||
"tracker" : session.sensors[sender_id],
|
"tracker" : client.sensors[sender_id],
|
||||||
"sensor" : sensor_id,
|
"sensor" : sensor_id,
|
||||||
"position" : pos,
|
"position" : pos,
|
||||||
"rotation" : quat
|
"rotation" : quat
|
||||||
|
@ -193,10 +193,10 @@ static func marshall_body(data : PackedByteArray,message_type : int, sender_id:
|
||||||
# VRPN quat layout and Godot Quaternion c'tor identical with x,y,z,w
|
# VRPN quat layout and Godot Quaternion c'tor identical with x,y,z,w
|
||||||
var vel_rot = Quaternion(body.get_double(),body.get_double(),body.get_double(),body.get_double()).normalized()
|
var vel_rot = Quaternion(body.get_double(),body.get_double(),body.get_double(),body.get_double()).normalized()
|
||||||
# submit to listener
|
# submit to listener
|
||||||
for r in session.tracker:
|
for r in client.tracker:
|
||||||
r._on_vrpn({
|
r._on_vrpn({
|
||||||
"type" : TrackingDataType.VELOCITY,
|
"type" : TrackingDataType.VELOCITY,
|
||||||
"tracker" : session.sensors[sender_id],
|
"tracker" : client.sensors[sender_id],
|
||||||
"sensor" : sensor_id,
|
"sensor" : sensor_id,
|
||||||
"velocity_linear" : vel,
|
"velocity_linear" : vel,
|
||||||
"velocity_rotation" : vel_rot
|
"velocity_rotation" : vel_rot
|
||||||
|
@ -212,10 +212,10 @@ static func marshall_body(data : PackedByteArray,message_type : int, sender_id:
|
||||||
|
|
||||||
var acc_dt = body.get_double() # padding
|
var acc_dt = body.get_double() # padding
|
||||||
# submit to listener
|
# submit to listener
|
||||||
for r in session.tracker:
|
for r in client.tracker:
|
||||||
r._on_vrpn({
|
r._on_vrpn({
|
||||||
"type" : TrackingDataType.ACCELERATION,
|
"type" : TrackingDataType.ACCELERATION,
|
||||||
"tracker" : session.sensors[sender_id],
|
"tracker" : client.sensors[sender_id],
|
||||||
"sensor" : sensor_id,
|
"sensor" : sensor_id,
|
||||||
"acceleration_linear" : acc,
|
"acceleration_linear" : acc,
|
||||||
"acceleration_rotation" : acc_rot,
|
"acceleration_rotation" : acc_rot,
|
||||||
|
@ -226,11 +226,11 @@ static func marshall_body(data : PackedByteArray,message_type : int, sender_id:
|
||||||
var button_changes : Dictionary = {}
|
var button_changes : Dictionary = {}
|
||||||
for i in range(num_buttons):
|
for i in range(num_buttons):
|
||||||
button_changes[i] = body.get_32()
|
button_changes[i] = body.get_32()
|
||||||
for button in session.buttons:
|
for button in client.buttons:
|
||||||
button._on_vrpn(
|
button._on_vrpn(
|
||||||
{
|
{
|
||||||
"type" : ButtonDataType.BUTTON_CHANGE,
|
"type" : ButtonDataType.BUTTON_CHANGE,
|
||||||
"sensor" : session.sensors[sender_id],
|
"sensor" : client.sensors[sender_id],
|
||||||
"changes" : button_changes
|
"changes" : button_changes
|
||||||
}
|
}
|
||||||
)
|
)
|
|
@ -1,7 +1,7 @@
|
||||||
class_name VRPN_Tracker
|
class_name VRPN_Tracker
|
||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
@export var vrpn : VRPN = null
|
@export var vrpn_client : VRPN_Client = null
|
||||||
@export var tracker_name : String = "Tracker0"
|
@export var tracker_name : String = "Tracker0"
|
||||||
@export var tracker_sensor : int = 0
|
@export var tracker_sensor : int = 0
|
||||||
@export var tracker_use_position : bool = true
|
@export var tracker_use_position : bool = true
|
||||||
|
@ -9,25 +9,24 @@ extends Node3D
|
||||||
@export var register_on_start : bool = true
|
@export var register_on_start : bool = true
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
if vrpn and register_on_start:
|
if vrpn_client and register_on_start:
|
||||||
vrpn.tracker.append(self)
|
vrpn_client.tracker.append(self)
|
||||||
|
|
||||||
func _on_vrpn(vrpn_data : Dictionary):
|
func _on_vrpn(vrpn_data : Dictionary):
|
||||||
match vrpn_data['type'] as VRPN.TrackingDataType:
|
match vrpn_data['type'] as VRPN_Client.TrackingDataType:
|
||||||
VRPN.TrackingDataType.POS_QUAT:
|
VRPN_Client.TrackingDataType.POS_QUAT:
|
||||||
if vrpn_data['tracker'] == tracker_name and vrpn_data['sensor'] == tracker_sensor:
|
if vrpn_data['tracker'] == tracker_name and vrpn_data['sensor'] == tracker_sensor:
|
||||||
if tracker_use_position:
|
if tracker_use_position:
|
||||||
self.global_position = vrpn_data['position']
|
self.global_position = vrpn_data['position']
|
||||||
if tracker_use_rotation:
|
if tracker_use_rotation:
|
||||||
var rotation := vrpn_data['rotation'] as Quaternion
|
var rotation := vrpn_data['rotation'] as Quaternion
|
||||||
self.global_basis = Basis(rotation)
|
self.global_basis = Basis(rotation)
|
||||||
VRPN.TrackingDataType.ACCELERATION:
|
VRPN_Client.TrackingDataType.ACCELERATION:
|
||||||
pass
|
pass
|
||||||
VRPN.TrackingDataType.VELOCITY:
|
VRPN_Client.TrackingDataType.VELOCITY:
|
||||||
pass
|
pass
|
||||||
_:
|
_:
|
||||||
push_warning("unknown tracker datatype")
|
push_warning("unknown tracker datatype")
|
||||||
|
|
||||||
|
|
||||||
func _on_vrpn_connected(s):
|
func _on_vrpn_connected(s):
|
||||||
pass # Replace with function body.
|
pass # Replace with function body.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue