initial commit

This commit is contained in:
2026-07-04 18:22:23 -06:00
commit 55522fc6fc
272 changed files with 12391 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
[gd_scene format=3 uid="uid://dtvaydkrpc6vc"]
[ext_resource type="Script" uid="uid://cfife4hdyf3d7" path="res://sensor_approval/provided_data.gd" id="1_nu61k"]
[ext_resource type="PackedScene" uid="uid://bs7s0hgbkuu7b" path="res://sensor_approval/data_column.tscn" id="2_vdia1"]
[node name="ProvidedData" type="HBoxContainer" unique_id=439091695]
script = ExtResource("1_nu61k")
data_column_scene = ExtResource("2_vdia1")
+43
View File
@@ -0,0 +1,43 @@
[gd_scene format=3 uid="uid://bdpu08j1vptl8"]
[ext_resource type="Script" uid="uid://bxo7pj05um5il" path="res://sensor_approval/sensor_approval.gd" id="1_a7kmn"]
[ext_resource type="PackedScene" uid="uid://bs7s0hgbkuu7b" path="res://sensor_approval/data_column.tscn" id="2_x8ge5"]
[node name="SensorApproval" type="PanelContainer" unique_id=32137099]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = -1000.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("1_a7kmn")
data_column_scene = ExtResource("2_x8ge5")
[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=2086324804]
layout_mode = 2
[node name="Label" type="Label" parent="HBoxContainer" unique_id=1098572929]
layout_mode = 2
text = "127.0.0.1"
[node name="Control" type="Control" parent="HBoxContainer" unique_id=1047175521]
custom_minimum_size = Vector2(2, 0)
layout_mode = 2
[node name="Approve" type="Button" parent="HBoxContainer" unique_id=2039550355]
layout_mode = 2
mouse_filter = 1
text = "Approve"
[node name="Control2" type="Control" parent="HBoxContainer" unique_id=225178386]
custom_minimum_size = Vector2(2, 0)
layout_mode = 2
[node name="Decline" type="Button" parent="HBoxContainer" unique_id=1630362833]
layout_mode = 2
mouse_filter = 1
text = "Decline"
[connection signal="pressed" from="HBoxContainer/Approve" to="." method="_on_approve_pressed"]
[connection signal="pressed" from="HBoxContainer/Decline" to="." method="_on_decline_pressed"]
@@ -0,0 +1,62 @@
extends VBoxContainer
class_name SensorApprovalController
@export var sensor_approval_scene: PackedScene
var sensor_approval_nodes = {}
var window_size: Vector2
var window_center: Vector2
var settings_open: bool = false
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
SettingSignals.settings_opened.connect(_on_settings_opened)
SettingSignals.settings_closed.connect(_on_settings_closed)
ServerSignals.sensor_request_received.connect(_on_sensor_request_received)
ServerSignals.sensor_approved.connect(_on_sensor_approved)
ServerSignals.sensor_declined.connect(_on_sensor_declined)
window_size = DisplayServer.window_get_size()
window_center = window_size / 2
func _on_settings_opened():
settings_open = true
for val in sensor_approval_nodes:
remove_child(sensor_approval_nodes[val])
func _on_settings_closed():
settings_open = false
for val in sensor_approval_nodes:
add_child(sensor_approval_nodes[val])
_update_container_position()
func _on_sensor_request_received(sensor_ip: String, data_provided: Array):
sensor_approval_nodes[sensor_ip] = sensor_approval_scene.instantiate()
sensor_approval_nodes[sensor_ip].set_provided_data(sensor_ip, data_provided)
if not settings_open:
add_child(sensor_approval_nodes[sensor_ip])
_update_container_position()
func _update_container_position():
for val in sensor_approval_nodes:
var container_size = sensor_approval_nodes[val].size
container_size = Vector2(container_size.x, container_size.y * sensor_approval_nodes.size())
position = window_center - (container_size/2)
return
func _on_sensor_approved(sensor_ip: String):
_remove_approval_scene(sensor_ip)
func _on_sensor_declined(sensor_ip: String):
_remove_approval_scene(sensor_ip)
func _remove_approval_scene(sensor_ip: String):
if sensor_ip not in sensor_approval_nodes:
return
remove_child(sensor_approval_nodes[sensor_ip])
sensor_approval_nodes[sensor_ip].queue_free()
sensor_approval_nodes.erase(sensor_ip)
position = window_center - (size/2)
_update_container_position()
@@ -0,0 +1 @@
uid://ddil0ki5etrwp
+13
View File
@@ -0,0 +1,13 @@
[gd_scene format=3 uid="uid://bs7s0hgbkuu7b"]
[node name="DataColumn" type="VBoxContainer" unique_id=210374376]
offset_right = 1.0
offset_bottom = 50.0
[node name="DataLabel" type="Label" parent="." unique_id=1663588703]
layout_mode = 2
horizontal_alignment = 1
[node name="DataValue" type="Label" parent="." unique_id=1789333906]
layout_mode = 2
horizontal_alignment = 1
+39
View File
@@ -0,0 +1,39 @@
extends HBoxContainer
"""
offset | size | type | description
4 | 1 byte | bool | peer provides datetime
5 | 1 byte | bool | peer provides gps
6 | 1 byte | bool | peer provides accelerometer
7 | 1 byte | bool | peer provides gyroscope
8 | 1 byte | bool | peer provides magnetometer
9 | 1 byte | bool | peer provides euler orientation
10 | 1 byte | bool | peer provides quaternion orientation
"""
var data_labels = ["Date Time", "PNT", "Accel", "Gyro", "Magnet", "Euler", "Quat"]
var provided_data: Array = [0, 0, 0, 0, 0, 0, 0]
var data_columns: Array
@export var data_column_scene: PackedScene
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
_setup_data_columns()
func _setup_data_columns():
for i in range(provided_data.size()):
var column_instance = data_column_scene.instantiate()
column_instance.get_node('DataLabel').text = data_labels[i]
if provided_data[i] == 0:
column_instance.get_node('DataValue').text = "False"
else:
column_instance.get_node('DataValue').text = "True"
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func set_provided_data(incoming_provided_data):
provided_data = incoming_provided_data
+1
View File
@@ -0,0 +1 @@
uid://cfife4hdyf3d7
+48
View File
@@ -0,0 +1,48 @@
extends PanelContainer
var ip_label: Label
var data_instance: Node
var sensor_ip: String = "127.0.0.1"
var data_labels = ["PNT", "Accel", "Gyro", "Magnet"]
var provided_data: Array = [0, 0, 0, 0]
var data_columns: Array
@export var data_column_scene: PackedScene
func _setup_data_columns():
var container = get_node('HBoxContainer')
for i in range(provided_data.size()):
var spacer: Control = container.add_spacer(false)
spacer.size = Vector2(2, 0)
var column_instance = data_column_scene.instantiate()
column_instance.get_node('DataLabel').text = data_labels[i]
data_columns.append(column_instance)
if provided_data[i] == 0:
column_instance.get_node('DataValue').text = "False"
else:
column_instance.get_node('DataValue').text = "True"
container.add_child(column_instance)
func set_provided_data(incoming_sensor_ip: String, incoming_provided_data: Array):
sensor_ip = incoming_sensor_ip
ip_label = get_node('HBoxContainer/Label')
ip_label.text = sensor_ip
provided_data = incoming_provided_data
if data_columns.size() == 0:
_setup_data_columns()
else:
for idx in range(provided_data.size()):
if provided_data[idx] == 0:
data_columns[idx].get_node('DataValue').text = "False"
else:
data_columns[idx].get_node('DataValue').text = "True"
func _on_approve_pressed() -> void:
ServerSignals.sensor_approved.emit(sensor_ip)
func _on_decline_pressed() -> void:
ServerSignals.sensor_declined.emit(sensor_ip)
+1
View File
@@ -0,0 +1 @@
uid://bxo7pj05um5il