initial commit
This commit is contained in:
@@ -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")
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
uid://cfife4hdyf3d7
|
||||
@@ -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)
|
||||
@@ -0,0 +1 @@
|
||||
uid://bxo7pj05um5il
|
||||
Reference in New Issue
Block a user