From 88fb78ce2a3da67ad977f9db20ce4040528e5295 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Sat, 5 Jul 2025 15:52:42 -0600 Subject: [PATCH] Cargo bay lift --- levels/ghost_ship/ghost_ship_level.tscn | 820 +----------------- .../ghost_ship/level/cargo_bay/cargo_bay.tscn | 772 +++++++++++++++++ .../level/cargo_bay/elevator/cargo_lift.gd | 52 ++ .../cargo_bay/elevator/cargo_lift.gd.uid | 1 + .../level/cargo_bay/elevator/cargo_lift.tscn | 133 +++ .../level/cargo_bay/elevator/elevator.tscn | 55 -- .../cargo_bay/elevator/elevator_control.gd | 46 + .../elevator/elevator_control.gd.uid | 1 + .../cargo_bay/elevator/elevator_control.tscn | 88 ++ .../level/cargo_bay/elevator/rumble_zone.gd | 22 + .../cargo_bay/elevator/rumble_zone.gd.uid | 1 + src/equipment/mp3_player/mp3_player.gd | 5 +- src/equipment/spray.gd | 2 +- src/equipment/sticker_pack/sticker_pack.gd | 2 +- src/equipment/toothbrush/toothbrush.gd | 2 +- src/player/player.gd | 3 +- src/ui/hud/grunk_gauge/grunk_gauge.gd | 21 +- src/ui/hud/player_hud.gd | 6 +- src/world/gunkable/gunkable.gd | 2 +- src/world/world.tscn | 2 +- 20 files changed, 1144 insertions(+), 892 deletions(-) create mode 100644 levels/ghost_ship/level/cargo_bay/cargo_bay.tscn create mode 100644 levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd create mode 100644 levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd.uid create mode 100644 levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.tscn delete mode 100644 levels/ghost_ship/level/cargo_bay/elevator/elevator.tscn create mode 100644 levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd create mode 100644 levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd.uid create mode 100644 levels/ghost_ship/level/cargo_bay/elevator/elevator_control.tscn create mode 100644 levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd create mode 100644 levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd.uid diff --git a/levels/ghost_ship/ghost_ship_level.tscn b/levels/ghost_ship/ghost_ship_level.tscn index 573a2b8..5e7f386 100644 --- a/levels/ghost_ship/ghost_ship_level.tscn +++ b/levels/ghost_ship/ghost_ship_level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=39 format=3 uid="uid://crydi5cjgfwe5"] +[gd_scene load_steps=18 format=3 uid="uid://crydi5cjgfwe5"] [ext_resource type="PackedScene" uid="uid://oowut88kr2ox" path="res://levels/ghost_ship/player_ship/player_ship.tscn" id="1_2pyr1"] [ext_resource type="PackedScene" uid="uid://cwhmn3w8hoads" path="res://levels/ghost_ship/level/airlock/airlock.tscn" id="2_dxmep"] @@ -9,20 +9,8 @@ [ext_resource type="PackedScene" uid="uid://cnqvb6q8tyxmd" path="res://levels/ghost_ship/level/corridor_3/corridor_3.tscn" id="11_d1yty"] [ext_resource type="PackedScene" uid="uid://b3h2ldhluwco" path="res://levels/ghost_ship/level/medbay/medbay.tscn" id="13_ruwlj"] [ext_resource type="PackedScene" uid="uid://b4o21udtetijo" path="res://levels/ghost_ship/level/ops_center/ops_center.tscn" id="14_0idgf"] -[ext_resource type="ArrayMesh" uid="uid://bumwpsm42csme" path="res://assets/level/ceiling/ceiling_9x9.mesh" id="15_ruwlj"] -[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="16_0idgf"] +[ext_resource type="PackedScene" uid="uid://c2k0x1dp527n1" path="res://levels/ghost_ship/level/cargo_bay/cargo_bay.tscn" id="15_p11ap"] [ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="17_0idgf"] -[ext_resource type="Material" uid="uid://cqjr3cbxtfg2j" path="res://assets/materials/gunk.material" id="17_fll4m"] -[ext_resource type="ArrayMesh" uid="uid://dpr5cgq743f4s" path="res://assets/level/floor/floor_9x9.mesh" id="18_0idgf"] -[ext_resource type="ArrayMesh" uid="uid://c785n3j3aq4sf" path="res://assets/level/wall/wall_1.mesh" id="19_dly4i"] -[ext_resource type="Material" uid="uid://c1vy4bkwb1g5m" path="res://assets/materials/gunk_lowrez.material" id="20_rp2qp"] -[ext_resource type="Texture2D" uid="uid://bd52xpmm3oqw" path="res://assets/props/bulkhead/bulkhead_door_C.png" id="21_qu6vm"] -[ext_resource type="Texture2D" uid="uid://nexcq3xxrebb" path="res://assets/props/bulkhead/bulkhead_door_M.png" id="22_v8y1j"] -[ext_resource type="Texture2D" uid="uid://dk4sm780p6jfc" path="res://assets/props/bulkhead/bulkhead_door_N.png" id="23_54or8"] -[ext_resource type="Texture2D" uid="uid://rjuyd20y2ov1" path="res://assets/props/bulkhead/bulkhead_door_R.png" id="24_qo5rw"] -[ext_resource type="ArrayMesh" uid="uid://dbgk0kdg1vufk" path="res://assets/level/ceiling/ceiling_1.mesh" id="25_v8y1j"] -[ext_resource type="ArrayMesh" uid="uid://cpspkxu1ntdv7" path="res://levels/ghost_ship/level/cargo_bay/elevator_shaft.obj" id="26_54or8"] -[ext_resource type="PackedScene" uid="uid://ctm84yms40858" path="res://src/props/railing/railing.tscn" id="27_qo5rw"] [ext_resource type="PackedScene" uid="uid://cubwniraol1qn" path="res://src/props/bulkhead/bulkhead.tscn" id="35_f0xh4"] [ext_resource type="PackedScene" uid="uid://ctr56p23cvupu" path="res://src/props/retinal_scanner/retinal_scanner.tscn" id="41_u2hqf"] [ext_resource type="Script" uid="uid://cvx514gdjd5ev" path="res://src/world/meet_spook/meet_spook.gd" id="49_dxmep"] @@ -39,53 +27,6 @@ agent_radius = 0.75 region_min_size = 14.0 edge_max_length = 4.0 -[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_dly4i"] -data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5) - -[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_fll4m"] -data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5) - -[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_if0c2"] -data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5) - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sqa4l"] -albedo_texture = ExtResource("21_qu6vm") -metallic = 1.0 -metallic_texture = ExtResource("22_v8y1j") -roughness_texture = ExtResource("24_qo5rw") -normal_enabled = true -normal_texture = ExtResource("23_54or8") -uv1_scale = Vector3(3, 2, 1) -texture_filter = 2 - -[sub_resource type="BoxMesh" id="BoxMesh_dly4i"] -material = SubResource("StandardMaterial3D_sqa4l") -size = Vector3(9, 6, 0.2) - -[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_54or8"] -data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5) - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"] -albedo_texture = ExtResource("21_qu6vm") -metallic = 1.0 -metallic_texture = ExtResource("21_qu6vm") -roughness_texture = ExtResource("24_qo5rw") -normal_enabled = true -normal_texture = ExtResource("23_54or8") -uv1_scale = Vector3(9, 6, 1) -texture_filter = 2 - -[sub_resource type="BoxMesh" id="BoxMesh_qo5rw"] -material = SubResource("StandardMaterial3D_54or8") -size = Vector3(6, 1, 6) - -[sub_resource type="Curve3D" id="Curve3D_54or8"] -_data = { -"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -24, 0), -"tilts": PackedFloat32Array(0, 0) -} -point_count = 2 - [node name="GhostShipLevel" type="Node3D"] [node name="PlayerShip" parent="." instance=ExtResource("1_2pyr1")] @@ -293,764 +234,9 @@ OVERRIDE" font_size = 24 outline_size = 10 -[node name="CargoBay" type="Node3D" parent="BeastNav"] +[node name="CargoBay" parent="BeastNav" instance=ExtResource("15_p11ap")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, -60) -[node name="LoadingDock" type="Node3D" parent="BeastNav/CargoBay"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 9) - -[node name="Bounds" type="Node3D" parent="BeastNav/CargoBay/LoadingDock"] - -[node name="Ceiling" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-1, -7.64274e-15, 8.74228e-08, 0, -1, -8.74228e-08, 8.74228e-08, -8.74228e-08, 1, 0, 6, 6) -mesh = ExtResource("15_ruwlj") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_dly4i") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("17_fll4m") - -[node name="Ceiling2" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-1, -7.64274e-15, 8.74228e-08, 0, -1, -8.74228e-08, 8.74228e-08, -8.74228e-08, 1, 0, 6, -3) -mesh = ExtResource("15_ruwlj") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling2"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling2/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_dly4i") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("17_fll4m") - -[node name="Floor" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 6) -mesh = ExtResource("18_0idgf") -skeleton = NodePath("") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Floor"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Floor/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_fll4m") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Floor/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("17_fll4m") - -[node name="Floor2" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -3) -mesh = ExtResource("18_0idgf") -skeleton = NodePath("") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Floor2"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Floor2/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_fll4m") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Floor2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("17_fll4m") - -[node name="Wall2" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, -3) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall2"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall2/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall3" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, -6) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall3"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall3/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall3/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall13" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, -6) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall13"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall13/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall13/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall25" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, -9) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall25"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall25/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall25/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall26" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, -12) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall26"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall26/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall26/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall36" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 1.74846e-07, -7.64274e-15, 0, -4.37114e-08, -1, -1.74846e-07, 1, -4.37114e-08, -3, 4.5, -13.5) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall36"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall36/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall36/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall37" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 1.74846e-07, -7.64274e-15, 0, -4.37114e-08, -1, -1.74846e-07, 1, -4.37114e-08, 0, 4.5, -13.5) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall37"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall37/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall37/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall38" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 1.74846e-07, -7.64274e-15, 0, -4.37114e-08, -1, -1.74846e-07, 1, -4.37114e-08, 3, 4.5, -13.5) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall38"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall38/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall38/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall27" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, -12) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall27"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall27/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall27/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall28" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, -9) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall28"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall28/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall28/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall14" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, -3) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall14"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall14/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall14/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall15" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, 0) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall15"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall15/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall15/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall16" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, 3) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall16"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall16/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall16/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall17" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, 6) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall17"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall17/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall17/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall18" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, 9) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall18"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall18/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall18/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall19" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, 9) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall19"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall19/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall19/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall20" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, 6) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall20"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall20/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall20/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall21" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, 3) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall21"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall21/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall21/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall22" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, 0) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall22"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall22/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall22/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall23" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, -3) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall23"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall23/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall23/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall24" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, -6) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall24"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall24/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall24/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall4" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, 3) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall4"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall4/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall4/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall5" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, 6) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall5"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall5/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall5/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall6" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, 9) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall6"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall6/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall6/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall7" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, 9) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall7"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall7/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall7/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall8" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, 6) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall8"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall8/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall8/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall9" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, 3) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall9"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall9/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall9/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall10" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, 0) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall10"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall10/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall10/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall11" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, -3) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall11"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall11/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall11/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall12" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, -6) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall12"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall12/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall12/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall30" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, -9) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall30"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall30/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall30/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Wall32" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, -12) -mesh = ExtResource("19_dly4i") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall32"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall32/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_if0c2") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Wall32/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="BayDoor" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 10.5) -mesh = SubResource("BoxMesh_dly4i") - -[node name="Ceiling3" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 3, 6, -9) -mesh = ExtResource("25_v8y1j") -skeleton = NodePath("../../..") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling3"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling3/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_54or8") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling3/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Ceiling4" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 0, 6, -9) -mesh = ExtResource("25_v8y1j") -skeleton = NodePath("../../..") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling4"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling4/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_54or8") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling4/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Ceiling5" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, -3, 6, -9) -mesh = ExtResource("25_v8y1j") -skeleton = NodePath("../../..") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling5"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling5/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_54or8") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling5/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Ceiling6" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, -3, 6, -12) -mesh = ExtResource("25_v8y1j") -skeleton = NodePath("../../..") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling6"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling6/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_54or8") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling6/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Ceiling7" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 0, 6, -12) -mesh = ExtResource("25_v8y1j") -skeleton = NodePath("../../..") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling7"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling7/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_54or8") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling7/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Ceiling8" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Bounds"] -transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 3, 6, -12) -mesh = ExtResource("25_v8y1j") -skeleton = NodePath("../../..") - -[node name="StaticBody3D" type="StaticBody3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling8"] -collision_layer = 5 -collision_mask = 0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling8/StaticBody3D"] -shape = SubResource("ConcavePolygonShape3D_54or8") - -[node name="Gunkable" parent="BeastNav/CargoBay/LoadingDock/Bounds/Ceiling8/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("16_0idgf")] -mask_dim = 64 -body = NodePath("..") -mesh_instance = NodePath("../..") -source_gunk_material = ExtResource("20_rp2qp") - -[node name="Elevator" type="Node3D" parent="BeastNav/CargoBay/LoadingDock"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10.5) - -[node name="Shaft" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Elevator"] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 4.5, 0, -3) -mesh = ExtResource("26_54or8") - -[node name="ElevatorPlatform" type="Node3D" parent="BeastNav/CargoBay/LoadingDock/Elevator"] - -[node name="MeshInstance3D" type="MeshInstance3D" parent="BeastNav/CargoBay/LoadingDock/Elevator/ElevatorPlatform"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, -0.5, 0) -mesh = SubResource("BoxMesh_qo5rw") -skeleton = NodePath("../..") - -[node name="Railing" parent="BeastNav/CargoBay/LoadingDock/Elevator/ElevatorPlatform" instance=ExtResource("27_qo5rw")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.5, 0.5, 1.5) -skeleton = NodePath("../..") - -[node name="Railing2" parent="BeastNav/CargoBay/LoadingDock/Elevator/ElevatorPlatform" instance=ExtResource("27_qo5rw")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.5, 0.5, -1.5) -skeleton = NodePath("../..") - -[node name="Path3D" type="Path3D" parent="BeastNav/CargoBay/LoadingDock/Elevator"] -curve = SubResource("Curve3D_54or8") - -[node name="Railing" parent="BeastNav/CargoBay/LoadingDock/Elevator" instance=ExtResource("27_qo5rw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0.5, 3) - [node name="Bulkheads" type="Node3D" parent="BeastNav"] [node name="BulkheadA" parent="BeastNav/Bulkheads" instance=ExtResource("35_f0xh4")] diff --git a/levels/ghost_ship/level/cargo_bay/cargo_bay.tscn b/levels/ghost_ship/level/cargo_bay/cargo_bay.tscn new file mode 100644 index 0000000..f5aa146 --- /dev/null +++ b/levels/ghost_ship/level/cargo_bay/cargo_bay.tscn @@ -0,0 +1,772 @@ +[gd_scene load_steps=19 format=3 uid="uid://c2k0x1dp527n1"] + +[ext_resource type="ArrayMesh" uid="uid://bumwpsm42csme" path="res://assets/level/ceiling/ceiling_9x9.mesh" id="1_20lab"] +[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="2_jd3pc"] +[ext_resource type="Material" uid="uid://cqjr3cbxtfg2j" path="res://assets/materials/gunk.material" id="3_s2uxq"] +[ext_resource type="ArrayMesh" uid="uid://dpr5cgq743f4s" path="res://assets/level/floor/floor_9x9.mesh" id="4_exqd3"] +[ext_resource type="ArrayMesh" uid="uid://c785n3j3aq4sf" path="res://assets/level/wall/wall_1.mesh" id="5_fopii"] +[ext_resource type="Material" uid="uid://c1vy4bkwb1g5m" path="res://assets/materials/gunk_lowrez.material" id="6_d0c5k"] +[ext_resource type="Texture2D" uid="uid://bd52xpmm3oqw" path="res://assets/props/bulkhead/bulkhead_door_C.png" id="7_iwhm6"] +[ext_resource type="Texture2D" uid="uid://nexcq3xxrebb" path="res://assets/props/bulkhead/bulkhead_door_M.png" id="8_qdfj2"] +[ext_resource type="Texture2D" uid="uid://dk4sm780p6jfc" path="res://assets/props/bulkhead/bulkhead_door_N.png" id="9_wwtwk"] +[ext_resource type="Texture2D" uid="uid://rjuyd20y2ov1" path="res://assets/props/bulkhead/bulkhead_door_R.png" id="10_txlc2"] +[ext_resource type="ArrayMesh" uid="uid://dbgk0kdg1vufk" path="res://assets/level/ceiling/ceiling_1.mesh" id="11_t6ns3"] +[ext_resource type="PackedScene" uid="uid://b21fp0ko055os" path="res://levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.tscn" id="12_18p4i"] + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_dly4i"] +data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5) + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_fll4m"] +data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5) + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_if0c2"] +data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sqa4l"] +albedo_texture = ExtResource("7_iwhm6") +metallic = 1.0 +metallic_texture = ExtResource("8_qdfj2") +roughness_texture = ExtResource("10_txlc2") +normal_enabled = true +normal_texture = ExtResource("9_wwtwk") +uv1_scale = Vector3(3, 2, 1) +texture_filter = 2 + +[sub_resource type="BoxMesh" id="BoxMesh_dly4i"] +material = SubResource("StandardMaterial3D_sqa4l") +size = Vector3(9, 6, 0.2) + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_54or8"] +data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5) + +[node name="CargoBay" type="Node3D"] + +[node name="LoadingDock" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 9) + +[node name="Bounds" type="Node3D" parent="LoadingDock"] + +[node name="Ceiling" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-1, -7.64274e-15, 8.74228e-08, 0, -1, -8.74228e-08, 8.74228e-08, -8.74228e-08, 1, 0, 6, 6) +mesh = ExtResource("1_20lab") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Ceiling"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Ceiling/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_dly4i") + +[node name="Gunkable" parent="LoadingDock/Bounds/Ceiling/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("3_s2uxq") + +[node name="Ceiling2" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-1, -7.64274e-15, 8.74228e-08, 0, -1, -8.74228e-08, 8.74228e-08, -8.74228e-08, 1, 0, 6, -3) +mesh = ExtResource("1_20lab") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Ceiling2"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Ceiling2/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_dly4i") + +[node name="Gunkable" parent="LoadingDock/Bounds/Ceiling2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("3_s2uxq") + +[node name="Floor" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 6) +mesh = ExtResource("4_exqd3") +skeleton = NodePath("") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Floor"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Floor/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_fll4m") + +[node name="Gunkable" parent="LoadingDock/Bounds/Floor/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("3_s2uxq") + +[node name="Floor2" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -3) +mesh = ExtResource("4_exqd3") +skeleton = NodePath("") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Floor2"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Floor2/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_fll4m") + +[node name="Gunkable" parent="LoadingDock/Bounds/Floor2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("3_s2uxq") + +[node name="Wall2" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, -3) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall2"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall2/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall3" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, -6) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall3"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall3/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall3/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall13" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, -6) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall13"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall13/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall13/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall25" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, -9) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall25"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall25/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall25/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall26" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, -12) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall26"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall26/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall26/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall36" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 1.74846e-07, -7.64274e-15, 0, -4.37114e-08, -1, -1.74846e-07, 1, -4.37114e-08, -3, 4.5, -13.5) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall36"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall36/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall36/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall37" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 1.74846e-07, -7.64274e-15, 0, -4.37114e-08, -1, -1.74846e-07, 1, -4.37114e-08, 0, 4.5, -13.5) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall37"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall37/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall37/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall38" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 1.74846e-07, -7.64274e-15, 0, -4.37114e-08, -1, -1.74846e-07, 1, -4.37114e-08, 3, 4.5, -13.5) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall38"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall38/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall38/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall27" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, -12) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall27"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall27/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall27/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall28" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, -9) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall28"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall28/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall28/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall14" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, -3) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall14"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall14/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall14/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall15" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, 0) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall15"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall15/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall15/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall16" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, 3) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall16"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall16/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall16/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall17" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, 6) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall17"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall17/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall17/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall18" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 1.5, 9) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall18"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall18/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall18/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall19" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, 9) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall19"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall19/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall19/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall20" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, 6) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall20"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall20/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall20/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall21" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, 3) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall21"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall21/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall21/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall22" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, 0) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall22"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall22/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall22/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall23" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, -3) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall23"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall23/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall23/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall24" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1.31135e-07, -1, 4.37114e-08, 0, -4.37114e-08, -1, 1, 1.31135e-07, -5.73205e-15, 4.5, 4.5, -6) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall24"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall24/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall24/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall4" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, 3) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall4"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall4/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall4/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall5" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, 6) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall5"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall5/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall5/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall6" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 1.5, 9) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall6"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall6/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall6/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall7" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, 9) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall7"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall7/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall7/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall8" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, 6) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall8"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall8/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall8/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall9" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, 3) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall9"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall9/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall9/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall10" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, 0) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall10"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall10/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall10/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall11" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, -3) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall11"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall11/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall11/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall12" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, -6) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall12"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall12/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall12/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall30" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, -9) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall30"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall30/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall30/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Wall32" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(-2.18557e-07, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -2.18557e-07, 9.55343e-15, -4.5, 4.5, -12) +mesh = ExtResource("5_fopii") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Wall32"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Wall32/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_if0c2") + +[node name="Gunkable" parent="LoadingDock/Bounds/Wall32/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="BayDoor" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 10.5) +mesh = SubResource("BoxMesh_dly4i") + +[node name="Ceiling3" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 3, 6, -9) +mesh = ExtResource("11_t6ns3") +skeleton = NodePath("../../..") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Ceiling3"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Ceiling3/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_54or8") + +[node name="Gunkable" parent="LoadingDock/Bounds/Ceiling3/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Ceiling4" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 0, 6, -9) +mesh = ExtResource("11_t6ns3") +skeleton = NodePath("../../..") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Ceiling4"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Ceiling4/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_54or8") + +[node name="Gunkable" parent="LoadingDock/Bounds/Ceiling4/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Ceiling5" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, -3, 6, -9) +mesh = ExtResource("11_t6ns3") +skeleton = NodePath("../../..") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Ceiling5"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Ceiling5/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_54or8") + +[node name="Gunkable" parent="LoadingDock/Bounds/Ceiling5/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Ceiling6" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, -3, 6, -12) +mesh = ExtResource("11_t6ns3") +skeleton = NodePath("../../..") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Ceiling6"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Ceiling6/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_54or8") + +[node name="Gunkable" parent="LoadingDock/Bounds/Ceiling6/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Ceiling7" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 0, 6, -12) +mesh = ExtResource("11_t6ns3") +skeleton = NodePath("../../..") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Ceiling7"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Ceiling7/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_54or8") + +[node name="Gunkable" parent="LoadingDock/Bounds/Ceiling7/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Ceiling8" type="MeshInstance3D" parent="LoadingDock/Bounds"] +transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 3, 6, -12) +mesh = ExtResource("11_t6ns3") +skeleton = NodePath("../../..") + +[node name="StaticBody3D" type="StaticBody3D" parent="LoadingDock/Bounds/Ceiling8"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LoadingDock/Bounds/Ceiling8/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_54or8") + +[node name="Gunkable" parent="LoadingDock/Bounds/Ceiling8/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_jd3pc")] +mask_dim = 64 +body = NodePath("..") +mesh_instance = NodePath("../..") +source_gunk_material = ExtResource("6_d0c5k") + +[node name="Elevator" parent="LoadingDock" instance=ExtResource("12_18p4i")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10.5) diff --git a/levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd b/levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd new file mode 100644 index 0000000..7b25888 --- /dev/null +++ b/levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd @@ -0,0 +1,52 @@ +class_name CargoLift extends Node3D + +signal at_limit + +const SPEED_SMOOTHING := 1.618 +const LIMIT_BRAKE_BUFFER := 0.25 +const LIMIT_BRAKE_FACTOR := 0.2 + +@export var progress := 0.0: + set = _set_progress + +@export var speed := 0.0 +@export var target_speed := 0.0 + +@export var max_speed := 0.04 + +@onready var elevator_path_follow: PathFollow3D = %ElevatorPathFollow + + +func _set_progress(value: float) -> void: + progress = clampf(value, 0.0, 1.0) + + if progress != value: + speed = 0 + target_speed = 0 + at_limit.emit() + + if elevator_path_follow: + elevator_path_follow.progress_ratio = progress + + +func _physics_process(delta: float) -> void: + var weight := 1 - exp(-SPEED_SMOOTHING * delta) + var a := 2 * progress - 1 + var b := clampf(1 - a * a, 0, LIMIT_BRAKE_FACTOR) / LIMIT_BRAKE_FACTOR + var limit_factor := max_speed * remap(b, 0, 1, LIMIT_BRAKE_BUFFER, 1) + speed = clampf(lerpf(speed, target_speed, weight), -limit_factor, limit_factor) + progress += speed * delta + + +func set_target_speed(value: float) -> void: + target_speed = clampf(value, -max_speed, max_speed) + + +func serialize() -> Dictionary: + var state := {"progress": progress} + return state + + +func deserialize(state: Dictionary) -> void: + @warning_ignore("unsafe_cast") + progress = state["progress"] as float diff --git a/levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd.uid b/levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd.uid new file mode 100644 index 0000000..c27ea7a --- /dev/null +++ b/levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd.uid @@ -0,0 +1 @@ +uid://ppfu4vq3ocwk diff --git a/levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.tscn b/levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.tscn new file mode 100644 index 0000000..215f0d2 --- /dev/null +++ b/levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.tscn @@ -0,0 +1,133 @@ +[gd_scene load_steps=15 format=3 uid="uid://b21fp0ko055os"] + +[ext_resource type="Script" uid="uid://ppfu4vq3ocwk" path="res://levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd" id="1_extwr"] +[ext_resource type="ArrayMesh" uid="uid://cpspkxu1ntdv7" path="res://levels/ghost_ship/level/cargo_bay/elevator_shaft.obj" id="2_1wrn3"] +[ext_resource type="Texture2D" uid="uid://bd52xpmm3oqw" path="res://assets/props/bulkhead/bulkhead_door_C.png" id="3_yvqws"] +[ext_resource type="Texture2D" uid="uid://dk4sm780p6jfc" path="res://assets/props/bulkhead/bulkhead_door_N.png" id="4_m31fx"] +[ext_resource type="Texture2D" uid="uid://rjuyd20y2ov1" path="res://assets/props/bulkhead/bulkhead_door_R.png" id="5_ej4kt"] +[ext_resource type="Script" uid="uid://dr4s44i63h1nw" path="res://levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd" id="6_il20m"] +[ext_resource type="PackedScene" uid="uid://ctm84yms40858" path="res://src/props/railing/railing.tscn" id="7_esw7b"] +[ext_resource type="PackedScene" uid="uid://bbmi28batmn0p" path="res://levels/ghost_ship/level/cargo_bay/elevator/elevator_control.tscn" id="8_g20so"] + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_egxej"] +data = PackedVector3Array(0, 3, 0, 0, -0.0001, 0, 0, 3, -9.0002, 0, 3, -9.0002, 0, -0.0001, 0, 0, -0.0001, -9.0002, 0, 3, -9.0002, 0, -0.0001, -9.0002, 0, -21.0003, -25, 0, -21.0003, -25, 0, -0.0001, -9.0002, 0, -24, -25, 0, -0.0001, -9.0002, 0, -0.0001, 0, 0, -24, -25, 0, -24, -25, 0, -0.0001, 0, 0, -24, -16.0002, -6, -24, -25, -6, -0.0001, -9.0002, -6, -21.0003, -25, -6, -21.0003, -25, -6, -0.0001, -9.0002, -6, 3, -9.0002, -6, -24, -16.0002, -6, -0.0001, -9.0002, -6, -24, -25, -6, -0.0001, 0, -6, -0.0001, -9.0002, -6, -24, -16.0002, 0, -24, -25, 0, -24, -16.0002, -6, -24, -25, -6, -24, -25, 0, -24, -16.0002, -6, -24, -16.0002, -6, 3, -9.0002, 0, 3, -9.0002, -6, -21.0003, -25, -6, -21.0003, -25, 0, 3, -9.0002, 0, -21.0003, -25, 0, -0.0001, 0, -6, -0.0001, 0, 0, -24, -16.0002, 0, -24, -16.0002, -6, -0.0001, 0, -6, -24, -16.0002) + +[sub_resource type="Curve3D" id="Curve3D_54or8"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -24, 0), +"tilts": PackedFloat32Array(0, 0) +} +point_count = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"] +albedo_texture = ExtResource("3_yvqws") +metallic = 1.0 +metallic_texture = ExtResource("3_yvqws") +roughness_texture = ExtResource("5_ej4kt") +normal_enabled = true +normal_texture = ExtResource("4_m31fx") +uv1_scale = Vector3(9, 6, 1) +texture_filter = 2 + +[sub_resource type="BoxMesh" id="BoxMesh_qo5rw"] +material = SubResource("StandardMaterial3D_54or8") +size = Vector3(6, 1, 6) + +[sub_resource type="BoxShape3D" id="BoxShape3D_wg450"] +size = Vector3(6, 1, 6) + +[sub_resource type="BoxShape3D" id="BoxShape3D_egxej"] +size = Vector3(6, 0.2, 6) + +[node name="CargoLift" type="Node3D" groups=["Persistent"]] +script = ExtResource("1_extwr") + +[node name="Shaft" type="MeshInstance3D" parent="."] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 4.5, 0, -3) +mesh = ExtResource("2_1wrn3") + +[node name="StaticBody3D" type="StaticBody3D" parent="Shaft"] +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Shaft/StaticBody3D"] +shape = SubResource("ConcavePolygonShape3D_egxej") + +[node name="ElevatorPath" type="Path3D" parent="."] +curve = SubResource("Curve3D_54or8") + +[node name="ElevatorPathFollow" type="PathFollow3D" parent="ElevatorPath"] +unique_name_in_owner = true +transform = Transform3D(-1.62921e-07, -0.83205, 0.5547, 0, 0.5547, 0.83205, -1, 1.35558e-07, -9.03721e-08, 0, 0, 0) +loop = false + +[node name="ElevatorPlatform" type="Node3D" parent="ElevatorPath/ElevatorPathFollow"] +transform = Transform3D(-1.62921e-07, 0, -1, -0.83205, 0.5547, 1.35558e-07, 0.5547, 0.83205, -9.03721e-08, 0, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, -0.5, 0) +mesh = SubResource("BoxMesh_qo5rw") +skeleton = NodePath("../../../..") + +[node name="AnimatableBody3D" type="AnimatableBody3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D"] +transform = Transform3D(1, -7.0682e-27, -2.71051e-20, 4.06422e-26, 1, 0, 0, 1.69407e-21, 1, 0, 0, 0) +collision_layer = 5 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D/AnimatableBody3D"] +shape = SubResource("BoxShape3D_wg450") + +[node name="RemoteTransform3D" type="RemoteTransform3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D"] +remote_path = NodePath("../AnimatableBody3D") + +[node name="RumbleZone" type="Area3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2, 0) +collision_layer = 0 +collision_mask = 8 +script = ExtResource("6_il20m") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D/RumbleZone"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0) +shape = SubResource("BoxShape3D_egxej") + +[node name="Railing" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform" instance=ExtResource("7_esw7b")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.5, 0.5, 1.5) +skeleton = NodePath("../../../..") + +[node name="Railing2" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform" instance=ExtResource("7_esw7b")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.5, 0.5, -1.5) +skeleton = NodePath("../../../..") + +[node name="ControlConsole" type="Node3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0.5, -1.4) + +[node name="ConsoleBase" type="CSGCombiner3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole"] +use_collision = true +collision_layer = 5 +collision_mask = 0 + +[node name="BaseBox" type="CSGBox3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ConsoleBase"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.55) +use_collision = true +size = Vector3(1, 1, 2.1) + +[node name="ControlPanel" type="CSGBox3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ConsoleBase"] +transform = Transform3D(0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0, 1, -0.6, 0.6, 0) +operation = 2 + +[node name="SlideNotch" type="CSGBox3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ConsoleBase"] +transform = Transform3D(0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0, 1, -0.269205, 0.330795, 0) +operation = 2 +size = Vector3(0.4, 0.2, 0.02) + +[node name="ElevatorControl" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole" instance=ExtResource("8_g20so")] +transform = Transform3D(0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0, 1, -0.225, 0.285, 0) + +[node name="Railing" parent="." instance=ExtResource("7_esw7b")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0.5, 3) + +[connection signal="at_limit" from="." to="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ElevatorControl" method="on_set_mid"] +[connection signal="body_exited" from="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D/RumbleZone" to="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D/RumbleZone" method="_on_body_exited"] +[connection signal="set_high" from="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ElevatorControl" to="." method="set_target_speed" binds= [-1.0]] +[connection signal="set_low" from="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ElevatorControl" to="." method="set_target_speed" binds= [1.0]] +[connection signal="set_mid" from="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ElevatorControl" to="." method="set_target_speed" binds= [0.0]] diff --git a/levels/ghost_ship/level/cargo_bay/elevator/elevator.tscn b/levels/ghost_ship/level/cargo_bay/elevator/elevator.tscn deleted file mode 100644 index 48e0e74..0000000 --- a/levels/ghost_ship/level/cargo_bay/elevator/elevator.tscn +++ /dev/null @@ -1,55 +0,0 @@ -[gd_scene load_steps=9 format=3 uid="uid://b21fp0ko055os"] - -[ext_resource type="ArrayMesh" uid="uid://cpspkxu1ntdv7" path="res://levels/ghost_ship/level/cargo_bay/elevator_shaft.obj" id="1_wg450"] -[ext_resource type="Texture2D" uid="uid://bd52xpmm3oqw" path="res://assets/props/bulkhead/bulkhead_door_C.png" id="2_jgw86"] -[ext_resource type="Texture2D" uid="uid://dk4sm780p6jfc" path="res://assets/props/bulkhead/bulkhead_door_N.png" id="3_egxej"] -[ext_resource type="Texture2D" uid="uid://rjuyd20y2ov1" path="res://assets/props/bulkhead/bulkhead_door_R.png" id="4_ho6u3"] -[ext_resource type="PackedScene" uid="uid://ctm84yms40858" path="res://src/props/railing/railing.tscn" id="5_sfkxm"] - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"] -albedo_texture = ExtResource("2_jgw86") -metallic = 1.0 -metallic_texture = ExtResource("2_jgw86") -roughness_texture = ExtResource("4_ho6u3") -normal_enabled = true -normal_texture = ExtResource("3_egxej") -uv1_scale = Vector3(9, 6, 1) -texture_filter = 2 - -[sub_resource type="BoxMesh" id="BoxMesh_qo5rw"] -material = SubResource("StandardMaterial3D_54or8") -size = Vector3(6, 1, 6) - -[sub_resource type="Curve3D" id="Curve3D_54or8"] -_data = { -"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -24, 0), -"tilts": PackedFloat32Array(0, 0) -} -point_count = 2 - -[node name="Elevator" type="Node3D"] - -[node name="Shaft" type="MeshInstance3D" parent="."] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 4.5, 0, -3) -mesh = ExtResource("1_wg450") - -[node name="ElevatorPlatform" type="Node3D" parent="."] - -[node name="MeshInstance3D" type="MeshInstance3D" parent="ElevatorPlatform"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, -0.5, 0) -mesh = SubResource("BoxMesh_qo5rw") -skeleton = NodePath("../..") - -[node name="Railing" parent="ElevatorPlatform" instance=ExtResource("5_sfkxm")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.5, 0.5, 1.5) -skeleton = NodePath("../..") - -[node name="Railing2" parent="ElevatorPlatform" instance=ExtResource("5_sfkxm")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.5, 0.5, -1.5) -skeleton = NodePath("../..") - -[node name="ElevatorPath" type="Path3D" parent="."] -curve = SubResource("Curve3D_54or8") - -[node name="Railing" parent="." instance=ExtResource("5_sfkxm")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0.5, 3) diff --git a/levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd b/levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd new file mode 100644 index 0000000..13f7bf6 --- /dev/null +++ b/levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd @@ -0,0 +1,46 @@ +extends Node3D + +signal set_low +signal set_mid +signal set_high + +enum State { + LOW, + MID, + HIGH, +} + +const TWEEN_TIME := 1.618 + +@export var state := State.MID + +@onready var control_slide_path_follow: PathFollow3D = %ControlSlidePathFollow + + +func tween_slide_position(pct: float) -> Tween: + var tween := create_tween() + ( + tween + . tween_property(control_slide_path_follow, "progress_ratio", pct, TWEEN_TIME) + . set_trans(Tween.TRANS_BACK) + . set_ease(Tween.EASE_IN_OUT) + ) + return tween + + +func on_set_high() -> void: + if state != State.HIGH: + state = State.HIGH + tween_slide_position(1).tween_callback(set_high.emit) + + +func on_set_mid() -> void: + if state != State.MID: + state = State.MID + tween_slide_position(0.5).tween_callback(set_mid.emit) + + +func on_set_low() -> void: + if state != State.LOW: + state = State.LOW + tween_slide_position(0).tween_callback(set_low.emit) diff --git a/levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd.uid b/levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd.uid new file mode 100644 index 0000000..19490e8 --- /dev/null +++ b/levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd.uid @@ -0,0 +1 @@ +uid://dsh2jckqof1lh diff --git a/levels/ghost_ship/level/cargo_bay/elevator/elevator_control.tscn b/levels/ghost_ship/level/cargo_bay/elevator/elevator_control.tscn new file mode 100644 index 0000000..d9ab285 --- /dev/null +++ b/levels/ghost_ship/level/cargo_bay/elevator/elevator_control.tscn @@ -0,0 +1,88 @@ +[gd_scene load_steps=8 format=3 uid="uid://bbmi28batmn0p"] + +[ext_resource type="Script" uid="uid://deg5xd87cy8rg" path="res://src/props/interactive.gd" id="1_4m3mp"] +[ext_resource type="Script" uid="uid://dsh2jckqof1lh" path="res://levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd" id="1_rhd4r"] + +[sub_resource type="Curve3D" id="Curve3D_wg450"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0, 0), +"tilts": PackedFloat32Array(0, 0) +} +point_count = 2 + +[sub_resource type="BoxMesh" id="BoxMesh_wg450"] +size = Vector3(0.06, 0.06, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_ho6u3"] +size = Vector3(0.15, 0.1, 0.3) + +[sub_resource type="BoxShape3D" id="BoxShape3D_egxej"] +size = Vector3(0.15, 0.1, 0.3) + +[sub_resource type="BoxShape3D" id="BoxShape3D_jgw86"] +size = Vector3(0.15, 0.1, 0.3) + +[node name="ElevatorControl" type="Node3D"] +script = ExtResource("1_rhd4r") + +[node name="ControlSlidePath" type="Path3D" parent="."] +curve = SubResource("Curve3D_wg450") + +[node name="ControlSlidePathFollow" type="PathFollow3D" parent="ControlSlidePath"] +unique_name_in_owner = true +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0) +progress = 0.2 +loop = false + +[node name="ControlSlide" type="MeshInstance3D" parent="ControlSlidePath/ControlSlidePathFollow"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0) +mesh = SubResource("BoxMesh_wg450") +skeleton = NodePath("../../../..") + +[node name="HighInteractor" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, 2.38419e-07, 0) +collision_layer = 2 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="HighInteractor"] +shape = SubResource("BoxShape3D_ho6u3") + +[node name="Interactive" type="Node" parent="HighInteractor"] +script = ExtResource("1_4m3mp") +enabled = true +label = "cargo lift" +verb = "set" +metadata/_custom_type_script = "uid://deg5xd87cy8rg" + +[node name="MidInteractor" type="StaticBody3D" parent="."] +collision_layer = 2 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="MidInteractor"] +shape = SubResource("BoxShape3D_egxej") + +[node name="Interactive" type="Node" parent="MidInteractor"] +script = ExtResource("1_4m3mp") +enabled = true +label = "cargo lift" +verb = "set" +metadata/_custom_type_script = "uid://deg5xd87cy8rg" + +[node name="LowInteractor" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15, 2.38419e-07, 0) +collision_layer = 2 +collision_mask = 0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LowInteractor"] +shape = SubResource("BoxShape3D_jgw86") + +[node name="Interactive" type="Node" parent="LowInteractor"] +script = ExtResource("1_4m3mp") +enabled = true +label = "cargo lift" +verb = "set" +metadata/_custom_type_script = "uid://deg5xd87cy8rg" + +[connection signal="activated" from="HighInteractor/Interactive" to="." method="on_set_high"] +[connection signal="activated" from="MidInteractor/Interactive" to="." method="on_set_mid"] +[connection signal="activated" from="LowInteractor/Interactive" to="." method="on_set_low"] diff --git a/levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd b/levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd new file mode 100644 index 0000000..c008832 --- /dev/null +++ b/levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd @@ -0,0 +1,22 @@ +extends Area3D + +@export var rumble_factor := 0.1 + +@onready var cargo_lift := owner as CargoLift + + +func _process(_delta: float) -> void: + if not has_overlapping_bodies(): + return + + var player := get_overlapping_bodies()[0] as Player + if not player: + return + + player.camera_rumble = rumble_factor * abs(cargo_lift.speed) + + +func _on_body_exited(body: Node3D) -> void: + var player := body as Player + if player: + player.camera_rumble = 0 diff --git a/levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd.uid b/levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd.uid new file mode 100644 index 0000000..68af84e --- /dev/null +++ b/levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd.uid @@ -0,0 +1 @@ +uid://dr4s44i63h1nw diff --git a/src/equipment/mp3_player/mp3_player.gd b/src/equipment/mp3_player/mp3_player.gd index b95e1f9..5e7f800 100644 --- a/src/equipment/mp3_player/mp3_player.gd +++ b/src/equipment/mp3_player/mp3_player.gd @@ -13,11 +13,12 @@ const AMBIENT_BUS_IDX = 3 func _ready() -> void: - World.instance.manager.mp3_collected.connect(_on_mp3_collected) + if World.instance: + World.instance.manager.mp3_collected.connect(_on_mp3_collected) func unlocked() -> bool: - return World.instance.manager.mp3_player_unlocked + return World.instance and World.instance.manager.mp3_player_unlocked func fire() -> void: diff --git a/src/equipment/spray.gd b/src/equipment/spray.gd index 708ff68..03b5593 100644 --- a/src/equipment/spray.gd +++ b/src/equipment/spray.gd @@ -18,7 +18,7 @@ func _spray() -> void: func _fire() -> void: rumbler.intensity = RUMBLE_INTENSITY - if World.instance.manager.is_tank_full(): + if World.instance and World.instance.manager.is_tank_full(): Player.instance.hud.play_tank_full_alert() idle() return diff --git a/src/equipment/sticker_pack/sticker_pack.gd b/src/equipment/sticker_pack/sticker_pack.gd index faa3f1b..7d8f297 100644 --- a/src/equipment/sticker_pack/sticker_pack.gd +++ b/src/equipment/sticker_pack/sticker_pack.gd @@ -39,7 +39,7 @@ func _import_stickers() -> void: func unlocked() -> bool: - return World.instance.manager.stickers_unlocked + return World.instance and World.instance.manager.stickers_unlocked func get_selected_sticker() -> Texture2D: diff --git a/src/equipment/toothbrush/toothbrush.gd b/src/equipment/toothbrush/toothbrush.gd index 84dafac..29fa675 100644 --- a/src/equipment/toothbrush/toothbrush.gd +++ b/src/equipment/toothbrush/toothbrush.gd @@ -12,7 +12,7 @@ const BRUSH_SCALE := 0.2 func unlocked() -> bool: - return World.instance.manager.toothbrush_unlocked + return World.instance and World.instance.manager.toothbrush_unlocked func _fire() -> void: diff --git a/src/player/player.gd b/src/player/player.gd index b44b35e..9e52d64 100644 --- a/src/player/player.gd +++ b/src/player/player.gd @@ -79,7 +79,8 @@ static var instance: Player func _ready() -> void: - World.instance.manager.milestone_reached.connect(_on_milestone) + if World.instance: + World.instance.manager.milestone_reached.connect(_on_milestone) instance = self diff --git a/src/ui/hud/grunk_gauge/grunk_gauge.gd b/src/ui/hud/grunk_gauge/grunk_gauge.gd index c228f3f..300ecda 100644 --- a/src/ui/hud/grunk_gauge/grunk_gauge.gd +++ b/src/ui/hud/grunk_gauge/grunk_gauge.gd @@ -23,18 +23,21 @@ var _base_rumble := 0.0 func _ready() -> void: - World.instance.manager.grunk_collected.connect(on_grunk_collected) - World.instance.manager.grunk_emptied.connect(on_grunk_emptied) + if World.instance: + World.instance.manager.grunk_collected.connect(on_grunk_collected) + World.instance.manager.grunk_emptied.connect(on_grunk_emptied) func get_target_rotation() -> float: - return remap( - World.instance.manager.grunk_tank, - 0, - World.instance.manager.grunk_tank_limit, - NEEDLE_ANGLE_MIN, - NEEDLE_ANGLE_MAX - ) + if World.instance: + return remap( + World.instance.manager.grunk_tank, + 0, + World.instance.manager.grunk_tank_limit, + NEEDLE_ANGLE_MIN, + NEEDLE_ANGLE_MAX + ) + return 0 func on_grunk_collected(_delta: float) -> void: diff --git a/src/ui/hud/player_hud.gd b/src/ui/hud/player_hud.gd index 3e6f33d..372cae5 100644 --- a/src/ui/hud/player_hud.gd +++ b/src/ui/hud/player_hud.gd @@ -9,9 +9,9 @@ class_name PlayerHUD extends Control func _ready() -> void: - World.instance.manager.alert_raised.connect(_on_raise_alert) - World.instance.manager.alert_cleared.connect(_on_clear_alert) - + if World.instance: + World.instance.manager.alert_raised.connect(_on_raise_alert) + World.instance.manager.alert_cleared.connect(_on_clear_alert) func _on_raise_alert(_new_value: int) -> void: diff --git a/src/world/gunkable/gunkable.gd b/src/world/gunkable/gunkable.gd index 8ee635c..b0b2738 100644 --- a/src/world/gunkable/gunkable.gd +++ b/src/world/gunkable/gunkable.gd @@ -260,7 +260,7 @@ func _process(_delta: float) -> void: clear_total_updated.emit(new_total) # Do not fire signal on first compute after initialization # This prevents the player from collecting the grunk from the initial mask. - if _prev_clear_total >= 0: + if _prev_clear_total >= 0 and World.instance: # XXX due to fp error, this will drift from the "true count" over time # but it probably won't matter :shrug: World.instance.manager.collect_grunk(delta) diff --git a/src/world/world.tscn b/src/world/world.tscn index 4d2d566..a67352d 100644 --- a/src/world/world.tscn +++ b/src/world/world.tscn @@ -4,7 +4,7 @@ [ext_resource type="Resource" uid="uid://tgac5tnfx56r" path="res://src/world/world_manager.tres" id="2_5kmgb"] [ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="2_6fy3g"] [ext_resource type="Resource" uid="uid://0i72bf8ip1lx" path="res://src/world/spook_manager.tres" id="3_l0av5"] -[ext_resource type="PackedScene" uid="uid://dc4tts6342cuj" path="res://levels/prop_test/prop_test.tscn" id="4_5kmgb"] +[ext_resource type="PackedScene" uid="uid://bov4ok76woyc" path="res://levels/ghost_ship/ghost_ship.tscn" id="4_5kmgb"] [ext_resource type="PackedScene" uid="uid://c0uitm5cg88h1" path="res://src/ui/menus/kill_screen/kill_screen.tscn" id="6_l0av5"] [ext_resource type="PackedScene" uid="uid://brknr57xc2cp0" path="res://src/ui/elements/save_icon/save_icon.tscn" id="7_5kmgb"]