From 7987fa3c8a5ef74b32ccb59b6b9aee3c6fdc7106 Mon Sep 17 00:00:00 2001 From: Hartmut Seichter Date: Tue, 8 Jul 2025 21:25:46 +0200 Subject: [PATCH] added signalling to button and demo --- addons/vrpn/examples/spin_tracker.tscn | 29 +++++++++++++++++++++++++- addons/vrpn/scripts/VRPN_Button.gd | 4 +++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/addons/vrpn/examples/spin_tracker.tscn b/addons/vrpn/examples/spin_tracker.tscn index a75fc4c..4a973d2 100644 --- a/addons/vrpn/examples/spin_tracker.tscn +++ b/addons/vrpn/examples/spin_tracker.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://bj5ykdjle10tt"] +[gd_scene load_steps=8 format=3 uid="uid://bj5ykdjle10tt"] [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"] @@ -8,6 +8,22 @@ [sub_resource type="PlaneMesh" id="PlaneMesh_24d08"] size = Vector2(6, 2) +[sub_resource type="SphereMesh" id="SphereMesh_j4l28"] +radius = 0.25 +height = 0.5 +radial_segments = 32 +rings = 16 + +[sub_resource type="GDScript" id="GDScript_j4l28"] +resource_name = "ButtonReact" +script/source = "extends Node3D + + +func _on_button_0_on_vrpn_button(data): + if 0 in data['changes']: + self.visible = (data['changes'][0] == 1) +" + [node name="Node3D" type="Node3D"] [node name="Camera3D" type="Camera3D" parent="."] @@ -73,5 +89,16 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.769847, 0) text = "X-Axis" [node name="Button0" type="Node3D" parent="Root/SpinTracker" node_paths=PackedStringArray("vrpn_client")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.21693, 0) script = ExtResource("4_j4l28") vrpn_client = NodePath("../../VRPN") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Root/SpinTracker/Button0"] +mesh = SubResource("SphereMesh_j4l28") +script = SubResource("GDScript_j4l28") + +[node name="Label3D" type="Label3D" parent="Root/SpinTracker/Button0/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.431905, 0) +text = "Button" + +[connection signal="on_vrpn_button" from="Root/SpinTracker/Button0" to="Root/SpinTracker/Button0/MeshInstance3D" method="_on_button_0_on_vrpn_button"] diff --git a/addons/vrpn/scripts/VRPN_Button.gd b/addons/vrpn/scripts/VRPN_Button.gd index 5508374..750b8b1 100644 --- a/addons/vrpn/scripts/VRPN_Button.gd +++ b/addons/vrpn/scripts/VRPN_Button.gd @@ -7,6 +7,8 @@ extends Node var state : int = 0 +signal on_vrpn_button(data:Dictionary) + func _ready(): if not vrpn_client: push_warning("No VRPN client for button on '%s' given." % [self.name]) @@ -15,4 +17,4 @@ func _ready(): func _on_vrpn(vrpn_data : Dictionary) -> void: if vrpn_data['sensor'] == button_sensor: - pass + on_vrpn_button.emit(vrpn_data)