Added a dynamic layout system where UI elements can be moved about on a tiled grid.

This commit is contained in:
RedNicStone committed 2026-11-09 18:14:52 +01:00
1 parent ea6ba54666
commit 26c29df4ad
34 files changed
+1269

No files matched your search

+49
View File
@@ -0,0 +1,49 @@
[gd_scene format=3]
[ext_resource type="PackedScene" path="res://scenes/display_left.tscn" id="left"]
[ext_resource type="PackedScene" path="res://scenes/display_right.tscn" id="right"]
[ext_resource type="Script" path="res://scripts/layout_preview.gd" id="preview"]
[ext_resource type="PackedScene" path="res://components/layout_overview.tscn" id="overview"]
[node name="DualPortraitLayout" type="Control"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("preview")
configuration = 1
[node name="Overview" parent="." instance=ExtResource("overview")]
layout_mode = 1
grid_size = Vector2i(18, 32)
[node name="Canvas" parent="Overview/Dashboard" instance=ExtResource("left")]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="RightWindow" type="Window" parent="."]
title = "ROV / right portrait"
visible = false
size = Vector2i(540, 960)
content_scale_size = Vector2i(1080, 1920)
content_scale_mode = 1
content_scale_aspect = 1
[node name="RightOverview" parent="RightWindow" instance=ExtResource("overview")]
layout_mode = 1
hot_corner_enabled = false
grid_size = Vector2i(18, 32)
[node name="Canvas" parent="RightWindow/RightOverview/Dashboard" instance=ExtResource("right")]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
+107
View File
@@ -0,0 +1,107 @@
[gd_scene format=3]
[ext_resource type="PackedScene" path="res://components/layout_canvas.tscn" id="canvas"]
[ext_resource type="PackedScene" path="res://components/layout_item.tscn" id="item"]
[ext_resource type="PackedScene" path="res://components/camera_layout_slot.tscn" id="camera"]
[ext_resource type="PackedScene" path="res://components/vehicle_status_panel.tscn" id="vehicle"]
[ext_resource type="PackedScene" path="res://components/motion_panel.tscn" id="motion"]
[ext_resource type="PackedScene" path="res://components/layout_slot.tscn" id="slot"]
[ext_resource type="Script" path="res://scripts/layout_preview.gd" id="preview"]
[ext_resource type="PackedScene" path="res://components/layout_overview.tscn" id="overview"]
[ext_resource type="PackedScene" path="res://components/link_panel.tscn" id="link"]
[node name="LandscapeLayout" type="Control"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("preview")
[node name="Overview" parent="." instance=ExtResource("overview")]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Canvas" parent="Overview/Dashboard" instance=ExtResource("canvas")]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
config_path = "user://layouts/landscape.json"
legacy_config_path = "user://layout_landscape.cfg"
[node name="Camera" parent="Overview/Dashboard/Canvas" instance=ExtResource("item")]
layout_mode = 0
panel_id = "camera"
cell_rect = Rect2i(0, 0, 16, 10)
minimum_cells = Vector2i(8, 5)
reference_size = Vector2(960, 600)
[node name="Content" parent="Overview/Dashboard/Canvas/Camera" instance=ExtResource("camera")]
layout_mode = 0
[node name="Vehicle" parent="Overview/Dashboard/Canvas" instance=ExtResource("item")]
layout_mode = 0
panel_id = "vehicle"
cell_rect = Rect2i(16, 0, 10, 8)
minimum_cells = Vector2i(6, 4)
reference_size = Vector2(600, 440)
[node name="Content" parent="Overview/Dashboard/Canvas/Vehicle" instance=ExtResource("vehicle")]
layout_mode = 0
[node name="Motion" parent="Overview/Dashboard/Canvas" instance=ExtResource("item")]
layout_mode = 0
panel_id = "motion"
cell_rect = Rect2i(16, 8, 10, 7)
minimum_cells = Vector2i(6, 4)
reference_size = Vector2(600, 410)
background_path = NodePath("Content/Background")
[node name="Content" parent="Overview/Dashboard/Canvas/Motion" instance=ExtResource("motion")]
layout_mode = 0
[node name="Environment" parent="Overview/Dashboard/Canvas" instance=ExtResource("item")]
layout_mode = 0
panel_id = "environment"
cell_rect = Rect2i(26, 0, 6, 8)
minimum_cells = Vector2i(4, 3)
reference_size = Vector2(360, 240)
fill_allocation = true
[node name="Content" parent="Overview/Dashboard/Canvas/Environment" instance=ExtResource("slot")]
layout_mode = 0
title = "ENVIRONMENT"
description = "Depth · pressure · water temperature"
[node name="VideoVR" parent="Overview/Dashboard/Canvas" instance=ExtResource("item")]
layout_mode = 0
panel_id = "videovr"
cell_rect = Rect2i(0, 10, 16, 8)
minimum_cells = Vector2i(6, 4)
reference_size = Vector2(600, 400)
fill_allocation = true
[node name="Content" parent="Overview/Dashboard/Canvas/VideoVR" instance=ExtResource("slot")]
layout_mode = 0
title = "VIDEO / VR"
description = "Latency breakdown · headset · resolution"
[node name="Link" parent="Overview/Dashboard/Canvas" instance=ExtResource("item")]
layout_mode = 0
panel_id = "link"
cell_rect = Rect2i(26, 8, 6, 4)
minimum_cells = Vector2i(4, 3)
reference_size = Vector2(360, 240)
[node name="Content" parent="Overview/Dashboard/Canvas/Link" instance=ExtResource("link")]
layout_mode = 0