From dd3867fbf16b27cfdba334a3685671c94fffe766 Mon Sep 17 00:00:00 2001 From: Sergey Lapin Date: Wed, 30 Apr 2025 23:19:00 +0300 Subject: [PATCH] Fixed lines data issues --- godot/astream/terrain/details/bus-stop.tscn | 12 +- .../terrain/details/business-bar1.tscn | 42 +-- .../terrain/details/business-cafe1.tscn | 46 +--- .../terrain/details/business-office1.tscn | 12 +- .../terrain/details/business-store1.tscn | 46 +--- .../astream/terrain/details/gym-exterior.tscn | 42 ++- .../terrain/details/home-exterior.tscn | 36 +-- .../details/logistics-center-exterior.tscn | 16 +- .../terrain/details/office-exterior.tscn | 16 +- .../astream/terrain/details/power-in-box.tscn | 12 +- .../terrain/details/power-pole-wire.tscn | 22 +- godot/astream/terrain/details/power-pole.tscn | 12 +- .../terrain/details/residental-garage1.tscn | 253 +++++++++--------- .../terrain/details/residental-house1.tscn | 42 +-- .../terrain/details/residental-house10.tscn | 61 ++--- .../terrain/details/residental-house11.tscn | 55 ++-- .../terrain/details/residental-house12a.tscn | 32 +-- .../terrain/details/residental-house13.tscn | 25 +- .../terrain/details/residental-house2.tscn | 45 ++-- .../terrain/details/residental-house4.tscn | 27 +- .../terrain/details/residental-house5.tscn | 53 ++-- .../terrain/details/residental-house7.tscn | 37 +-- .../terrain/details/residental-house8.tscn | 27 +- .../terrain/details/residental-house9.tscn | 71 ++--- .../terrain/details/residental-hut1.tscn | 34 +-- .../terrain/details/residental-parking1.tscn | 12 +- .../terrain/details/townhall-exterior.tscn | 16 +- godot/config/stream.conf | 2 +- src/modules/stream/buildings_data.cpp | 44 ++- src/modules/stream/buildings_data.h | 2 + src/modules/stream/buildings_data_module.cpp | 31 ++- src/modules/stream/road_lines_data.cpp | 181 +++++++------ src/modules/stream/road_lines_data.h | 38 ++- src/modules/stream/road_lines_editor.cpp | 105 ++++++-- src/modules/stream/road_processing.cpp | 81 ++++-- src/modules/stream/stream.cpp | 3 +- src/modules/stream/ui/main_tabs.cpp | 51 ++-- 37 files changed, 770 insertions(+), 872 deletions(-) diff --git a/godot/astream/terrain/details/bus-stop.tscn b/godot/astream/terrain/details/bus-stop.tscn index a6217e1..a5f2a4e 100644 --- a/godot/astream/terrain/details/bus-stop.tscn +++ b/godot/astream/terrain/details/bus-stop.tscn @@ -25,14 +25,6 @@ shape = SubResource( 1 ) transform = Transform( 1, 0, 0, 0, 0.915396, 0.402555, 0, -0.402555, 0.915396, 0, 4.61468, 0.296666 ) shape = SubResource( 1 ) -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 50.0 - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="bus-stop" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="bus-stop" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/business-bar1.tscn b/godot/astream/terrain/details/business-bar1.tscn index 493d9df..534cb55 100644 --- a/godot/astream/terrain/details/business-bar1.tscn +++ b/godot/astream/terrain/details/business-bar1.tscn @@ -8,48 +8,22 @@ extents = Vector3( 0.7, 1, 0.6 ) [node name="business-bar1" type="Spatial"] -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 200.0 +[node name="business-bar1" parent="MergeGroup" instance=ExtResource( 1 )] -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] +[node name="door1-portal" parent="." instance=ExtResource( 2 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 1, 15.2012 ) -skeleton = NodePath("../../..") -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] +[node name="actions" type="Node" parent="door1-portal/enter_destination"] -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] +[node name="Area" type="Area" parent="door1-portal/enter_destination"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) shape = SubResource( 1 ) - -[node name="door1-portal2" parent="LOD/0" instance=ExtResource( 2 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 6, 15.2079 ) -skeleton = NodePath("../../..") - -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal2" groups=["smart_object"]] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) - -[node name="actions" type="Node" parent="LOD/0/door1-portal2/enter_destination"] - -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal2/enter_destination/actions"] - -[node name="Area" type="Area" parent="LOD/0/door1-portal2/enter_destination"] - -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal2/enter_destination/Area"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) -shape = SubResource( 1 ) - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="business-bar1" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="Spatial" type="Spatial" parent="LOD"] -visible = false diff --git a/godot/astream/terrain/details/business-cafe1.tscn b/godot/astream/terrain/details/business-cafe1.tscn index 42f8149..59eada3 100644 --- a/godot/astream/terrain/details/business-cafe1.tscn +++ b/godot/astream/terrain/details/business-cafe1.tscn @@ -9,54 +9,28 @@ extents = Vector3( 0.7, 1, 0.6 ) [node name="business-cafe1" type="Spatial"] -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 200.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] +[node name="door1-portal" parent="." instance=ExtResource( 2 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 1, 11.6464 ) -skeleton = NodePath("../../..") -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] +[node name="actions" type="Node" parent="door1-portal/enter_destination"] -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] +[node name="Area" type="Area" parent="door1-portal/enter_destination"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) shape = SubResource( 1 ) -[node name="door1-portal2" parent="LOD/0" instance=ExtResource( 2 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 1, -8.35364 ) -skeleton = NodePath("../../..") +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal2" groups=["smart_object"]] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) - -[node name="actions" type="Node" parent="LOD/0/door1-portal2/enter_destination"] - -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal2/enter_destination/actions"] - -[node name="Area" type="Area" parent="LOD/0/door1-portal2/enter_destination"] - -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal2/enter_destination/Area"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) -shape = SubResource( 1 ) - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -9 ) -[node name="residental-house-stair2" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair2" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 12 ) -[node name="business-cafe1" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="business-cafe1" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/business-office1.tscn b/godot/astream/terrain/details/business-office1.tscn index 9c594ef..23c0529 100644 --- a/godot/astream/terrain/details/business-office1.tscn +++ b/godot/astream/terrain/details/business-office1.tscn @@ -4,14 +4,6 @@ [node name="business-office1" type="Spatial"] -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 150.0 - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="business-office1" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="business-office1" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/business-store1.tscn b/godot/astream/terrain/details/business-store1.tscn index b3eac8c..2b7fd79 100644 --- a/godot/astream/terrain/details/business-store1.tscn +++ b/godot/astream/terrain/details/business-store1.tscn @@ -9,54 +9,28 @@ extents = Vector3( 0.7, 1, 0.6 ) [node name="business-store1" type="Spatial"] -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 200.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] +[node name="door1-portal" parent="." instance=ExtResource( 2 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 1, 11.3964 ) -skeleton = NodePath("../../..") -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] +[node name="actions" type="Node" parent="door1-portal/enter_destination"] -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] +[node name="Area" type="Area" parent="door1-portal/enter_destination"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) shape = SubResource( 1 ) -[node name="door1-portal2" parent="LOD/0" instance=ExtResource( 2 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 1, -8.63923 ) -skeleton = NodePath("../../..") +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal2" groups=["smart_object"]] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) - -[node name="actions" type="Node" parent="LOD/0/door1-portal2/enter_destination"] - -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal2/enter_destination/actions"] - -[node name="Area" type="Area" parent="LOD/0/door1-portal2/enter_destination"] - -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal2/enter_destination/Area"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) -shape = SubResource( 1 ) - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 12 ) -[node name="residental-house-stair2" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair2" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 0, 0, -9 ) -[node name="business-store1" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="business-store1" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/gym-exterior.tscn b/godot/astream/terrain/details/gym-exterior.tscn index 5e09c06..9f7a191 100644 --- a/godot/astream/terrain/details/gym-exterior.tscn +++ b/godot/astream/terrain/details/gym-exterior.tscn @@ -19,66 +19,58 @@ polygon_points = PoolVector2Array( 46.5459, -47.5139, 48.291, 48.4641, -47.4376, [node name="gym-exterior" type="Spatial"] -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 350.0 - -[node name="scene_gym" type="Spatial" parent="LOD/0" groups=["actuator"]] +[node name="scene_gym" type="Spatial" parent="." groups=["actuator"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32.3505, 2.70111, 0.0815773 ) -[node name="Area" type="Area" parent="LOD/0/scene_gym"] +[node name="Area" type="Area" parent="scene_gym"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/scene_gym/Area"] +[node name="CollisionShape" type="CollisionShape" parent="scene_gym/Area"] shape = SubResource( 1 ) -[node name="scene_shooting_gallery" type="Spatial" parent="LOD/0" groups=["actuator"]] +[node name="scene_shooting_gallery" type="Spatial" parent="." groups=["actuator"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.74583, 3.20716, -0.052886 ) -[node name="Area" type="Area" parent="LOD/0/scene_shooting_gallery"] +[node name="Area" type="Area" parent="scene_shooting_gallery"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/scene_shooting_gallery/Area"] +[node name="CollisionShape" type="CollisionShape" parent="scene_shooting_gallery/Area"] shape = SubResource( 2 ) -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="gym-exterior" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="gym-exterior" parent="MergeGroup" instance=ExtResource( 1 )] -[node name="Occluder" type="Occluder" parent="LOD/0"] +[node name="Occluder" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -28.5533 ) shape = SubResource( 3 ) -[node name="Occluder2" type="Occluder" parent="LOD/0"] +[node name="Occluder2" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 28.688 ) shape = SubResource( 3 ) -[node name="Occluder3" type="Occluder" parent="LOD/0"] +[node name="Occluder3" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 28, 0, -0.312035 ) shape = SubResource( 3 ) -[node name="Occluder4" type="Occluder" parent="LOD/0"] +[node name="Occluder4" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -29, 0, -0.312035 ) shape = SubResource( 3 ) -[node name="Occluder5" type="Occluder" parent="LOD/0"] +[node name="Occluder5" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -47, 13, -0.312035 ) shape = SubResource( 4 ) -[node name="Occluder6" type="Occluder" parent="LOD/0"] +[node name="Occluder6" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 47, 13, -0.312035 ) shape = SubResource( 4 ) -[node name="Occluder7" type="Occluder" parent="LOD/0"] +[node name="Occluder7" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 13, 47.688 ) shape = SubResource( 4 ) -[node name="Occluder8" type="Occluder" parent="LOD/0"] +[node name="Occluder8" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 13, -47.312 ) shape = SubResource( 4 ) -[node name="Occluder9" type="Occluder" parent="LOD/0"] +[node name="Occluder9" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 48, -0.312035 ) shape = SubResource( 5 ) - -[node name="1" type="Spatial" parent="LOD"] -visible = false diff --git a/godot/astream/terrain/details/home-exterior.tscn b/godot/astream/terrain/details/home-exterior.tscn index e562d90..67a77d7 100644 --- a/godot/astream/terrain/details/home-exterior.tscn +++ b/godot/astream/terrain/details/home-exterior.tscn @@ -17,59 +17,51 @@ polygon_points = PoolVector2Array( 13.0002, -0.955048, 13.5094, 5.5803, 0.237133 [node name="home-exterior" type="Spatial"] -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 300.0 - -[node name="scene_home" type="Spatial" parent="LOD/0" groups=["actuator"]] +[node name="scene_home" type="Spatial" parent="." groups=["actuator"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 18.7743 ) -[node name="Area" type="Area" parent="LOD/0/scene_home"] +[node name="Area" type="Area" parent="scene_home"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/scene_home/Area"] +[node name="CollisionShape" type="CollisionShape" parent="scene_home/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 1.40819 ) shape = SubResource( 1 ) -[node name="CollisionShape2" type="CollisionShape" parent="LOD/0/scene_home/Area"] +[node name="CollisionShape2" type="CollisionShape" parent="scene_home/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.4, -0.375477 ) shape = SubResource( 1 ) -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="home-exterior" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="home-exterior" parent="MergeGroup" instance=ExtResource( 1 )] -[node name="Occluder" type="Occluder" parent="LOD/0"] +[node name="Occluder" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -19.8075 ) shape = SubResource( 2 ) -[node name="Occluder2" type="Occluder" parent="LOD/0"] +[node name="Occluder2" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 19.8664 ) shape = SubResource( 2 ) -[node name="Occluder3" type="Occluder" parent="LOD/0"] +[node name="Occluder3" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -19.317, 0, 0.375481 ) shape = SubResource( 2 ) -[node name="Occluder4" type="Occluder" parent="LOD/0"] +[node name="Occluder4" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 19.5775, 0, 0.375481 ) shape = SubResource( 2 ) -[node name="Occluder5" type="Occluder" parent="LOD/0"] +[node name="Occluder5" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 35.8901, 0, 0.375481 ) shape = SubResource( 3 ) -[node name="Occluder6" type="Occluder" parent="LOD/0"] +[node name="Occluder6" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 21.5775, 0, 0.375481 ) shape = SubResource( 3 ) -[node name="Occluder7" type="Occluder" parent="LOD/0"] +[node name="Occluder7" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 21.5775, 0, -0.15785 ) shape = SubResource( 4 ) -[node name="Occluder8" type="Occluder" parent="LOD/0"] +[node name="Occluder8" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 21.5775, 0, -19.708 ) shape = SubResource( 4 ) - -[node name="1" type="Spatial" parent="LOD"] -visible = false diff --git a/godot/astream/terrain/details/logistics-center-exterior.tscn b/godot/astream/terrain/details/logistics-center-exterior.tscn index 76e782a..4494d3f 100644 --- a/godot/astream/terrain/details/logistics-center-exterior.tscn +++ b/godot/astream/terrain/details/logistics-center-exterior.tscn @@ -22,18 +22,6 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0804744, 0, 17.4263 ) transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32854, -0.380188 ) shape = SubResource( 1 ) -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 150.0 - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="logistics-center-exterior" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false - [node name="Occluder" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16.2969 ) shape = SubResource( 2 ) @@ -45,3 +33,7 @@ shape = SubResource( 2 ) [node name="Occluder3" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0 ) shape = SubResource( 3 ) + +[node name="MergeGroup" type="MergeGroup" parent="."] + +[node name="logistics-center-exterior" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/office-exterior.tscn b/godot/astream/terrain/details/office-exterior.tscn index bf4a82d..ac21eed 100644 --- a/godot/astream/terrain/details/office-exterior.tscn +++ b/godot/astream/terrain/details/office-exterior.tscn @@ -29,18 +29,6 @@ shape = SubResource( 3 ) transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 39.7202, 0, 0.157095 ) shape = SubResource( 3 ) -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 350.0 - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="office-exterior" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false - [node name="scene_office" type="Spatial" parent="." groups=["actuator"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 19.0407 ) @@ -49,3 +37,7 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 19.0407 ) [node name="CollisionShape" type="CollisionShape" parent="scene_office/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000112534, 2.48236, -4.51659 ) shape = SubResource( 1 ) + +[node name="MergeGroup" type="MergeGroup" parent="."] + +[node name="office-exterior" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/power-in-box.tscn b/godot/astream/terrain/details/power-in-box.tscn index 7f5bcf6..37cc917 100644 --- a/godot/astream/terrain/details/power-in-box.tscn +++ b/godot/astream/terrain/details/power-in-box.tscn @@ -4,14 +4,6 @@ [node name="power-in-box" type="Spatial"] -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 50.0 - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="power-in-box" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="power-in-box" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/power-pole-wire.tscn b/godot/astream/terrain/details/power-pole-wire.tscn index 832a157..e80db6b 100644 --- a/godot/astream/terrain/details/power-pole-wire.tscn +++ b/godot/astream/terrain/details/power-pole-wire.tscn @@ -5,24 +5,8 @@ [node name="power-pole-wire" type="Spatial"] -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 60.0 +[node name="power-pole" parent="MergeGroup" instance=ExtResource( 2 )] -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="power-pole" parent="LOD/0/MergeGroup" instance=ExtResource( 2 )] - -[node name="power-pole-wire" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false -lod_range = 150.0 - -[node name="MergeGroup" type="MergeGroup" parent="LOD/1"] - -[node name="power-pole" parent="LOD/1/MergeGroup" instance=ExtResource( 2 )] - -[node name="2" type="Spatial" parent="LOD"] -visible = false +[node name="power-pole-wire" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/power-pole.tscn b/godot/astream/terrain/details/power-pole.tscn index a4dd0c2..d78ca35 100644 --- a/godot/astream/terrain/details/power-pole.tscn +++ b/godot/astream/terrain/details/power-pole.tscn @@ -4,14 +4,6 @@ [node name="power-pole" type="Spatial"] -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 80.0 - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="power-pole" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="power-pole" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/residental-garage1.tscn b/godot/astream/terrain/details/residental-garage1.tscn index 634e680..6ea36b9 100644 --- a/godot/astream/terrain/details/residental-garage1.tscn +++ b/godot/astream/terrain/details/residental-garage1.tscn @@ -12,139 +12,6 @@ polygon_points = PoolVector2Array( 12.3046, -2.07897, 12.3844, 1.81323, -10.6155 [node name="garage" type="Spatial"] -[node name="LOD" type="LOD" parent="."] - -[node name="MergeGroup" type="MergeGroup" parent="LOD"] -lod_range = 35.0 - -[node name="residental-garage" parent="LOD/MergeGroup" instance=ExtResource( 1 )] - -[node name="residental-garage-roof1" parent="LOD/MergeGroup" instance=ExtResource( 2 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6, 0 ) - -[node name="residental-garage-door" parent="LOD/MergeGroup" instance=ExtResource( 3 )] -transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 13.3215, 1, 0 ) - -[node name="residental-wall1_1" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 12, 0, -5 ) - -[node name="residental-wall1_2" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 10, 0, -5 ) - -[node name="residental-wall1_3" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 8, 0, -5 ) - -[node name="residental-wall1_4" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 6, 0, -5 ) - -[node name="residental-wall1_5" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 4, 0, -5 ) - -[node name="residental-wall1_6" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 2, 0, -5 ) - -[node name="residental-wall1_7" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 0, 0, -5 ) - -[node name="residental-wall1_8" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -2, 0, -5 ) - -[node name="residental-wall1_9" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -4, 0, -5 ) - -[node name="residental-wall1_10" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -6, 0, -5 ) - -[node name="residental-wall1_11" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -8, 0, -5 ) - -[node name="residental-wall1_12" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -10, 0, -5 ) - -[node name="residental-wall1_13" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -10, 0, 5 ) - -[node name="residental-wall1_14" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -8, 0, 5 ) - -[node name="residental-wall1_15" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -6, 0, 5 ) - -[node name="residental-wall1_16" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -4, 0, 5 ) - -[node name="residental-wall1_17" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2, 0, 5 ) - -[node name="residental-wall1_18" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 5 ) - -[node name="residental-wall1_19" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2, 0, 5 ) - -[node name="residental-wall1_20" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 4, 0, 5 ) - -[node name="residental-wall1_21" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 6, 0, 5 ) - -[node name="residental-wall1_22" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 8, 0, 5 ) - -[node name="residental-wall1_23" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 10, 0, 5 ) - -[node name="residental-wall1_24" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 12, 0, 5 ) - -[node name="residental-wall-corner_1" parent="LOD/MergeGroup" instance=ExtResource( 5 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -11, 0, -5 ) - -[node name="residental-wall1_25" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 0, -4 ) - -[node name="residental-wall1_26" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 0, -2 ) - -[node name="residental-wall1_27" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 0, 0 ) - -[node name="residental-wall1_28" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 0, 2 ) - -[node name="residental-wall1_31" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 0, 4 ) - -[node name="residental-wall-corner_2" parent="LOD/MergeGroup" instance=ExtResource( 5 )] -transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -11, 0, 5 ) - -[node name="residental-wall-corner_3" parent="LOD/MergeGroup" instance=ExtResource( 5 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 13, 0, 5 ) - -[node name="residental-wall1_32" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 3.0598e-07, 0, -1, 0, 1, 0, 1, 0, 3.0598e-07, 13, 0, 4 ) - -[node name="residental-wall1_33" parent="LOD/MergeGroup" instance=ExtResource( 4 )] -transform = Transform( 3.0598e-07, 0, -1, 0, 1, 0, 1, 0, 3.0598e-07, 13, 0, -4 ) - -[node name="residental-garage-enterance" parent="LOD/MergeGroup" instance=ExtResource( 6 )] -transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 13, 0, 0 ) - -[node name="residental-wall-corner_4" parent="LOD/MergeGroup" instance=ExtResource( 5 )] -transform = Transform( 1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, 13, 0, -5 ) - -[node name="MergeGroup1" type="MergeGroup" parent="LOD"] -visible = false -lod_range = 20.0 - -[node name="residental-garage" parent="LOD/MergeGroup1" instance=ExtResource( 1 )] - -[node name="residental-garage-roof1" parent="LOD/MergeGroup1" instance=ExtResource( 2 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6, 0 ) - -[node name="3" type="Spatial" parent="LOD"] -visible = false - [node name="Occluder" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.43748, 4.26318 ) shape = SubResource( 5 ) @@ -152,3 +19,123 @@ shape = SubResource( 5 ) [node name="Occluder2" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.43748, -4.71023 ) shape = SubResource( 5 ) + +[node name="MergeGroup" type="MergeGroup" parent="."] +lod_range = 35.0 + +[node name="residental-garage" parent="MergeGroup" instance=ExtResource( 1 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 ) + +[node name="residental-garage-roof1" parent="MergeGroup" instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6, 0 ) + +[node name="residental-garage-door" parent="MergeGroup" instance=ExtResource( 3 )] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 13.3215, 1, 0 ) + +[node name="residental-wall1_1" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 12, 1, -5 ) + +[node name="residental-wall1_2" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 10, 1, -5 ) + +[node name="residental-wall1_3" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 8, 1, -5 ) + +[node name="residental-wall1_4" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 6, 1, -5 ) + +[node name="residental-wall1_5" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 4, 1, -5 ) + +[node name="residental-wall1_6" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 2, 1, -5 ) + +[node name="residental-wall1_7" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, 0, 1, -5 ) + +[node name="residental-wall1_8" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -2, 1, -5 ) + +[node name="residental-wall1_9" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -4, 1, -5 ) + +[node name="residental-wall1_10" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -6, 1, -5 ) + +[node name="residental-wall1_11" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -8, 1, -5 ) + +[node name="residental-wall1_12" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -10, 1, -5 ) + +[node name="residental-wall1_13" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -10, 1, 5 ) + +[node name="residental-wall1_14" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -8, 1, 5 ) + +[node name="residental-wall1_15" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -6, 1, 5 ) + +[node name="residental-wall1_16" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -4, 1, 5 ) + +[node name="residental-wall1_17" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2, 1, 5 ) + +[node name="residental-wall1_18" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1, 5 ) + +[node name="residental-wall1_19" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2, 1, 5 ) + +[node name="residental-wall1_20" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 4, 1, 5 ) + +[node name="residental-wall1_21" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 6, 1, 5 ) + +[node name="residental-wall1_22" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 8, 1, 5 ) + +[node name="residental-wall1_23" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 10, 1, 5 ) + +[node name="residental-wall1_24" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 12, 1, 5 ) + +[node name="residental-wall-corner_1" parent="MergeGroup" instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -11, 1, -5 ) + +[node name="residental-wall1_25" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 1, -4 ) + +[node name="residental-wall1_26" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 1, -2 ) + +[node name="residental-wall1_27" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 1, 0 ) + +[node name="residental-wall1_28" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 1, 2 ) + +[node name="residental-wall1_31" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( -2.18557e-07, 0, 1, 0, 1, 0, -1, 0, -2.18557e-07, -11, 1, 4 ) + +[node name="residental-wall-corner_2" parent="MergeGroup" instance=ExtResource( 5 )] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -11, 1, 5 ) + +[node name="residental-wall-corner_3" parent="MergeGroup" instance=ExtResource( 5 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 13, 1, 5 ) + +[node name="residental-wall1_32" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 3.0598e-07, 0, -1, 0, 1, 0, 1, 0, 3.0598e-07, 13, 1, 4 ) + +[node name="residental-wall1_33" parent="MergeGroup" instance=ExtResource( 4 )] +transform = Transform( 3.0598e-07, 0, -1, 0, 1, 0, 1, 0, 3.0598e-07, 13, 1, -4 ) + +[node name="residental-garage-enterance" parent="MergeGroup" instance=ExtResource( 6 )] +transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 13, 1, 0 ) + +[node name="residental-wall-corner_4" parent="MergeGroup" instance=ExtResource( 5 )] +transform = Transform( 1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, 13, 1, -5 ) diff --git a/godot/astream/terrain/details/residental-house1.tscn b/godot/astream/terrain/details/residental-house1.tscn index 5bbf29e..05a9d9e 100644 --- a/godot/astream/terrain/details/residental-house1.tscn +++ b/godot/astream/terrain/details/residental-house1.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://astream/terrain/details/residental-house1.gltf" type="PackedScene" id=1] [ext_resource path="res://astream/terrain/details/parts/door1-portal.tscn" type="PackedScene" id=2] [ext_resource path="res://astream/terrain/details/parts/residental-house-stair.tscn" type="PackedScene" id=3] -[ext_resource path="res://astream/terrain/details/residental-hut1-lod.gltf" type="PackedScene" id=4] [sub_resource type="OccluderShapeSphere" id=2] spheres = [ Plane( 6, 6, -3, 6 ), Plane( -6, 6, -3, 6 ), Plane( 6, 6, 6, 6 ), Plane( -6, 6, 6, 6 ) ] @@ -16,44 +15,29 @@ extents = Vector3( 0.7, 1, 0.6 ) [node name="Occluder" type="Occluder" parent="."] shape = SubResource( 2 ) -[node name="LOD" type="LOD" parent="."] +[node name="BuildingLayoutInstance" type="BuildingLayoutInstance" parent="."] +size = 8 +walls = PoolIntArray( 0, 0, 0, 0, 0, 0, 0, 0 ) -[node name="0" type="Spatial" parent="LOD"] -lod_range = 100.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] +[node name="door1-portal" parent="." instance=ExtResource( 2 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 1, -8.5131 ) -skeleton = NodePath("../../..") -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] +[node name="actions" type="Node" parent="door1-portal/enter_destination"] -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] +[node name="Area" type="Area" parent="door1-portal/enter_destination"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) shape = SubResource( 1 ) -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="residental-house1" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house1" parent="MergeGroup" instance=ExtResource( 1 )] -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -9 ) - -[node name="1" type="Spatial" parent="LOD"] -visible = false -lod_range = 500.0 - -[node name="residental-hut1-lod" parent="LOD/1" instance=ExtResource( 4 )] -transform = Transform( 1.7, 0, 0, 0, 1, 0, 0, 0, 1.2, 0, 0, 2.03699 ) - -[node name="2" type="Spatial" parent="LOD"] -visible = false - -[node name="BuildingLayoutInstance" type="BuildingLayoutInstance" parent="."] -size = 8 diff --git a/godot/astream/terrain/details/residental-house10.tscn b/godot/astream/terrain/details/residental-house10.tscn index 88cebc7..c732d16 100644 --- a/godot/astream/terrain/details/residental-house10.tscn +++ b/godot/astream/terrain/details/residental-house10.tscn @@ -4,49 +4,17 @@ [ext_resource path="res://astream/terrain/details/parts/door1-portal.tscn" type="PackedScene" id=2] [ext_resource path="res://astream/terrain/details/parts/residental-house-stair.tscn" type="PackedScene" id=3] -[sub_resource type="BoxShape" id=1] -extents = Vector3( 0.7, 1, 0.6 ) - [sub_resource type="OccluderShapePolygon" id=2] polygon_points = PoolVector2Array( 12.3016, -1.14993, 12.5691, 6.87287, -11.3924, 6.33801, -11.7133, -1.36388 ) [sub_resource type="OccluderShapePolygon" id=3] polygon_points = PoolVector2Array( 11.693, -0.802464, 11.8306, 5.6631, -10.5008, 6.53434, -10.2715, -1.07759 ) +[sub_resource type="BoxShape" id=1] +extents = Vector3( 0.7, 1, 0.6 ) + [node name="residental-house10" type="Spatial"] -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 200.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1, -10.6561 ) -skeleton = NodePath("../../..") - -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) - -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] - -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] - -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] - -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) -shape = SubResource( 1 ) - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, -13 ) - -[node name="residental-house10" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false - [node name="Occluder" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 11.4243 ) shape = SubResource( 2 ) @@ -62,3 +30,26 @@ shape = SubResource( 2 ) [node name="Occluder4" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -11.3515, 0, 0 ) shape = SubResource( 3 ) + +[node name="door1-portal" parent="." instance=ExtResource( 2 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1, -10.6561 ) + +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) + +[node name="actions" type="Node" parent="door1-portal/enter_destination"] + +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] + +[node name="Area" type="Area" parent="door1-portal/enter_destination"] + +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) +shape = SubResource( 1 ) + +[node name="MergeGroup" type="MergeGroup" parent="."] + +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, -13 ) + +[node name="residental-house10" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/residental-house11.tscn b/godot/astream/terrain/details/residental-house11.tscn index 4179ec9..5e10dc9 100644 --- a/godot/astream/terrain/details/residental-house11.tscn +++ b/godot/astream/terrain/details/residental-house11.tscn @@ -3,46 +3,17 @@ [ext_resource path="res://astream/terrain/details/residental-house11.gltf" type="PackedScene" id=1] [ext_resource path="res://astream/terrain/details/parts/door1-portal.tscn" type="PackedScene" id=2] -[sub_resource type="BoxShape" id=1] -extents = Vector3( 0.7, 1, 0.6 ) - [sub_resource type="OccluderShapePolygon" id=2] polygon_points = PoolVector2Array( 13.298, -1.1693, 13.6648, 6.21337, -10.8677, 5.84653, -10.8218, -0.94003 ) [sub_resource type="OccluderShapePolygon" id=3] polygon_points = PoolVector2Array( 25.2986, -0.829023, 25.7265, 6.28454, -26.0474, 6.17757, -25.7265, -0.775539 ) +[sub_resource type="BoxShape" id=1] +extents = Vector3( 0.7, 1, 0.6 ) + [node name="residental-house11" type="Spatial"] -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 250.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] -transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 13.5, 1, 1 ) -skeleton = NodePath("../../..") - -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) - -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] - -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] - -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] - -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) -shape = SubResource( 1 ) - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="residental-house11" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false - [node name="Occluder" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -15.9386 ) shape = SubResource( 2 ) @@ -62,3 +33,23 @@ shape = SubResource( 2 ) [node name="Occluder5" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -10, 0, 0 ) shape = SubResource( 3 ) + +[node name="door1-portal" parent="." instance=ExtResource( 2 )] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 13.5, 1, 1 ) + +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) + +[node name="actions" type="Node" parent="door1-portal/enter_destination"] + +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] + +[node name="Area" type="Area" parent="door1-portal/enter_destination"] + +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) +shape = SubResource( 1 ) + +[node name="MergeGroup" type="MergeGroup" parent="."] + +[node name="residental-house11" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/residental-house12a.tscn b/godot/astream/terrain/details/residental-house12a.tscn index 603c73a..f2720f7 100644 --- a/godot/astream/terrain/details/residental-house12a.tscn +++ b/godot/astream/terrain/details/residental-house12a.tscn @@ -29,46 +29,38 @@ shape = SubResource( 2 ) transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -22, 0, 0 ) shape = SubResource( 2 ) -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 350.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 4 )] +[node name="door1-portal" parent="." instance=ExtResource( 4 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -1.90735e-06, 0.1, -13 ) skeleton = NodePath("../MergeGroup/residental-house12-simple-first-floor") -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="residental-house12-simple-first-floor" parent="LOD/0/MergeGroup" instance=ExtResource( 2 )] +[node name="residental-house12-simple-first-floor" parent="MergeGroup" instance=ExtResource( 2 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 0, -12.8 ) -[node name="residental-house12-simple-second-floor" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house12-simple-second-floor" parent="MergeGroup" instance=ExtResource( 1 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 7, -12.8 ) -[node name="residental-house12-simple-second-floor2" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house12-simple-second-floor2" parent="MergeGroup" instance=ExtResource( 1 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 13, -12.8 ) -[node name="residental-house12-simple-second-floor3" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house12-simple-second-floor3" parent="MergeGroup" instance=ExtResource( 1 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 19, -12.8 ) -[node name="residental-house12-simple-second-floor4" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house12-simple-second-floor4" parent="MergeGroup" instance=ExtResource( 1 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 25, -12.8 ) -[node name="residental-house12-simple-second-floor5" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house12-simple-second-floor5" parent="MergeGroup" instance=ExtResource( 1 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 31, -12.8 ) -[node name="residental-house12-simple-second-floor6" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house12-simple-second-floor6" parent="MergeGroup" instance=ExtResource( 1 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 37, -12.8 ) -[node name="residental-house12-simple-second-floor7" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house12-simple-second-floor7" parent="MergeGroup" instance=ExtResource( 1 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 43, -12.8 ) -[node name="residental-house12-simple-second-floor8" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house12-simple-second-floor8" parent="MergeGroup" instance=ExtResource( 1 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 49, -12.8 ) -[node name="residental-house12-simple-roof" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house12-simple-roof" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 20, 55, -12.8 ) - -[node name="1" type="Spatial" parent="LOD"] -visible = false diff --git a/godot/astream/terrain/details/residental-house13.tscn b/godot/astream/terrain/details/residental-house13.tscn index 624ed45..26a9b83 100644 --- a/godot/astream/terrain/details/residental-house13.tscn +++ b/godot/astream/terrain/details/residental-house13.tscn @@ -30,31 +30,22 @@ shape = SubResource( 3 ) transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -5.61597, 0, 0 ) shape = SubResource( 3 ) -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 250.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] +[node name="door1-portal" parent="." instance=ExtResource( 2 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 0, 7.91488 ) -skeleton = NodePath("../../..") -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] +[node name="actions" type="Node" parent="door1-portal/enter_destination"] -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] +[node name="Area" type="Area" parent="door1-portal/enter_destination"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) shape = SubResource( 1 ) -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="residental-house13" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="residental-house13" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/residental-house2.tscn b/godot/astream/terrain/details/residental-house2.tscn index 1b15eff..fc33b55 100644 --- a/godot/astream/terrain/details/residental-house2.tscn +++ b/godot/astream/terrain/details/residental-house2.tscn @@ -27,34 +27,25 @@ shape = SubResource( 3 ) transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.18915, 9.16854 ) shape = SubResource( 3 ) -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 200.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1, -12.5131 ) -skeleton = NodePath("../../..") - -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) - -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] - -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] - -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] - -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) -shape = SubResource( 1 ) - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, -13 ) -[node name="residental-house2" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] +[node name="residental-house2" parent="MergeGroup" instance=ExtResource( 1 )] -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="door1-portal" parent="." instance=ExtResource( 2 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1, -12.5131 ) + +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) + +[node name="actions" type="Node" parent="door1-portal/enter_destination"] + +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] + +[node name="Area" type="Area" parent="door1-portal/enter_destination"] + +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) +shape = SubResource( 1 ) diff --git a/godot/astream/terrain/details/residental-house4.tscn b/godot/astream/terrain/details/residental-house4.tscn index caa1c50..0a5f047 100644 --- a/godot/astream/terrain/details/residental-house4.tscn +++ b/godot/astream/terrain/details/residental-house4.tscn @@ -35,34 +35,25 @@ shape = SubResource( 3 ) transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 12.5886, 0, -1.08897 ) shape = SubResource( 3 ) -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 200.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] +[node name="door1-portal" parent="." instance=ExtResource( 2 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1, -18.5131 ) -skeleton = NodePath("../../..") -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] +[node name="actions" type="Node" parent="door1-portal/enter_destination"] -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] +[node name="Area" type="Area" parent="door1-portal/enter_destination"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) shape = SubResource( 1 ) -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, -19 ) -[node name="residental-house4" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="residental-house4" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/residental-house5.tscn b/godot/astream/terrain/details/residental-house5.tscn index d729673..eaaa908 100644 --- a/godot/astream/terrain/details/residental-house5.tscn +++ b/godot/astream/terrain/details/residental-house5.tscn @@ -4,6 +4,9 @@ [ext_resource path="res://astream/terrain/details/parts/door1-portal.tscn" type="PackedScene" id=2] [ext_resource path="res://astream/terrain/details/parts/residental-house-stair.tscn" type="PackedScene" id=3] +[sub_resource type="BoxShape" id=1] +extents = Vector3( 0.7, 1, 0.6 ) + [sub_resource type="OccluderShapePolygon" id=2] polygon_points = PoolVector2Array( 11.1717, -0.227351, 11.4926, 12.2452, -11.4349, 12.3369, -11.5266, -0.273208 ) @@ -13,11 +16,24 @@ polygon_points = PoolVector2Array( 9.98366, 0.136333, 9.93017, 12.0636, -9.48501 [sub_resource type="OccluderShapePolygon" id=4] polygon_points = PoolVector2Array( 10.7324, -0.131092, 10.6255, 12.0636, -8.95016, 12.4914, -8.7897, -0.291551 ) -[sub_resource type="BoxShape" id=1] -extents = Vector3( 0.7, 1, 0.6 ) - [node name="residental-house5" type="Spatial"] +[node name="door1-portal" parent="." instance=ExtResource( 2 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 1, -8.5131 ) + +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) + +[node name="actions" type="Node" parent="door1-portal/enter_destination"] + +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] + +[node name="Area" type="Area" parent="door1-portal/enter_destination"] + +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) +shape = SubResource( 1 ) + [node name="Occluder" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10.9887 ) shape = SubResource( 2 ) @@ -34,34 +50,9 @@ shape = SubResource( 3 ) transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 10.6966, 0.0534847, 2.70653 ) shape = SubResource( 4 ) -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 250.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 1, -8.5131 ) -skeleton = NodePath("../../..") - -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) - -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] - -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] - -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] - -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) -shape = SubResource( 1 ) - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -9 ) -[node name="residental-house5" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="residental-house5" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/residental-house7.tscn b/godot/astream/terrain/details/residental-house7.tscn index 68eb674..592fcc0 100644 --- a/godot/astream/terrain/details/residental-house7.tscn +++ b/godot/astream/terrain/details/residental-house7.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=7 format=2] [ext_resource path="res://astream/terrain/details/residental-house7.gltf" type="PackedScene" id=1] [ext_resource path="res://astream/terrain/details/parts/door1-portal.tscn" type="PackedScene" id=2] [ext_resource path="res://astream/terrain/details/parts/residental-house-stair.tscn" type="PackedScene" id=3] -[ext_resource path="res://astream/terrain/details/residental-hut1-lod.gltf" type="PackedScene" id=4] [sub_resource type="OccluderShapePolygon" id=2] polygon_points = PoolVector2Array( 11.3615, 0.373477, 11.3222, 7.37125, -11.5188, 7.41056, -11.3222, 0.137596 ) @@ -32,41 +31,25 @@ shape = SubResource( 3 ) transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 11.2319, 0, 0.353821 ) shape = SubResource( 3 ) -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 100.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] +[node name="door1-portal" parent="." instance=ExtResource( 2 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 1, -8.5131 ) -skeleton = NodePath("../../..") -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] +[node name="actions" type="Node" parent="door1-portal/enter_destination"] -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] +[node name="Area" type="Area" parent="door1-portal/enter_destination"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) shape = SubResource( 1 ) -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -9 ) -[node name="residental-house7" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false -lod_range = 500.0 - -[node name="residental-hut1-lod" parent="LOD/1" instance=ExtResource( 4 )] -transform = Transform( 1.7, 0, 0, 0, 1, 0, 0, 0, 1.05, 0, 0, 0.494991 ) - -[node name="2" type="Spatial" parent="LOD"] -visible = false +[node name="residental-house7" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/residental-house8.tscn b/godot/astream/terrain/details/residental-house8.tscn index 1c06975..f71f3dd 100644 --- a/godot/astream/terrain/details/residental-house8.tscn +++ b/godot/astream/terrain/details/residental-house8.tscn @@ -31,34 +31,25 @@ shape = SubResource( 3 ) transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 12.8026, 0, 0.0163574 ) shape = SubResource( 3 ) -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 200.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] +[node name="door1-portal" parent="." instance=ExtResource( 2 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -5, 1, -12.5131 ) -skeleton = NodePath("../../..") -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] +[node name="actions" type="Node" parent="door1-portal/enter_destination"] -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] +[node name="Area" type="Area" parent="door1-portal/enter_destination"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) shape = SubResource( 1 ) -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -13 ) -[node name="residental-house8" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="residental-house8" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/residental-house9.tscn b/godot/astream/terrain/details/residental-house9.tscn index 5454809..967c945 100644 --- a/godot/astream/terrain/details/residental-house9.tscn +++ b/godot/astream/terrain/details/residental-house9.tscn @@ -1,12 +1,8 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=7 format=2] [ext_resource path="res://astream/terrain/details/residental-house9.gltf" type="PackedScene" id=1] [ext_resource path="res://astream/terrain/details/parts/door1-portal.tscn" type="PackedScene" id=2] [ext_resource path="res://astream/terrain/details/parts/residental-house-stair.tscn" type="PackedScene" id=3] -[ext_resource path="res://astream/terrain/details/residental-hut1-lod.gltf" type="PackedScene" id=4] - -[sub_resource type="BoxShape" id=1] -extents = Vector3( 0.7, 1, 0.6 ) [sub_resource type="OccluderShapePolygon" id=2] polygon_points = PoolVector2Array( 15.9386, -0.668566, 15.8851, 12.5423, -17.9176, 12.2749, -18.2385, -0.882509 ) @@ -14,47 +10,11 @@ polygon_points = PoolVector2Array( 15.9386, -0.668566, 15.8851, 12.5423, -17.917 [sub_resource type="OccluderShapePolygon" id=3] polygon_points = PoolVector2Array( 20.2709, 0.187198, 20.6453, 12.0075, -16.0456, 11.9005, -16.2595, -0.882509 ) +[sub_resource type="BoxShape" id=1] +extents = Vector3( 0.7, 1, 0.6 ) + [node name="residental-house9" type="Spatial"] -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 200.0 - -[node name="door1-portal" parent="LOD/0" instance=ExtResource( 2 )] -transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 5, 1, -15.5131 ) -skeleton = NodePath("../../..") - -[node name="enter_destination" type="Spatial" parent="LOD/0/door1-portal" groups=["smart_object"]] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) - -[node name="actions" type="Node" parent="LOD/0/door1-portal/enter_destination"] - -[node name="EnterDestination" type="Node" parent="LOD/0/door1-portal/enter_destination/actions"] - -[node name="Area" type="Area" parent="LOD/0/door1-portal/enter_destination"] - -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/door1-portal/enter_destination/Area"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) -shape = SubResource( 1 ) - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, -16 ) - -[node name="residental-house9" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false -lod_range = 500.0 - -[node name="residental-hut1-lod" parent="LOD/1" instance=ExtResource( 4 )] -transform = Transform( 2.55, 0, 0, 0, 1.4, 0, 0, 0, 2.2, -0.916183, 0, 4.03123 ) - -[node name="2" type="Spatial" parent="LOD"] -visible = false - [node name="Occluder" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -14.8154 ) shape = SubResource( 2 ) @@ -66,3 +26,26 @@ shape = SubResource( 2 ) [node name="Occluder3" type="Occluder" parent="."] transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0 ) shape = SubResource( 3 ) + +[node name="door1-portal" parent="." instance=ExtResource( 2 )] +transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 5, 1, -15.5131 ) + +[node name="enter_destination" type="Spatial" parent="door1-portal" groups=["smart_object"]] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) + +[node name="actions" type="Node" parent="door1-portal/enter_destination"] + +[node name="EnterDestination" type="Node" parent="door1-portal/enter_destination/actions"] + +[node name="Area" type="Area" parent="door1-portal/enter_destination"] + +[node name="CollisionShape" type="CollisionShape" parent="door1-portal/enter_destination/Area"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) +shape = SubResource( 1 ) + +[node name="MergeGroup" type="MergeGroup" parent="."] + +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, -16 ) + +[node name="residental-house9" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/residental-hut1.tscn b/godot/astream/terrain/details/residental-hut1.tscn index bdb2aad..c73c16b 100644 --- a/godot/astream/terrain/details/residental-hut1.tscn +++ b/godot/astream/terrain/details/residental-hut1.tscn @@ -9,40 +9,26 @@ extents = Vector3( 0.7, 1, 0.6 ) [node name="residental-hut1" type="Spatial"] -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 100.0 +[node name="residental-hut1" parent="MergeGroup" instance=ExtResource( 1 )] -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="residental-hut1" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="door1-portal" parent="LOD/0/MergeGroup" instance=ExtResource( 2 )] +[node name="door1-portal" parent="MergeGroup" instance=ExtResource( 2 )] transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 1, -7.48604 ) -skeleton = NodePath("../../../..") +skeleton = NodePath("../..") -[node name="enter_destination" type="Spatial" parent="LOD/0/MergeGroup/door1-portal" groups=["smart_object"]] +[node name="enter_destination" type="Spatial" parent="MergeGroup/door1-portal" groups=["smart_object"]] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.905, 0, 0.65 ) -[node name="actions" type="Node" parent="LOD/0/MergeGroup/door1-portal/enter_destination"] +[node name="actions" type="Node" parent="MergeGroup/door1-portal/enter_destination"] -[node name="EnterDestination" type="Node" parent="LOD/0/MergeGroup/door1-portal/enter_destination/actions"] +[node name="EnterDestination" type="Node" parent="MergeGroup/door1-portal/enter_destination/actions"] -[node name="Area" type="Area" parent="LOD/0/MergeGroup/door1-portal/enter_destination"] +[node name="Area" type="Area" parent="MergeGroup/door1-portal/enter_destination"] -[node name="CollisionShape" type="CollisionShape" parent="LOD/0/MergeGroup/door1-portal/enter_destination/Area"] +[node name="CollisionShape" type="CollisionShape" parent="MergeGroup/door1-portal/enter_destination/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0 ) shape = SubResource( 1 ) -[node name="residental-house-stair" parent="LOD/0/MergeGroup" instance=ExtResource( 3 )] +[node name="residental-house-stair" parent="MergeGroup" instance=ExtResource( 3 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -7.97294 ) - -[node name="1" type="Spatial" parent="LOD"] -visible = false -lod_range = 500.0 - -[node name="residental-hut1" parent="LOD/1" instance=ExtResource( 1 )] - -[node name="2" type="Spatial" parent="LOD"] -visible = false diff --git a/godot/astream/terrain/details/residental-parking1.tscn b/godot/astream/terrain/details/residental-parking1.tscn index c8b87e9..039085b 100644 --- a/godot/astream/terrain/details/residental-parking1.tscn +++ b/godot/astream/terrain/details/residental-parking1.tscn @@ -4,14 +4,6 @@ [node name="residental-parking1" type="Spatial"] -[node name="LOD" type="LOD" parent="."] +[node name="MergeGroup" type="MergeGroup" parent="."] -[node name="0" type="Spatial" parent="LOD"] -lod_range = 110.0 - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="residental-parking" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false +[node name="residental-parking" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/astream/terrain/details/townhall-exterior.tscn b/godot/astream/terrain/details/townhall-exterior.tscn index 109ac75..8b8729d 100644 --- a/godot/astream/terrain/details/townhall-exterior.tscn +++ b/godot/astream/terrain/details/townhall-exterior.tscn @@ -25,18 +25,6 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 9.30597 ) transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.141865, 2.25391, 0.0472889 ) shape = SubResource( 1 ) -[node name="LOD" type="LOD" parent="."] - -[node name="0" type="Spatial" parent="LOD"] -lod_range = 300.0 - -[node name="MergeGroup" type="MergeGroup" parent="LOD/0"] - -[node name="townhall-exterior" parent="LOD/0/MergeGroup" instance=ExtResource( 1 )] - -[node name="1" type="Spatial" parent="LOD"] -visible = false - [node name="Occluder" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7.81175 ) shape = SubResource( 2 ) @@ -52,3 +40,7 @@ shape = SubResource( 3 ) [node name="Occluder4" type="Occluder" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 26.4111, -2.98485 ) shape = SubResource( 4 ) + +[node name="MergeGroup" type="MergeGroup" parent="."] + +[node name="townhall-exterior" parent="MergeGroup" instance=ExtResource( 1 )] diff --git a/godot/config/stream.conf b/godot/config/stream.conf index 98c6fb5..e113148 100644 --- a/godot/config/stream.conf +++ b/godot/config/stream.conf @@ -52,7 +52,7 @@ buildings_path = "res://astream/buildings.json" [world] world_extent = 3072 tile_size = 128 -view_distance = 2 +view_distance = 3 [road] road_lines_path = "res://astream/road_lines.json" center_mesh = "res://astream/road/road-lanes_road-lane-center.mesh" diff --git a/src/modules/stream/buildings_data.cpp b/src/modules/stream/buildings_data.cpp index 902a26d..66e9022 100644 --- a/src/modules/stream/buildings_data.cpp +++ b/src/modules/stream/buildings_data.cpp @@ -374,6 +374,11 @@ flecs::entity BuildingsData::get_building_entity(const String &key) void BuildingsData::remove_scene_item(const String &key, const String &bkey) { flecs::entity e = ecs().lookup(key.ascii().ptr()); + flecs::entity be = get_building_entity(bkey); + assert(be.is_valid()); + assert(be.has()); + if (be.has()) + be.remove(); if (!e.is_valid()) { print_error("bad scene: " + key); flecs::query_builder qb = @@ -412,32 +417,51 @@ void BuildingsData::add_scene_item(const String &key, const String &bkey) flecs::entity e = ecs().lookup(key.ascii().ptr()); assert(e.is_valid()); assert(e.has()); - flecs::entity be = get_building_entity(bkey); - assert(be.is_valid()); - assert(be.has()); - const CBuildingData *b = be.get(); CSceneData *d = e.get_mut(); assert(d); String ename = "bi:" + bkey; // print_line("creating entity: " + ename + " on top of: " + key); flecs::entity ce = e.lookup(ename.ascii().ptr()); - if (ce.is_valid()) - ce.destruct(); - ce = ecs().entity(ename.ascii().ptr()).child_of(e); + if (!ce.is_valid()) + ce = ecs().entity(ename.ascii().ptr()).child_of(e); + assert(ce.is_valid()); + if (!ce.has()) + ce.set({ bkey, nullptr }); + // print_line("child name: " + String(ce.name())); +} + +void BuildingsData::instance_scene_item(const String &key, const String &bkey) +{ + flecs::entity be = get_building_entity(bkey); + assert(be.is_valid()); + assert(be.has()); + if (be.has()) + return; Ref ps = scene_get_packed_scene(key); if (!ps.is_valid()) return; + Node *where = SceneTree::get_singleton()->get_current_scene(); assert(where); + + flecs::entity e = ecs().lookup(key.ascii().ptr()); + assert(e.is_valid()); + assert(e.has()); + + const CBuildingData *b = be.get(); + String ename = "bi:" + bkey; + flecs::entity ce = e.lookup(ename.ascii().ptr()); + if (!ce.is_valid()) + return; + if (ce.get()->node) + return; if (ps.is_valid()) { Spatial *scene = Object::cast_to(ps->instance()); assert(scene); where->call_deferred("add_child", scene); scene->set_transform(b->building.xform); ce.set({ bkey, scene }); - } else - ce.set({ bkey, nullptr }); - // print_line("child name: " + String(ce.name())); + } } Ref BuildingsData::scene_get_packed_scene(const String &key) diff --git a/src/modules/stream/buildings_data.h b/src/modules/stream/buildings_data.h index 74150cd..b6b259d 100644 --- a/src/modules/stream/buildings_data.h +++ b/src/modules/stream/buildings_data.h @@ -59,6 +59,7 @@ public: Transform cam_xform; int tile_x; int tile_z; + int load_count; }; struct CBuildingTileData { using tile_key_t = std::tuple; @@ -107,6 +108,7 @@ public: static AABB get_scene_aabb(const String &key); static void remove_scene_item(const String &key, const String &bkey); static void add_scene_item(const String &key, const String &bkey); + static void instance_scene_item(const String &key, const String &bkey); static Ref scene_get_packed_scene(const String &key); static int scene_get_item_count(const String &key); // String scene_get_item(const String &key, int index) const; diff --git a/src/modules/stream/buildings_data_module.cpp b/src/modules/stream/buildings_data_module.cpp index 2906ede..46853d1 100644 --- a/src/modules/stream/buildings_data_module.cpp +++ b/src/modules/stream/buildings_data_module.cpp @@ -254,10 +254,13 @@ BuildingsData::BuildingsData(flecs::world &ecs_) } }); ecs_.system("UpdateEye").kind(flecs::OnUpdate).run([&](flecs::iter &it) { + if (!SceneTree::get_singleton()->get_current_scene()) + return; Viewport *viewport = SceneTree::get_singleton() ->get_current_scene() ->get_viewport(); - int i, j, l; + if (!viewport) + return; int tile_size = config.get_value("world", "tile_size"); int view_distance = config.get_value("world", "view_distance"); assert(tile_size > 0); @@ -266,6 +269,7 @@ BuildingsData::BuildingsData(flecs::world &ecs_) Vector3 eye = xform.origin; int tile_x = int(eye.x / tile_size); int tile_z = int(eye.z / tile_size); + int load_count = 0; bool need_update = true; if (it.world().has()) { int old_x = it.world().get()->tile_x; @@ -274,8 +278,11 @@ BuildingsData::BuildingsData(flecs::world &ecs_) need_update = false; else print_line("UpdateEye need update"); + load_count = + it.world().get()->load_count; } - it.world().set({ xform, tile_x, tile_z }); + it.world().set( + { xform, tile_x, tile_z, load_count }); if (!need_update) return; if (!it.world().has()) @@ -314,7 +321,7 @@ BuildingsData::BuildingsData(flecs::world &ecs_) const CBuildingTile *bt = e.get(); std::tuple tile = bt->tile; - int erase_distance = view_distance + 1; + int erase_distance = view_distance + 2; int ed2 = erase_distance * erase_distance; int t_x = std::get<0>(tile); @@ -348,12 +355,23 @@ BuildingsData::BuildingsData(flecs::world &ecs_) return; if (!scene_get_packed_scene(id).is_valid()) return; + if (e.world().get_mut()->load_count > + 4) { + print_line("Limit reached"); + return; + } if (!has_scene(id)) return; else { if (!e.has()) { add_scene_item(id, bd.building.key); + instance_scene_item(id, + bd.building.key); e.add(); + e.world() + .get_mut() + ->load_count++; + e.world().modified(); } } if (debug) @@ -392,6 +410,13 @@ BuildingsData::BuildingsData(flecs::world &ecs_) .with() .write() .each([&](flecs::entity e, const CBuildingData &bd) {}); + ecs_.system("FinishBuildingsHandling") + .kind(flecs::OnUpdate) + .run([&](flecs::iter &it) { + if (it.world().has()) + it.world().get_mut()->load_count = + 0; + }); print_line("SpawnNode initialized"); } diff --git a/src/modules/stream/road_lines_data.cpp b/src/modules/stream/road_lines_data.cpp index 1b5f614..76fcb2c 100644 --- a/src/modules/stream/road_lines_data.cpp +++ b/src/modules/stream/road_lines_data.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "from_string.h" #include "buildings_data.h" #include "editor_event.h" @@ -32,14 +33,14 @@ struct CLinesCommon { LinesAccessor *lines; }; -class LinesAccessor { +struct LinesAccessor { flecs::entity root_e; public: - LinesAccessor() + LinesAccessor(flecs::world &ecs) { - BaseData::get_singleton()->get().component(); - root_e = BaseData::get_singleton()->get().entity("lines"); + root_e = ecs.module(); + ecs.component(); root_e.set({ nullptr, this }); assert(root_e.is_valid()); } @@ -316,14 +317,15 @@ public: } }; -class IndexAccessor { +struct IndexAccessor { flecs::entity root_e; public: - IndexAccessor() + IndexAccessor(flecs::world &ecs) { - BaseData::get_singleton()->get().component(); - root_e = BaseData::get_singleton()->get().entity("lines"); + ecs.module(); + ecs.component(); + root_e = ecs.get()->root_e; assert(root_e.is_valid()); } inline const struct RoadLinesData::road_line_index & @@ -401,25 +403,19 @@ public: ImmediateGeometry *RoadLinesData::debug_im = nullptr; static Ref debug_material; -RoadLinesData::RoadLinesData() +RoadLinesData::RoadLinesData(flecs::world &ecs) : initialized(false) { - BaseData::get_singleton()->get().component(); - flecs::entity root_e = BaseData::get_singleton()->get().entity("lines"); - assert(root_e.is_valid()); - root_e.emplace(); - assert(root_e.has()); - assert(root_e.get()); - root_e.emplace(); - assert(root_e.has()); - assert(root_e.get()); + ecs.module(); + ecs.import (); + ecs.import (); load_data(); } -RoadLinesData *RoadLinesData::singleton = nullptr; const struct RoadLinesData::road_line & RoadLinesData::get_line(const String &key) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_line(key); @@ -427,7 +423,8 @@ RoadLinesData::get_line(const String &key) const const struct RoadLinesData::road_line * RoadLinesData::get_line_ptr(const String &key) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_line_ptr(key); @@ -435,7 +432,8 @@ RoadLinesData::get_line_ptr(const String &key) const const RoadLinesData::road_edge &RoadLinesData::get_line_edge(const String &key, int edge) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_line_edge(key, edge); @@ -443,7 +441,8 @@ const RoadLinesData::road_edge &RoadLinesData::get_line_edge(const String &key, RoadLinesData::road_edge_side RoadLinesData::get_line_edge_left(const String &key, int edge) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_line_edge_left(key, edge); @@ -451,7 +450,8 @@ RoadLinesData::get_line_edge_left(const String &key, int edge) const RoadLinesData::road_edge_side RoadLinesData::get_line_edge_right(const String &key, int edge) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_line_edge_right(key, edge); @@ -477,7 +477,8 @@ RoadLinesData::get_line_edge_side(const String &key, int edge, int side) const void RoadLinesData::set_line_edge_left(const String &key, int edge, road_edge_side &side) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->set_line_edge_left(key, edge, side); @@ -487,7 +488,8 @@ void RoadLinesData::set_line_edge_left(const String &key, int edge, void RoadLinesData::set_line_edge_right(const String &key, int edge, road_edge_side &side) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->set_line_edge_right(key, edge, side); @@ -497,7 +499,8 @@ void RoadLinesData::set_line_edge_right(const String &key, int edge, void RoadLinesData::set_line_edge(const String &key, int edge_id, const road_edge &edge) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->set_line_edge(key, edge_id, edge); @@ -507,21 +510,24 @@ void RoadLinesData::set_line_edge(const String &key, int edge_id, } int RoadLinesData::get_line_edge_count(const String &key) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_line_edge_count(key); } const Vector3 &RoadLinesData::get_line_point(const String &key, int index) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_line_point(key, index); } const RoadLinesData::road_line &RoadLinesData::lines(const String &key) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_line(key); @@ -529,14 +535,15 @@ const RoadLinesData::road_line &RoadLinesData::lines(const String &key) const const RoadLinesData::road_line_index & RoadLinesData::indices(const String &key) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); - assert(root_e.is_valid()); - IndexAccessor &indices = *root_e.get_mut(); + IndexAccessor &indices = + *BaseData::get_singleton()->get().get_mut(); + BaseData::get_singleton()->get().modified(); return indices[key]; } void RoadLinesData::set_line(const String &key, const road_line &line) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->set_line(key, line); @@ -544,7 +551,8 @@ void RoadLinesData::set_line(const String &key, const road_line &line) } void RoadLinesData::update_line(const String &key) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->update_line(key); @@ -553,14 +561,16 @@ void RoadLinesData::update_line(const String &key) const Transform &RoadLinesData::get_line_point_transform(const String &key, int index) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_line_point_transform(key, index); } bool RoadLinesData::has_line(const String &key) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->has(key); @@ -568,7 +578,8 @@ bool RoadLinesData::has_line(const String &key) const void RoadLinesData::insert_line_point(const String &key, int index, const Transform &xform) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->insert_line_point(key, index, xform); @@ -576,7 +587,8 @@ void RoadLinesData::insert_line_point(const String &key, int index, } void RoadLinesData::erase_line_point(const String &key, int index) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->erase_line_point(key, index); @@ -585,7 +597,8 @@ void RoadLinesData::erase_line_point(const String &key, int index) void RoadLinesData::set_line_point_position(const String &key, int index, const Vector3 &position) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->set_line_point_position(key, index, position); @@ -593,34 +606,26 @@ void RoadLinesData::set_line_point_position(const String &key, int index, } void RoadLinesData::clear_all_line_indices() { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); - assert(root_e.is_valid()); - IndexAccessor &indices = *root_e.get_mut(); + IndexAccessor &indices = + *BaseData::get_singleton()->get().get_mut(); indices.clear_all_line_indices(); } void RoadLinesData::clear_line_indices(const String &key) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); - assert(root_e.is_valid()); - IndexAccessor &indices = *root_e.get_mut(); + IndexAccessor &indices = + *BaseData::get_singleton()->get().get_mut(); indices.clear_line_indices(key); } void RoadLinesData::set_line_metadata(const String &key, const Dictionary &metadata) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->set_line_metadata(key, metadata); root_e.modified(); } -RoadLinesData *RoadLinesData::get_singleton() -{ - if (!singleton) - singleton = memnew(RoadLinesData); - assert(singleton->initialized); - return singleton; -} RoadLinesData::~RoadLinesData() { #if 0 @@ -632,8 +637,6 @@ RoadLinesData::~RoadLinesData() } void RoadLinesData::cleanup() { - memdelete(singleton); - singleton = nullptr; } String RoadLinesData::get_road_lines_path() { @@ -642,7 +645,8 @@ String RoadLinesData::get_road_lines_path() void RoadLinesData::get_road_lines_key_list(List *keys) { List line_keys; - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); lines->get_key_list(&line_keys); @@ -658,7 +662,8 @@ void RoadLinesData::get_road_lines_key_list(List *keys) void RoadLinesData::get_lines_key_list(List *keys) { assert(initialized); - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); lines->get_key_list(keys); @@ -666,14 +671,16 @@ void RoadLinesData::get_lines_key_list(List *keys) } const String &RoadLinesData::get_next_line(const String &key) const { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); return lines->get_next(key); } void RoadLinesData::erase_line(const String &key) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->erase(key); @@ -683,10 +690,13 @@ void RoadLinesData::load_data() { int i; ConfigFile config; - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); - IndexAccessor &line_indices = *root_e.get_mut(); - const LinesAccessor *lines = root_e.get(); + IndexAccessor &line_indices = + *BaseData::get_singleton()->get().get_mut(); + const LinesAccessor *lines = + BaseData::get_singleton()->get().get(); Error result = config.load("res://config/stream.conf"); ERR_FAIL_COND_MSG(result != OK, "Failed to load config"); assert(result == OK); @@ -742,6 +752,8 @@ void RoadLinesData::load_data() } update_line_edges(); initialized = true; + BaseData::get_singleton()->get().modified(); + BaseData::get_singleton()->get().modified(); } void RoadLinesData::save_data() { @@ -755,7 +767,8 @@ void RoadLinesData::save_data() FileAccess::get_file_as_string(road_lines_path); Dictionary output; List keys; - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); lines->get_key_list(&keys); @@ -846,9 +859,11 @@ void RoadLinesData::road_lines_curve_index( std::vector &road_lines_nodes) { int i, j; - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); - IndexAccessor &indices = *root_e.get_mut(); + IndexAccessor &indices = + *BaseData::get_singleton()->get().get_mut(); indices.clear_line_indices(key); const LinesAccessor *lines = root_e.get(); for (i = 0; i < (int)lines->get_line_points_count(key); i++) { @@ -906,7 +921,8 @@ void RoadLinesData::index_lines( } static inline int get_segment_index(const String &road, int pos) { - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); int idx = rld->indices(road).indices[pos]; return idx; } @@ -914,9 +930,11 @@ void RoadLinesData::create_segments(const String &road, std::vector &segments) { int i; - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); - const IndexAccessor &indices = *root_e.get(); + const IndexAccessor &indices = + *BaseData::get_singleton()->get().get(); for (i = 0; i < (int)indices[road].indices.size() - 1; i++) { segments.push_back(i); segments.push_back(i + 1); @@ -929,9 +947,11 @@ void RoadLinesData::insert_close_points(std::vector &road_lines_nodes, { int i; List keys; - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); - IndexAccessor &indices = *root_e.get_mut(); + IndexAccessor &indices = + *BaseData::get_singleton()->get().get_mut(); get_road_lines_key_list(&keys); List::Element *e = keys.front(); for (i = 0; i < (int)road_lines_nodes.size(); i++) { @@ -984,9 +1004,11 @@ void RoadLinesData::update_road_lines_nodes( std::vector &road_lines_nodes) { List keys; - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); - IndexAccessor &indices = *root_e.get_mut(); + IndexAccessor &indices = + *BaseData::get_singleton()->get().get_mut(); get_road_lines_key_list(&keys); std::unordered_map > kcmp; @@ -1176,7 +1198,8 @@ int RoadLinesData::get_debug_flags() const void RoadLinesData::update_line_segments(const String &line) { - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); LinesAccessor *lines = root_e.get_mut(); lines->update_line_segments(line); @@ -1189,7 +1212,8 @@ Vector3 RoadLinesData::get_point_by_offsets(const String &line, { Vector3 ret; int i; - flecs::entity root_e = BaseData::get_singleton()->get().lookup("lines"); + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; assert(root_e.is_valid()); const LinesAccessor *lines = root_e.get(); assert(lines->has(line)); @@ -1252,3 +1276,10 @@ void RoadLinesData::road_edge_side::update_test_points( { test_p[1] = test_p[0] + normal * lot_depth; } + +flecs::entity RoadLinesData::get_root_e() const +{ + flecs::entity root_e = + BaseData::get_singleton()->get().get()->root_e; + return root_e; +} diff --git a/src/modules/stream/road_lines_data.h b/src/modules/stream/road_lines_data.h index 674027b..50ab9c5 100644 --- a/src/modules/stream/road_lines_data.h +++ b/src/modules/stream/road_lines_data.h @@ -4,6 +4,8 @@ #include #include #include +#include +#include "base_data.h" #include "callable.h" class ImmediateGeometry; class RoadLinesData { @@ -14,11 +16,10 @@ class RoadLinesData { bool initialized; protected: - RoadLinesData(); - static RoadLinesData *singleton; _Signal lines_updated; public: + RoadLinesData(flecs::world &ecs); struct line_segment { Vector3 p1; Vector3 p2; @@ -220,10 +221,14 @@ public: test_edge(const String &key, int index) : line_key(key) , edge_index(index) - , left(RoadLinesData::get_singleton()->get_line_edge( - key, index)) - , right(RoadLinesData::get_singleton()->get_line_edge( - key, index)) + , left(BaseData::get_singleton() + ->get() + .get() + ->get_line_edge(key, index)) + , right(BaseData::get_singleton() + ->get() + .get() + ->get_line_edge(key, index)) { update_from_line(); } @@ -234,7 +239,10 @@ public: } void validate() { - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton() + ->get() + .get(); RoadLinesData::road_edge edge = rld->get_line_edge(line_key, edge_index); if (edge.left.lot != left.lot) { @@ -258,7 +266,10 @@ public: } void update_from_line() { - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton() + ->get() + .get(); RoadLinesData::road_edge edge = rld->get_line_edge(line_key, edge_index); print_line("line: " + line_key + @@ -285,7 +296,9 @@ public: void update_line() { print_line("update_line"); - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = BaseData::get_singleton() + ->get() + .get_mut(); RoadLinesData::road_edge_side tmp_left = rld->get_line_edge_left(line_key, edge_index); RoadLinesData::road_edge_side tmp_right = @@ -300,6 +313,9 @@ public: validate(); rld->update_line_edges(); validate(); + BaseData::get_singleton() + ->get() + .modified(); } }; struct road_edge { @@ -426,7 +442,6 @@ public: void clear_line_indices(const String &key); void set_line_metadata(const String &key, const Dictionary &metadata); - static RoadLinesData *get_singleton(); virtual ~RoadLinesData(); static void cleanup(); String get_road_lines_path(); @@ -463,5 +478,8 @@ private: std::unordered_map > &road_lines_nodes_hash, std::vector &road_lines_nodes); + +public: + flecs::entity get_root_e() const; }; #endif \ No newline at end of file diff --git a/src/modules/stream/road_lines_editor.cpp b/src/modules/stream/road_lines_editor.cpp index efabfa9..b7569ea 100644 --- a/src/modules/stream/road_lines_editor.cpp +++ b/src/modules/stream/road_lines_editor.cpp @@ -285,7 +285,8 @@ Node *RoadLinesEditor::scene() void RoadLinesEditor::update_line_geometry() { - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); if (!rld->has_line(current_line)) { if (line_im) line_im->clear(); @@ -331,6 +332,7 @@ void RoadLinesEditor::update_line_geometry() // FIXME: update line segments on load and when line is changed rld->update_line_segments(current_line); } + BaseData::get_singleton()->get().modified(); } void RoadLinesEditor::update_line_index_ui() { @@ -339,8 +341,11 @@ void RoadLinesEditor::update_line_index_ui() } void RoadLinesEditor::select_line(const String &line_name) { + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); + flecs::entity root_e = rld->get_root_e(); + assert(root_e.is_valid()); print_line("selected line: " + line_name); - RoadLinesData *rld = RoadLinesData::get_singleton(); assert(rld->has_line(line_name)); if (current_line != line_name) { current_line = line_name; @@ -359,13 +364,15 @@ void RoadLinesEditor::select_line(const String &line_name) bool RoadLinesEditor::line_exists(const String &line_name) { - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); return rld->has_line(line_name); } void RoadLinesEditor::line_create_point() { - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); /* Create point in line */ print_line("line_create_point"); Vector3 position = get_cursor_position(); @@ -378,6 +385,7 @@ void RoadLinesEditor::line_create_point() update_line_index_ui(); EditorEvent::get_singleton()->event.emit( "road_lines_editor_set_line_index_ui", varray(line_index + 1)); + BaseData::get_singleton()->get().modified(); } void RoadLinesEditor::line_delete_point() @@ -385,7 +393,8 @@ void RoadLinesEditor::line_delete_point() /* Delete point from line */ print_line("line_delete_point"); int index = get_line_index(); - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); if (rld->lines(current_line).points.size() < 2) return; rld->erase_line_point(current_line, index); @@ -398,13 +407,15 @@ void RoadLinesEditor::line_delete_point() index = MAX(0, index - 1); EditorEvent::get_singleton()->event.emit( "road_lines_editor_set_line_index_ui", varray(index)); + BaseData::get_singleton()->get().modified(); } static const String cursor_name = "%line_cursor"; void RoadLinesEditor::set_point_to_cursor() { - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); print_line("set_point_to_cursor"); Spatial *cursor = get_as_node(cursor_name); Transform xform = cursor->get_global_transform(); @@ -414,6 +425,7 @@ void RoadLinesEditor::set_point_to_cursor() varray(current_line)); update_line_geometry(); set_ui_point_position(rld->lines(current_line).points[index].origin); + BaseData::get_singleton()->get().modified(); } int RoadLinesEditor::get_line_index() @@ -424,7 +436,8 @@ int RoadLinesEditor::get_line_index() void RoadLinesEditor::move_cursor_to_point() { print_line("move_cursor_to_point"); - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); int index = get_line_index(); Transform xform(Basis(), rld->lines(current_line).points[index].origin); set_cursor_position(xform.origin); @@ -538,7 +551,10 @@ int RoadLinesEditor::get_camera_mode() const void RoadLinesEditor::update_ui() { - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); + flecs::entity root_e = rld->get_root_e(); + assert(root_e.is_valid()); get_as_node("%road_lines_base")->show(); get_as_node("%road_lines_edit_metadata_dlg")->hide(); get_as_node("%road_lines_buildings")->hide(); @@ -575,12 +591,17 @@ void RoadLinesEditor::update_ui() EditorEvent::get_singleton()->event.emit( "road_lines_editor_update_lines_list", varray(elements, selected_index)); + BaseData::get_singleton()->get().modified(); } void RoadLinesEditor::create_new_line_at_cursor(const String &line_name) { print_line("creating new line called: " + line_name); - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); + flecs::entity root_e = rld->get_root_e(); + if (!root_e.is_valid()) + return; struct RoadLinesData::road_line rline; rline.flags = 0; rline.lanes = -1; @@ -595,17 +616,22 @@ void RoadLinesEditor::create_new_line_at_cursor(const String &line_name) update_line_index_ui(); update_ui(); rld->update_line_edges(); + BaseData::get_singleton()->get().modified(); } void RoadLinesEditor::delete_current_line() { - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); + flecs::entity root_e = rld->get_root_e(); + assert(root_e.is_valid()); String delete_line = current_line; current_line = rld->get_next_line(delete_line); rld->erase_line(delete_line); update_line_index_ui(); update_ui(); rld->update_line_edges(); + BaseData::get_singleton()->get().modified(); } Vector3 RoadLinesEditor::get_cursor_position() @@ -624,12 +650,14 @@ void RoadLinesEditor::set_cursor_position(const Vector3 &cursor_position) } void RoadLinesEditor::set_point_position(const Vector3 &position) { - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); int index = get_line_index(); rld->set_line_point_position(current_line, index, position); EditorEvent::get_singleton()->event.emit("lines_changed_line", varray(current_line)); update_line_geometry(); + BaseData::get_singleton()->get().modified(); } void RoadLinesEditor::set_ui_cursor_position(const Vector3 &cursor_position) { @@ -662,7 +690,8 @@ void RoadLinesEditor::set_ui_point_position(const Vector3 &point_position) void RoadLinesEditor::set_line_index(int index) { - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); if (!rld->has_line(current_line)) { print_error("bad line: " + current_line); return; @@ -679,6 +708,11 @@ void RoadLinesEditor::set_line_index(int index) void RoadLinesEditor::line_list_filter_changed(const String &text) { + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); + flecs::entity root_e = rld->get_root_e(); + if (!root_e.is_valid()) + return; print_line("lines filter update: " + text); filter_text = text.strip_edges(); update_ui(); @@ -686,6 +720,11 @@ void RoadLinesEditor::line_list_filter_changed(const String &text) void RoadLinesEditor::activate() { + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); + flecs::entity root_e = rld->get_root_e(); + if (!root_e.is_valid()) + return; assert(!active); print_line("activate::update UI"); update_ui(); @@ -796,13 +835,16 @@ const String &RoadLinesEditor::get_filter_text() const } void RoadLinesEditor::get_matching_lines(List *lines) { + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); + flecs::entity root_e = rld->get_root_e(); + assert(root_e.is_valid()); if (!re.is_valid()) re.instance(); re->compile(filter_text); if (filter_text.length() > 0 && !re->is_valid()) return; List line_keys; - RoadLinesData *rld = RoadLinesData::get_singleton(); rld->get_lines_key_list(&line_keys); assert(!line_keys.empty()); lines->clear(); @@ -817,6 +859,7 @@ void RoadLinesEditor::get_matching_lines(List *lines) e = e->next(); } assert(!lines->empty()); + BaseData::get_singleton()->get().modified(); } void RoadLinesEditor::place_zebras() { @@ -902,11 +945,13 @@ func place_zebras(): } void RoadLinesEditor::save_data() { - RoadLinesData::get_singleton()->save_data(); + BaseData::get_singleton()->get().get_mut()->save_data(); + BaseData::get_singleton()->get().modified(); } void RoadLinesEditor::update_current_line_metadata(const String &text) { - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); assert(rld->has_line(current_line)); if (!text.begins_with("{")) return; @@ -924,10 +969,12 @@ void RoadLinesEditor::update_current_line_metadata(const String &text) return; } rld->set_line_metadata(current_line, v); + BaseData::get_singleton()->get().modified(); } String RoadLinesEditor::get_current_line_metadata() const { - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); assert(rld->has_line(current_line)); return JSON::print(rld->lines(current_line).metadata, "\t", true); } @@ -1020,7 +1067,9 @@ void RoadLinesEditor::event_handler(const String &event, assert(c); create_edge_editor_ui(c); } else if (event == "road_lines_edge_editor::update") { - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = BaseData::get_singleton() + ->get() + .get_mut(); int index = args[0]; const Dictionary &data = args[1]; print_line("Update for index: " + itos(index)); @@ -1040,6 +1089,7 @@ void RoadLinesEditor::event_handler(const String &event, rld->set_line_edge(current_line, index, edge); rld->update_line_edges(); print_line("Update for index: " + itos(index) + " done"); + BaseData::get_singleton()->get().modified(); } } class EdgeEditorHandler { @@ -1275,7 +1325,9 @@ class EdgeEditorHandler { PopupMenu *menu = Object::cast_to(args[0]); int id = args[1]; int item_index = menu->get_item_index(id); - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = BaseData::get_singleton() + ->get() + .get_mut(); RoadLinesData::road_line rl = rld->get_line(current_line); String pname = get_pname(menu, id); @@ -1290,6 +1342,9 @@ class EdgeEditorHandler { set_lot(side, pname, dir_offt); rld->set_line_edge_left(current_line, index, side); + BaseData::get_singleton() + ->get() + .modified(); } else if (pname.begins_with("residental-") || pname.begins_with("business-")) { RoadLinesData::road_edge_side side = @@ -1345,7 +1400,9 @@ class EdgeEditorHandler { int id = args[1]; int item_index = menu->get_item_index(id); String pname = get_pname(menu, id); - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = BaseData::get_singleton() + ->get() + .get_mut(); RoadLinesData::road_line rl = rld->get_line(current_line); if (pname.begins_with("lot-")) { @@ -1359,6 +1416,10 @@ class EdgeEditorHandler { set_lot(side, pname, dir_offt); rld->set_line_edge_right(current_line, index, side); + + BaseData::get_singleton() + ->get() + .modified(); } else if (pname.begins_with("residental-") || pname.begins_with("business-")) { RoadLinesData::road_edge_side side = @@ -1422,7 +1483,8 @@ public: for (i = 0; i < top->get_child_count(); i++) top->get_child(i)->queue_delete(); print_line("line index: " + itos(index)); - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); if (index < 0 || index >= (int)rld->lines(current_line).points.size() - 1) return; @@ -1588,7 +1650,8 @@ public: static EdgeEditorHandler *edge_editor = nullptr; void RoadLinesEditor::create_edge_editor_ui(Control *top) { - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); assert(current_line.length() > 0); int index = get_line_index(); if (index < 0) diff --git a/src/modules/stream/road_processing.cpp b/src/modules/stream/road_processing.cpp index 9f4d709..095bc5f 100644 --- a/src/modules/stream/road_processing.cpp +++ b/src/modules/stream/road_processing.cpp @@ -25,6 +25,7 @@ #include "contours.h" #include "wedge.h" #include "road_lot.h" +#include "base_data.h" #include "road_processing.h" class DebugGeo : public ImmediateGeometry { @@ -353,7 +354,9 @@ out2:; { int i; List keys; - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = BaseData::get_singleton() + ->get() + .get_mut(); rld->get_road_lines_key_list(&keys); List::Element *e = keys.front(); bool ok = true; @@ -379,13 +382,16 @@ out2:; break; e = e->next(); } + BaseData::get_singleton()->get().modified(); return !ok; } void test_lines() { int i; List keys; - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = BaseData::get_singleton() + ->get() + .get_mut(); rld->get_road_lines_key_list(&keys); List::Element *e = keys.front(); while (e) { @@ -399,12 +405,15 @@ out2:; } e = e->next(); } + BaseData::get_singleton()->get().modified(); } void calculate_lot_depths() { int i; List keys; - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = BaseData::get_singleton() + ->get() + .get_mut(); rld->get_road_lines_key_list(&keys); List::Element *e = keys.front(); while (e) { @@ -430,6 +439,7 @@ out2:; } e = e->next(); } + BaseData::get_singleton()->get().modified(); } /* FIXME: need to generate lots from wedges, not lines (because intersections) and join lots on the same line segment if they are adjacent and of similar depth @@ -437,7 +447,9 @@ out2:; void create_structures() { List keys; - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = BaseData::get_singleton() + ->get() + .get_mut(); rld->get_road_lines_key_list(&keys); List::Element *e = keys.front(); print_line("create structures"); @@ -628,12 +640,15 @@ out2:; #endif print_line("structures generated: " + itos(structures_generated)); + BaseData::get_singleton()->get().modified(); } void create_edges() { int i; List keys; - RoadLinesData *rld = RoadLinesData::get_singleton(); + RoadLinesData *rld = BaseData::get_singleton() + ->get() + .get_mut(); edges.clear(); rld->get_road_lines_key_list(&keys); List::Element *e = keys.front(); @@ -678,6 +693,7 @@ out2:; } e = e->next(); } + BaseData::get_singleton()->get().modified(); } void sort_neighbors() { @@ -821,7 +837,9 @@ out2:; struct side_ref side_ref1 = side_refs[{ idx2, idx1 }]; struct RoadLinesData::road_edge_side mside1 = - RoadLinesData::get_singleton() + BaseData::get_singleton() + ->get() + .get() ->get_line_edge_side( side_ref1.line_key, side_ref1.edge, @@ -831,7 +849,9 @@ out2:; struct side_ref side_ref2 = side_refs[{ idx1, idx3 }]; struct RoadLinesData::road_edge_side mside2 = - RoadLinesData::get_singleton() + BaseData::get_singleton() + ->get() + .get() ->get_line_edge_side( side_ref2.line_key, side_ref2.edge, @@ -1036,7 +1056,8 @@ out2:; void road_setup2() { int i, j; - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton()->get().get(); // update_lot_depths(); ImmediateGeometry *d = rld->get_debug_node(); d->clear(); @@ -1433,13 +1454,19 @@ public: float get_lot_depth(const struct wedge &wedge) { RoadLinesData::road_edge_side mside1 = - RoadLinesData::get_singleton()->get_line_edge_side( - wedge.side1_ref.line_key, wedge.side1_ref.edge, - wedge.side1_ref.side); + BaseData::get_singleton() + ->get() + .get() + ->get_line_edge_side(wedge.side1_ref.line_key, + wedge.side1_ref.edge, + wedge.side1_ref.side); RoadLinesData::road_edge_side mside2 = - RoadLinesData::get_singleton()->get_line_edge_side( - wedge.side2_ref.line_key, wedge.side2_ref.edge, - wedge.side2_ref.side); + BaseData::get_singleton() + ->get() + .get() + ->get_line_edge_side(wedge.side2_ref.line_key, + wedge.side2_ref.edge, + wedge.side2_ref.side); float lot_depth_max = MIN(mside1.lot_depth_eff, mside2.lot_depth_eff); return lot_depth_max; @@ -1560,13 +1587,19 @@ public: assert(lanes[k].use_mesh.length() > 0); } RoadLinesData::road_edge_side mside1 = - RoadLinesData::get_singleton()->get_line_edge_side( - wedge.side1_ref.line_key, wedge.side1_ref.edge, - wedge.side1_ref.side); + BaseData::get_singleton() + ->get() + .get() + ->get_line_edge_side(wedge.side1_ref.line_key, + wedge.side1_ref.edge, + wedge.side1_ref.side); RoadLinesData::road_edge_side mside2 = - RoadLinesData::get_singleton()->get_line_edge_side( - wedge.side2_ref.line_key, wedge.side2_ref.edge, - wedge.side2_ref.side); + BaseData::get_singleton() + ->get() + .get() + ->get_line_edge_side(wedge.side2_ref.line_key, + wedge.side2_ref.edge, + wedge.side2_ref.side); print_line("m1: " + String::num(mside1.lot_depth_eff)); print_line("m2: " + String::num(mside2.lot_depth_eff)); /* for each lane */ @@ -1861,8 +1894,8 @@ public: void RoadProcessing::road_setup(Node *target, int debug_flags) { - RoadLinesData *rld = RoadLinesData::get_singleton(); - int i, j; + RoadLinesData *rld = + BaseData::get_singleton()->get().get_mut(); RoadLinesProcessing *r = BaseData::get_singleton()->get().get_mut(); r->set_debug_flags(debug_flags); @@ -1896,6 +1929,7 @@ void RoadProcessing::road_setup(Node *target, int debug_flags) .get_mut() ->create_road_meshes(target); r->road_setup2(); + BaseData::get_singleton()->get().modified(); } void RoadProcessing::remove_road_meshes(Node *target) @@ -1909,7 +1943,7 @@ void RoadProcessing::remove_road_meshes(Node *target) void RoadProcessing::load_data() { /* Not needed but still */ - RoadLinesData::get_singleton(); + BaseData::get_singleton()->get().get(); ConfigFile config; Error result = config.load("res://config/stream.conf"); ERR_FAIL_COND_MSG(result != OK, "Failed to load config"); @@ -2044,6 +2078,7 @@ RoadProcessing::RoadProcessing(flecs::world &ecs) ecs.import (); ecs.import (); ecs.import (); + load_data(); } RoadProcessing::~RoadProcessing() diff --git a/src/modules/stream/stream.cpp b/src/modules/stream/stream.cpp index 37b11cb..285ddf3 100644 --- a/src/modules/stream/stream.cpp +++ b/src/modules/stream/stream.cpp @@ -14,6 +14,7 @@ #include "road_processing.h" #include "road_debug.h" #include "buildings_data.h" +#include "road_lines_data.h" #include "base_data.h" #include "npc/npc.h" #include "stream.h" @@ -556,6 +557,7 @@ StreamWorld::StreamWorld() , count_shit(0) { BaseData::get_singleton()->get().import (); + BaseData::get_singleton()->get().import (); BaseData::get_singleton()->get().import (); BaseData::get_singleton() ->get() @@ -571,7 +573,6 @@ StreamWorld::StreamWorld() .component(); Error result = config.load("res://config/stream.conf"); ERR_FAIL_COND_MSG(result != OK, "Failed to load config"); - RoadProcessing::load_data(); world_extent = config.get_value("world", "world_extent"); tile_size = config.get_value("world", "tile_size"); view_distance = config.get_value("world", "view_distance"); diff --git a/src/modules/stream/ui/main_tabs.cpp b/src/modules/stream/ui/main_tabs.cpp index 598ed6a..6bb35a6 100644 --- a/src/modules/stream/ui/main_tabs.cpp +++ b/src/modules/stream/ui/main_tabs.cpp @@ -157,7 +157,10 @@ void MainTabs::handle_event(const String &event, const Vector &args) } else if (event == "road_lines_editor_update_line_index_ui") { String current_line = args[0]; if (current_line.length() > 0) { - RoadLinesData *rld = RoadLinesData::get_singleton(); + const RoadLinesData *rld = + BaseData::get_singleton() + ->get() + .get(); SpinBox *sp_line_index = Object::cast_to(ui_data["line_index"]); int index = sp_line_index->get_value(); @@ -275,16 +278,6 @@ void MainTabs::_notification(int which) .get() ->node; #endif - BuildingsEditor *editor = - world_editor_e - .get() - ->node; - RoadLinesEditor *rleditor = - world_editor_e - .get() - ->node; int i; if (!Engine::get_singleton()->is_editor_hint()) { npc_editor = memnew(WindowDialog); @@ -631,16 +624,44 @@ void MainTabs::_notification(int which) } break; } } - if (!Engine::get_singleton()->is_editor_hint()) { + if (!Engine::get_singleton()->is_editor_hint()) + set_process(true); + } break; + case NOTIFICATION_PROCESS: { + if (handlers.empty() && + !Engine::get_singleton()->is_editor_hint()) { + flecs::world ecs = BaseData::get_singleton()->get(); + flecs::entity world_editor_e = + ecs.lookup("world_editor"); + assert(world_editor_e.is_valid()); + assert(world_editor_e.has< + WorldEditor::components::world_editor_node>()); + assert(world_editor_e.has< + WorldEditor::components::buildings_editor_node>()); + assert(world_editor_e + .has()); + flecs::entity root_e = + BaseData::get_singleton()->get().lookup( + "lines"); + if (!root_e.is_valid()) + return; + BuildingsEditor *editor = + world_editor_e + .get() + ->node; + RoadLinesEditor *rleditor = + world_editor_e + .get() + ->node; handlers.push_back(memnew( HandleFullPositionSetting(editor, this))); handlers.push_back(memnew(MenuHandler(rleditor, this))); handlers.push_back( memnew(HandleLinesList(rleditor, this))); - set_process(true); } - } break; - case NOTIFICATION_PROCESS: { mode_visibility