diff --git a/HANDOFF.md b/HANDOFF.md index 925d786..8f7b6e0 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -40,7 +40,7 @@ TERMINOLOGY (owner-corrected — use precisely): `body_spike` "BODY: …", `collapse_spike` "COLLAPSE: …", `arm_spike` "ARM: overall PASS", `sixdof_spike` "6DOF: overall PASS" (run FIRST with `weld_spike` whenever the addon binary changes), `truebody_spike` "TRUEBODY: overall PASS" (no physics; plain `--headless`), `menu_spike` "MENU: overall PASS" - (in-VR menu input injection, no XR). `ragdoll_spike` "RAGDOLL: overall PASS" (`-- only=a,b` runs the phases whose names contain a or b), `crag_spike` "CRAG: overall PASS" (layout geometry only). Only run the spikes your change touches — the full set takes a while. All nine PASS as of this handoff. + (in-VR menu input injection, no XR). `ragdoll_spike` "RAGDOLL: overall PASS" (`-- only=a,b` runs the phases whose names contain a or b), `crag_spike` "CRAG: overall PASS" (layout geometry of the SAVED crag scene; see Maps below). Only run the spikes your change touches — the full set takes a while. All nine PASS as of this handoff. **Fresh checkout / new worktree: run `godot-mono --headless --import` FIRST** (it may segfault at exit — harmless) — without `.godot/extension_list.cfg` the Box3D extension silently doesn't load, Godot falls back to its default physics and weld/grab/arm/6dof spikes report CHECK. Headless asset import: @@ -111,6 +111,16 @@ TERMINOLOGY (owner-corrected — use precisely): - **Playground.cs** — the body sandbox around the table (east climbing/mantling, west physics toys, south crawl/duck/door); dynamic pieces are "prop"s reset by the menu's Reset props. `tools/playground_shots.tscn` renders overview PNGs (`godot-mono --path . tools/playground_shots.tscn -- `). +- **Maps are EDITOR-BUILT scenes** (`MapScene.cs`): `scenes/maps/playground.tscn` and `scenes/maps/crag.tscn` (roots = + the `[Tool]` scripts Playground / Crag, instanced by main.tscn). The game NEVER regenerates them — it loads what is + saved, so hand edits in the editor stick. Regenerate from code with the map's inspector button "Rebuild (replaces + all children)" (open the map's own scene, then save), or headless for agents: + `godot-mono --headless --path . tools/rebuild_maps.tscn [-- only=playground|crag]` → "MAPS: rebuilt …" / "MAPS: done" + (rebuild REPLACES all children, discarding hand edits). After changing Playground.cs/Crag.cs builders, rebuild, + then run `crag_spike` (it checks the SAVED crag: route = the Marker3D children of its "Route" node, metadata + kind/label; route bodies in group `crag_route`, rock in `crag_mass`). Joint node paths are saved relative + (`../Name`); groups must be added persistent (`AddToGroup(g, true)`) or they aren't saved. `tools/map_dump.tscn` + dumps a layout (type/transform/size/groups) for before/after comparisons. - **AnchorMoveMode.cs** is now SPECTATOR-only (`AnchorMoveMode.Enabled`, menu → Player → Spectator), where the ragdoll is cleared; leaving rebuilds it at the current pose. - **LEGACY (not in main.tscn since step 2; kept for their spikes): PhysicsHands / PhysicsTorso / PhysicsArms / BodyRig.** diff --git a/scenes/main.tscn b/scenes/main.tscn index 25f8679..ef1d8a9 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -10,8 +10,8 @@ [ext_resource type="Script" path="res://scripts/Calibration.cs" id="12_calibration"] [ext_resource type="Script" path="res://scripts/TrueBody.cs" id="13_truebody"] [ext_resource type="Script" path="res://scripts/PlayerRig.cs" id="14_playerrig"] -[ext_resource type="Script" path="res://scripts/Playground.cs" id="15_playground"] -[ext_resource type="Script" path="res://scripts/Crag.cs" id="16_crag"] +[ext_resource type="PackedScene" path="res://scenes/maps/playground.tscn" id="15_playground"] +[ext_resource type="PackedScene" path="res://scenes/maps/crag.tscn" id="16_crag"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_sky"] sky_horizon_color = Color(0.66, 0.72, 0.81, 1) @@ -109,11 +109,9 @@ script = ExtResource("3_locomotion") [node name="AnchorMoveMode" type="Node" parent="."] script = ExtResource("5_anchormove") -[node name="Playground" type="Node3D" parent="."] -script = ExtResource("15_playground") +[node name="Playground" parent="." instance=ExtResource("15_playground")] -[node name="Crag" type="Node3D" parent="."] -script = ExtResource("16_crag") +[node name="Crag" parent="." instance=ExtResource("16_crag")] [node name="PropShop" type="Node3D" parent="."] script = ExtResource("6_propshop") diff --git a/scenes/maps/crag.tscn b/scenes/maps/crag.tscn new file mode 100644 index 0000000..f61b132 --- /dev/null +++ b/scenes/maps/crag.tscn @@ -0,0 +1,4219 @@ +[gd_scene format=3] + +[ext_resource type="Script" path="res://scripts/Crag.cs" id="1"] +[ext_resource type="PackedScene" path="res://scenes/teleport_marker.tscn" id="2_v0m8b"] +[ext_resource type="Script" path="res://scripts/TeleportMarker.cs" id="3_s3tp4"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_v0m8b"] +size = Vector3(12, 8, 7) + +[sub_resource type="BoxMesh" id="BoxMesh_s3tp4"] +size = Vector3(12, 8, 7) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_snry6"] +albedo_color = Color(0.47, 0.43, 0.39, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_wvjpr"] +size = Vector3(10, 8, 5.5) + +[sub_resource type="BoxMesh" id="BoxMesh_dkatq"] +size = Vector3(10, 8, 5.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_05sqj"] +albedo_color = Color(0.54, 0.5, 0.45, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_nie6y"] +size = Vector3(3.55, 10, 4) + +[sub_resource type="BoxMesh" id="BoxMesh_mxl1w"] +size = Vector3(3.55, 10, 4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6sdo5"] +albedo_color = Color(0.41, 0.39, 0.37, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ke651"] +size = Vector3(3.55, 10, 4) + +[sub_resource type="BoxMesh" id="BoxMesh_1she3"] +size = Vector3(3.55, 10, 4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y2vsw"] +albedo_color = Color(0.41, 0.39, 0.37, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_etrwe"] +size = Vector3(0.9, 10, 3) + +[sub_resource type="BoxMesh" id="BoxMesh_51j02"] +size = Vector3(0.9, 10, 3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bctw7"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_kdti7"] +size = Vector3(1.3, 2.6, 1.3) + +[sub_resource type="BoxMesh" id="BoxMesh_6r0dp"] +size = Vector3(1.3, 2.6, 1.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wmiab"] +albedo_color = Color(0.54, 0.5, 0.45, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_cu25r"] +size = Vector3(2.4, 5.5, 5) + +[sub_resource type="BoxMesh" id="BoxMesh_xldex"] +size = Vector3(2.4, 5.5, 5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yp8fi"] +albedo_color = Color(0.41, 0.39, 0.37, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_yceac"] +size = Vector3(2.8, 6.8, 5.5) + +[sub_resource type="BoxMesh" id="BoxMesh_ujv6f"] +size = Vector3(2.8, 6.8, 5.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vt3u8"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_adv4l"] +size = Vector3(1.8, 5.5, 4) + +[sub_resource type="BoxMesh" id="BoxMesh_dkrch"] +size = Vector3(1.8, 5.5, 4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5p7np"] +albedo_color = Color(0.47, 0.43, 0.39, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ja1xx"] +size = Vector3(1.6, 3.6, 3.5) + +[sub_resource type="BoxMesh" id="BoxMesh_q882o"] +size = Vector3(1.6, 3.6, 3.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b2fqv"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_scqj0"] +size = Vector3(1.4, 6, 3) + +[sub_resource type="BoxMesh" id="BoxMesh_dc3ae"] +size = Vector3(1.4, 6, 3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d3444"] +albedo_color = Color(0.47, 0.43, 0.39, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_3qqo7"] +size = Vector3(1.5, 7.5, 3.2) + +[sub_resource type="BoxMesh" id="BoxMesh_2kgfr"] +size = Vector3(1.5, 7.5, 3.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rtu3h"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_0vb6v"] +size = Vector3(9, 6, 1.8) + +[sub_resource type="BoxMesh" id="BoxMesh_fyjjs"] +size = Vector3(9, 6, 1.8) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n3f23"] +albedo_color = Color(0.54, 0.5, 0.45, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_52jvf"] +size = Vector3(6, 5, 1.4) + +[sub_resource type="BoxMesh" id="BoxMesh_6ia0h"] +size = Vector3(6, 5, 1.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7fr13"] +albedo_color = Color(0.41, 0.39, 0.37, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_5plk6"] +size = Vector3(2.2, 4.4, 2.4) + +[sub_resource type="BoxMesh" id="BoxMesh_gy70j"] +size = Vector3(2.2, 4.4, 2.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p538d"] +albedo_color = Color(0.54, 0.5, 0.45, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_jusyc"] +size = Vector3(2, 4.6, 2.2) + +[sub_resource type="BoxMesh" id="BoxMesh_sin4a"] +size = Vector3(2, 4.6, 2.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hjndp"] +albedo_color = Color(0.41, 0.39, 0.37, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_b1yft"] +size = Vector3(1.6, 4, 2) + +[sub_resource type="BoxMesh" id="BoxMesh_rv36h"] +size = Vector3(1.6, 4, 2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hbsm6"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_wy3dh"] +size = Vector3(1.8, 3.6, 2) + +[sub_resource type="BoxMesh" id="BoxMesh_0kq0x"] +size = Vector3(1.8, 3.6, 2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gq5yk"] +albedo_color = Color(0.47, 0.43, 0.39, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_dexoq"] +size = Vector3(1.6, 4.4, 1.8) + +[sub_resource type="BoxMesh" id="BoxMesh_hyqb4"] +size = Vector3(1.6, 4.4, 1.8) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x688n"] +albedo_color = Color(0.54, 0.5, 0.45, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_fkj3y"] +size = Vector3(1.6, 4.8, 1.8) + +[sub_resource type="BoxMesh" id="BoxMesh_bcxa5"] +size = Vector3(1.6, 4.8, 1.8) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_clfb6"] +albedo_color = Color(0.41, 0.39, 0.37, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_fnrqe"] +size = Vector3(2.6, 4.8, 2) + +[sub_resource type="BoxMesh" id="BoxMesh_68e1m"] +size = Vector3(2.6, 4.8, 2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uwydl"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_rcmts"] +size = Vector3(2.3392923, 1.8, 1.6343154) + +[sub_resource type="BoxMesh" id="BoxMesh_bicni"] +size = Vector3(2.3392923, 1.8, 1.6343154) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1dug4"] +albedo_color = Color(0.47, 0.43, 0.39, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_5qwu1"] +size = Vector3(1.4342864, 1.2, 1.0338233) + +[sub_resource type="BoxMesh" id="BoxMesh_qm3bo"] +size = Vector3(1.4342864, 1.2, 1.0338233) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1om8w"] +albedo_color = Color(0.54, 0.5, 0.45, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_0ektu"] +size = Vector3(2.123931, 2.2, 2.050148) + +[sub_resource type="BoxMesh" id="BoxMesh_omyp6"] +size = Vector3(2.123931, 2.2, 2.050148) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cs6jd"] +albedo_color = Color(0.41, 0.39, 0.37, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_csqya"] +size = Vector3(1.2976284, 1.2, 1.0119839) + +[sub_resource type="BoxMesh" id="BoxMesh_x5amg"] +size = Vector3(1.2976284, 1.2, 1.0119839) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sw6ok"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_53mk0"] +size = Vector3(1.5486112, 1.4, 1.4142623) + +[sub_resource type="BoxMesh" id="BoxMesh_54lc8"] +size = Vector3(1.5486112, 1.4, 1.4142623) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uo0ce"] +albedo_color = Color(0.47, 0.43, 0.39, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_uadgr"] +size = Vector3(1.0732067, 0.9, 0.98822856) + +[sub_resource type="BoxMesh" id="BoxMesh_mk4yk"] +size = Vector3(1.0732067, 0.9, 0.98822856) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1jv16"] +albedo_color = Color(0.54, 0.5, 0.45, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_4qk36"] +size = Vector3(2.9093246, 2.4, 2.1430714) + +[sub_resource type="BoxMesh" id="BoxMesh_3rh6d"] +size = Vector3(2.9093246, 2.4, 2.1430714) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lhc5k"] +albedo_color = Color(0.41, 0.39, 0.37, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_kg7t2"] +size = Vector3(1.8994789, 1.6, 1.2860906) + +[sub_resource type="BoxMesh" id="BoxMesh_jctc5"] +size = Vector3(1.8994789, 1.6, 1.2860906) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kxsbe"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_mchke"] +size = Vector3(1.5620435, 1.107265, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_0k3x7"] +size = Vector3(1.5620435, 1.107265, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nq8od"] +albedo_color = Color(0.43270165, 0.39587596, 0.35905027, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_cckmc"] +size = Vector3(1.0823474, 0.95415485, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_v4ekr"] +size = Vector3(1.0823474, 0.95415485, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7ydme"] +albedo_color = Color(0.5044356, 0.46706998, 0.42036298, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_i3pa8"] +size = Vector3(1.0234311, 0.65609723, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_qujyr"] +size = Vector3(1.0234311, 0.65609723, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o3c0s"] +albedo_color = Color(0.38748148, 0.36857995, 0.34967843, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_hbnf1"] +size = Vector3(1.2837061, 0.71495175, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_syrlg"] +size = Vector3(1.2837061, 0.71495175, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7pdsg"] +albedo_color = Color(0.5371599, 0.49085304, 0.4352848, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_37lho"] +size = Vector3(1.1011521, 1.0989277, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_d4uuj"] +size = Vector3(1.1011521, 1.0989277, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lbl05"] +albedo_color = Color(0.44735685, 0.40928394, 0.371211, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_q2b5r"] +size = Vector3(1.5977833, 1.0386808, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_5ysk4"] +size = Vector3(1.5977833, 1.0386808, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tmh5l"] +albedo_color = Color(0.49932128, 0.4623345, 0.41610104, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_wuuha"] +size = Vector3(1.6067414, 1.2243562, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_xbxac"] +size = Vector3(1.6067414, 1.2243562, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1hj5b"] +albedo_color = Color(0.4039981, 0.38429087, 0.36458364, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_rk117"] +size = Vector3(1.770621, 0.7306683, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_7k3r1"] +size = Vector3(1.770621, 0.7306683, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_svshe"] +albedo_color = Color(0.5516279, 0.50407374, 0.44700882, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_x4s4b"] +size = Vector3(1.4279351, 0.98191875, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_ilpnn"] +size = Vector3(1.4279351, 0.98191875, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_03xh5"] +albedo_color = Color(0.44991896, 0.41162798, 0.373337, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ystjr"] +size = Vector3(1.2784119, 0.6139422, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_do7wh"] +size = Vector3(1.2784119, 0.6139422, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u2n3y"] +albedo_color = Color(0.49712792, 0.4603036, 0.41427323, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_cho6p"] +size = Vector3(1.4227586, 0.74075454, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_iyobw"] +size = Vector3(1.4227586, 0.74075454, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w2q4s"] +albedo_color = Color(0.40912297, 0.38916573, 0.36920854, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_3y7yt"] +size = Vector3(1.3615181, 0.68335027, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_4yms4"] +size = Vector3(1.3615181, 0.68335027, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3q5df"] +albedo_color = Color(0.57832795, 0.52847207, 0.46864507, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_22ul5"] +size = Vector3(1.5221107, 0.65008634, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_6c5a6"] +size = Vector3(1.5221107, 0.65008634, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4e1g1"] +albedo_color = Color(0.44900137, 0.4107885, 0.3725756, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_rshqu"] +size = Vector3(1.1919258, 1.3078213, 0.6) + +[sub_resource type="BoxMesh" id="BoxMesh_4jt7m"] +size = Vector3(1.1919258, 1.3078213, 0.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_q86bc"] +albedo_color = Color(0.53414583, 0.49457946, 0.4451215, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_nbkjl"] +size = Vector3(1.4, 1.2, 1.4) + +[sub_resource type="BoxMesh" id="BoxMesh_dnd12"] +size = Vector3(1.4, 1.2, 1.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_87bjv"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_xgr8m"] +size = Vector3(1.4, 2.1, 1.4) + +[sub_resource type="BoxMesh" id="BoxMesh_5xxlf"] +size = Vector3(1.4, 2.1, 1.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4j1dc"] +albedo_color = Color(0.47, 0.43, 0.39, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_uun4j"] +size = Vector3(1.5, 3, 1.6) + +[sub_resource type="BoxMesh" id="BoxMesh_88ayx"] +size = Vector3(1.5, 3, 1.6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r8xf2"] +albedo_color = Color(0.41, 0.39, 0.37, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_tmi2n"] +height = 6.0 +radius = 0.03 + +[sub_resource type="CylinderMesh" id="CylinderMesh_vcc0l"] +top_radius = 0.03 +bottom_radius = 0.03 +height = 6.0 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wljrl"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_i6qn8"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_d5tar"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lrjaj"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_e4wrd"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_4c2ip"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b54b0"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_0xe5i"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_0h58y"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jc3vp"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_sx2us"] +height = 6.0 +radius = 0.03 + +[sub_resource type="CylinderMesh" id="CylinderMesh_lxydr"] +top_radius = 0.03 +bottom_radius = 0.03 +height = 6.0 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bpxa8"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_6gi70"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_qaovb"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jgt08"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_yn1fr"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_6e4kg"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sv0tw"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_sisyp"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_2ohyv"] +size = Vector3(0.04, 0.04, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p8dcb"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_nlm00"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_fxqm5"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2l75p"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_s1pmj"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_if0uh"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tsvk8"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_6tphc"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_plbgp"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rrqcy"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_mmy0h"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_7qho7"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_h1jha"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_ibt8s"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_o0eto"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ocgx2"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_56ch7"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_l313d"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_utm6i"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_iwmuj"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_0frkw"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3wgxy"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_18h8k"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_p86sr"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6kjdx"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_1nwvs"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_xaa4f"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s8u17"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_h0bd4"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_bpu1h"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3cheh"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_bjgaa"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_mwfo1"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_88erh"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_orp6f"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_8bdj4"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2jy26"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_t1of3"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_b25kj"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gp7uy"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_7v3yg"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_1if3w"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aimtc"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_rpi44"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_lbt0k"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1jvko"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_bh47j"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_cwfhf"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7r4re"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_kokst"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_cusx3"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jkxvm"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_y0qv5"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_kfqmb"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_frajp"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_w8e8q"] +height = 0.53999996 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_ddxnn"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.53999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1jdbt"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_4ra8l"] +height = 2.3999996 +radius = 0.03 + +[sub_resource type="CylinderMesh" id="CylinderMesh_ttkoj"] +top_radius = 0.03 +bottom_radius = 0.03 +height = 2.3999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_un8bp"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_4rdo5"] +size = Vector3(0.02, 0.45, 0.7) + +[sub_resource type="BoxMesh" id="BoxMesh_48c5m"] +size = Vector3(0.02, 0.45, 0.7) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_db6w3"] +albedo_color = Color(0.85, 0.15, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_pavee"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_ri73e"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hrpi4"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_7gc4j"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_ur1xe"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wk5ts"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_1u8m5"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_yexbb"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uvrpx"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_j17wu"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_bpw1o"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cxxfx"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_o11g4"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_tnuip"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_t1be7"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ouko4"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_45arp"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_slxo5"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_3dlty"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_0celr"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cwge6"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_qihns"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_0o3cn"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s7n22"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_56kv5"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_ikhtq"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ltha6"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ltv6h"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_18xvr"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s61py"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_evtfc"] +size = Vector3(8.2, 0.12, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_if64h"] +size = Vector3(8.2, 0.12, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6y2hv"] +albedo_color = Color(0.58, 0.53, 0.47, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_0l0gp"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_7gbnl"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4rgqe"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_s8j8s"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_ar6rv"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_h60k6"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_y1jqa"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_78set"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qqux8"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_mdeb7"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_52pch"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ww4pb"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_klewb"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_yqjnx"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3ad1a"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_dgqrv"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_24mk4"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4o7go"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_4xx6y"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_n0mee"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ecsmt"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_7h026"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_8ofk5"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_l0lhm"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_bwmb8"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_bh5f1"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u3ojd"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_grkoj"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_awgsr"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2klpk"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_l7phy"] +size = Vector3(3, 0.6, 1.5) + +[sub_resource type="BoxMesh" id="BoxMesh_uyyuj"] +size = Vector3(3, 0.6, 1.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x8aek"] +albedo_color = Color(0.47, 0.43, 0.39, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_yitds"] +height = 2.6000001 +radius = 0.025 + +[sub_resource type="CylinderMesh" id="CylinderMesh_dk1wv"] +top_radius = 0.025 +bottom_radius = 0.025 +height = 2.6000001 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ppaw7"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_lkxds"] +height = 0.17500019 +radius = 0.015 + +[sub_resource type="CylinderMesh" id="CylinderMesh_bxxsu"] +top_radius = 0.015 +bottom_radius = 0.015 +height = 0.17500019 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kuk8x"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_x2v57"] +height = 0.17500019 +radius = 0.015 + +[sub_resource type="CylinderMesh" id="CylinderMesh_j4r6f"] +top_radius = 0.015 +bottom_radius = 0.015 +height = 0.17500019 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7moyc"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_y2qxs"] +height = 2.6000001 +radius = 0.025 + +[sub_resource type="CylinderMesh" id="CylinderMesh_4df0i"] +top_radius = 0.025 +bottom_radius = 0.025 +height = 2.6000001 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qowlk"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_5lnmf"] +height = 0.17500019 +radius = 0.015 + +[sub_resource type="CylinderMesh" id="CylinderMesh_co83d"] +top_radius = 0.015 +bottom_radius = 0.015 +height = 0.17500019 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v7bvj"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_v6d1s"] +height = 0.17500019 +radius = 0.015 + +[sub_resource type="CylinderMesh" id="CylinderMesh_jcwje"] +top_radius = 0.015 +bottom_radius = 0.015 +height = 0.17500019 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n4kl1"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_jwmqq"] +height = 2.6000001 +radius = 0.025 + +[sub_resource type="CylinderMesh" id="CylinderMesh_can5r"] +top_radius = 0.025 +bottom_radius = 0.025 +height = 2.6000001 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rvmul"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_wmmro"] +height = 0.17500019 +radius = 0.015 + +[sub_resource type="CylinderMesh" id="CylinderMesh_epe4p"] +top_radius = 0.015 +bottom_radius = 0.015 +height = 0.17500019 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4vgr2"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_rxpqe"] +height = 0.17500019 +radius = 0.015 + +[sub_resource type="CylinderMesh" id="CylinderMesh_pb5ff"] +top_radius = 0.015 +bottom_radius = 0.015 +height = 0.17500019 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nmg08"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_lvrxu"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="BoxMesh" id="BoxMesh_d4v0o"] +size = Vector3(0.3, 0.08, 0.12) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i45tp"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_mnhej"] +height = 2.6000001 +radius = 0.03 + +[sub_resource type="CylinderMesh" id="CylinderMesh_tfijq"] +top_radius = 0.03 +bottom_radius = 0.03 +height = 2.6000001 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xdco5"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_mtk38"] +height = 2.3999996 +radius = 0.03 + +[sub_resource type="CylinderMesh" id="CylinderMesh_aidgg"] +top_radius = 0.03 +bottom_radius = 0.03 +height = 2.3999996 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_he3wn"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_qb6fu"] +size = Vector3(0.02, 0.45, 0.7) + +[sub_resource type="BoxMesh" id="BoxMesh_cs7ax"] +size = Vector3(0.02, 0.45, 0.7) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ukfby"] +albedo_color = Color(0.85, 0.15, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_mmli7"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_2y0hp"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3d1l5"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_b8pa8"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_jnli2"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k4jqh"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_0nr71"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_g274r"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o8ywk"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_hvvw1"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_mr4xe"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w38s8"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_e43uw"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_auv0w"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2488n"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_wqnn4"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_16meo"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d771p"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_h6ptw"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_4w661"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_syics"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_s035j"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_5q3vp"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bstld"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_1wtn2"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_w0y04"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rkbjq"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_idpor"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_a1qte"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u5v7o"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_hoqil"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_qwv7c"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1at23"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_t1fjj"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_whitw"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_q2f63"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_g5u3u"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_ie35i"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_csv88"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_islyj"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_dcb7d"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0iy7a"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_dermq"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_l0hwr"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pum65"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_2qnh6"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_bjrgp"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7h0ew"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_83tcd"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_e1e2f"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bkcg2"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_xm7q3"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_whfon"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sbdvc"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_aqayh"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_ga2mi"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_itf5h"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_w1mrc"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_clgjp"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ine53"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_hj3gq"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_asqd4"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nyxvq"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_fp6bx"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_6diat"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_plo15"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_k4qn0"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_jkm0q"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_roxhh"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_odd27"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_la7oa"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_se51u"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_6wc80"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_fbdvl"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_atyg4"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_eipaw"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_6sy27"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_024ly"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_3oy37"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_cnn6b"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_13dpv"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_wmt5p"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_ne5y3"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7i8c5"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_uyof5"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_ybn7o"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jy4nf"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_2tatq"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_tivb0"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fvrgo"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_rqc2s"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_0fl00"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6o4bt"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_bsuq8"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_el71b"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dahde"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_5wvht"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_ud68b"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3vo2d"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_qhvrd"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_0gpv5"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cd373"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_imp1f"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_7mf3n"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5miq5"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_2qnwn"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_ojqp6"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_06m0l"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_3fe6q"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_rcmyd"] +size = Vector3(0.12, 0.08, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r17t6"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_qwxso"] +height = 3.6000001 +radius = 0.18 + +[sub_resource type="CylinderMesh" id="CylinderMesh_ugobg"] +top_radius = 0.18 +bottom_radius = 0.18 +height = 3.6000001 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_140bl"] +albedo_color = Color(0.35, 0.25, 0.17, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_8ab1d"] +size = Vector3(2.2, 3, 2.2) + +[sub_resource type="BoxMesh" id="BoxMesh_2wr4d"] +size = Vector3(2.2, 3, 2.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ncsok"] +albedo_color = Color(0.25, 0.45, 0.22, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_f8dqw"] +height = 4.2000003 +radius = 0.18 + +[sub_resource type="CylinderMesh" id="CylinderMesh_bo7gm"] +top_radius = 0.18 +bottom_radius = 0.18 +height = 4.2000003 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3dqwx"] +albedo_color = Color(0.35, 0.25, 0.17, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_a56d3"] +size = Vector3(2.2, 3.5, 2.2) + +[sub_resource type="BoxMesh" id="BoxMesh_pnjao"] +size = Vector3(2.2, 3.5, 2.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qjpjn"] +albedo_color = Color(0.25, 0.45, 0.22, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_c37dw"] +height = 3.3000002 +radius = 0.18 + +[sub_resource type="CylinderMesh" id="CylinderMesh_kxpiu"] +top_radius = 0.18 +bottom_radius = 0.18 +height = 3.3000002 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_62j5g"] +albedo_color = Color(0.35, 0.25, 0.17, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_st8ea"] +size = Vector3(2.2, 2.75, 2.2) + +[sub_resource type="BoxMesh" id="BoxMesh_3ponm"] +size = Vector3(2.2, 2.75, 2.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vq46m"] +albedo_color = Color(0.25, 0.45, 0.22, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_fv3e7"] +height = 3.9 +radius = 0.18 + +[sub_resource type="CylinderMesh" id="CylinderMesh_wa46t"] +top_radius = 0.18 +bottom_radius = 0.18 +height = 3.9 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nyum8"] +albedo_color = Color(0.35, 0.25, 0.17, 1) +roughness = 0.9 + +[sub_resource type="BoxShape3D" id="BoxShape3D_xev1y"] +size = Vector3(2.2, 3.25, 2.2) + +[sub_resource type="BoxMesh" id="BoxMesh_26gui"] +size = Vector3(2.2, 3.25, 2.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2hyrf"] +albedo_color = Color(0.25, 0.45, 0.22, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_hayo6"] +height = 9.0 +radius = 0.35 + +[sub_resource type="CylinderMesh" id="CylinderMesh_f3vti"] +top_radius = 0.35 +bottom_radius = 0.35 +height = 9.0 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_45bj4"] +albedo_color = Color(0.7, 0.7, 0.68, 1) +roughness = 0.9 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_im5ar"] +height = 12.0 +radius = 0.35 + +[sub_resource type="CylinderMesh" id="CylinderMesh_o6nli"] +top_radius = 0.35 +bottom_radius = 0.35 +height = 12.0 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_h84kv"] +albedo_color = Color(0.7, 0.7, 0.68, 1) +roughness = 0.9 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_h2t7n"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_hk37o"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_bjf5g"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wjv5s"] +albedo_color = Color(0.72, 0.55, 0.33, 1) +roughness = 0.9 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_5pbfj"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_cf25r"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_t7ctr"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lcsba"] +albedo_color = Color(0.684, 0.5225, 0.31350002, 1) +roughness = 0.9 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_urj8c"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_8ywpv"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_4p830"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8t4uu"] +albedo_color = Color(0.648, 0.495, 0.297, 1) +roughness = 0.9 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_84p2p"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_w7l24"] +height = 0.85 +radius = 0.28 + +[sub_resource type="CylinderMesh" id="CylinderMesh_vi2b5"] +top_radius = 0.28 +bottom_radius = 0.28 +height = 0.85 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d4e40"] +albedo_color = Color(0.68, 0.120000005, 0.120000005, 1) +roughness = 0.9 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_te4hh"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="SphereShape3D" id="SphereShape3D_4otvp"] +radius = 0.15 + +[sub_resource type="SphereMesh" id="SphereMesh_yponk"] +radius = 0.15 +height = 0.3 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f5h4v"] +albedo_color = Color(0.95, 0.85, 0.2, 1) +roughness = 0.9 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_ficvs"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_30sv5"] +size = Vector3(2, 0.04, 0.2) + +[sub_resource type="BoxMesh" id="BoxMesh_vev5g"] +size = Vector3(2, 0.04, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_th4vx"] +albedo_color = Color(0.72, 0.55, 0.33, 1) +roughness = 0.9 + +[node name="Crag" type="Node3D" unique_id=1491658016] +script = ExtResource("1") + +[node name="Route" type="Node3D" parent="." unique_id=1779598515] + +[node name="Stand" type="Marker3D" parent="Route" unique_id=636192716] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.6, 0, -8.2) +metadata/kind = 0 +metadata/label = "start" + +[node name="Stand2" type="Marker3D" parent="Route" unique_id=1253536579] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.6, 1.2, -9.1) +metadata/kind = 0 +metadata/label = "boulder 1 (mantle 1.2 m)" + +[node name="Stand3" type="Marker3D" parent="Route" unique_id=1565377582] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 1.2, -10.1) +metadata/kind = 0 +metadata/label = "boulder 1 far edge" + +[node name="Stand4" type="Marker3D" parent="Route" unique_id=39025557] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 2.1, -10.7) +metadata/kind = 0 +metadata/label = "boulder 2 (mantle 0.9 m)" + +[node name="Stand5" type="Marker3D" parent="Route" unique_id=1070571366] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.1, 2.1, -11.4) +metadata/kind = 0 +metadata/label = "boulder 2 far edge" + +[node name="Stand6" type="Marker3D" parent="Route" unique_id=616884680] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.3, 3, -11.8) +metadata/kind = 0 +metadata/label = "boulder 3 (hop 0.45 m gap, mantle 0.9 m)" + +[node name="Stand7" type="Marker3D" parent="Route" unique_id=1966304445] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 3, -12.5) +metadata/kind = 0 +metadata/label = "foot of the ladder" + +[node name="Hold" type="Marker3D" parent="Route" unique_id=1268290803] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 3.342, -12.85) +metadata/kind = 1 +metadata/label = "rung 3.3 m" + +[node name="Hold2" type="Marker3D" parent="Route" unique_id=295705549] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 3.642, -12.85) +metadata/kind = 1 +metadata/label = "rung 3.6 m" + +[node name="Hold3" type="Marker3D" parent="Route" unique_id=946587967] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 3.942, -12.85) +metadata/kind = 1 +metadata/label = "rung 3.9 m" + +[node name="Hold4" type="Marker3D" parent="Route" unique_id=1928418039] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 4.2419996, -12.85) +metadata/kind = 1 +metadata/label = "rung 4.2 m" + +[node name="Hold5" type="Marker3D" parent="Route" unique_id=1513233660] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 4.542, -12.85) +metadata/kind = 1 +metadata/label = "rung 4.5 m" + +[node name="Hold6" type="Marker3D" parent="Route" unique_id=82383240] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 4.842, -12.85) +metadata/kind = 1 +metadata/label = "rung 4.8 m" + +[node name="Hold7" type="Marker3D" parent="Route" unique_id=1599560499] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 5.142, -12.85) +metadata/kind = 1 +metadata/label = "rung 5.1 m" + +[node name="Hold8" type="Marker3D" parent="Route" unique_id=1542486780] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 5.4420004, -12.85) +metadata/kind = 1 +metadata/label = "rung 5.4 m" + +[node name="Hold9" type="Marker3D" parent="Route" unique_id=826558566] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 5.7420006, -12.85) +metadata/kind = 1 +metadata/label = "rung 5.7 m" + +[node name="Hold10" type="Marker3D" parent="Route" unique_id=1350370015] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 6.042001, -12.85) +metadata/kind = 1 +metadata/label = "rung 6.0 m" + +[node name="Hold11" type="Marker3D" parent="Route" unique_id=753805773] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 6.342001, -12.85) +metadata/kind = 1 +metadata/label = "rung 6.3 m" + +[node name="Hold12" type="Marker3D" parent="Route" unique_id=1745322659] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 6.642001, -12.85) +metadata/kind = 1 +metadata/label = "rung 6.6 m" + +[node name="Hold13" type="Marker3D" parent="Route" unique_id=1202617895] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 6.9420013, -12.85) +metadata/kind = 1 +metadata/label = "rung 6.9 m" + +[node name="Hold14" type="Marker3D" parent="Route" unique_id=886861682] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 7.2420015, -12.85) +metadata/kind = 1 +metadata/label = "rung 7.2 m" + +[node name="Hold15" type="Marker3D" parent="Route" unique_id=1425178024] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 7.5420017, -12.85) +metadata/kind = 1 +metadata/label = "rung 7.5 m" + +[node name="Hold16" type="Marker3D" parent="Route" unique_id=1342421031] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 7.842002, -12.85) +metadata/kind = 1 +metadata/label = "rung 7.8 m" + +[node name="Hold17" type="Marker3D" parent="Route" unique_id=1428146098] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 8.142003, -12.85) +metadata/kind = 1 +metadata/label = "rung 8.1 m" + +[node name="Hold18" type="Marker3D" parent="Route" unique_id=2104239715] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 8.442003, -12.85) +metadata/kind = 1 +metadata/label = "rung 8.4 m" + +[node name="Hold19" type="Marker3D" parent="Route" unique_id=79783539] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 8.742003, -12.85) +metadata/kind = 1 +metadata/label = "rung 8.7 m" + +[node name="Stand8" type="Marker3D" parent="Route" unique_id=287503759] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 8, -13.4) +metadata/kind = 0 +metadata/label = "REST LEDGE 1 (8 m)" + +[node name="Stand9" type="Marker3D" parent="Route" unique_id=531743178] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 8, -14.1) +metadata/kind = 0 +metadata/label = "foot of the jug wall" + +[node name="Hold20" type="Marker3D" parent="Route" unique_id=1299611438] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 9.06, -14.419999) +metadata/kind = 1 +metadata/label = "jug 9.00 m" + +[node name="Hold21" type="Marker3D" parent="Route" unique_id=804766794] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 9.51, -14.419999) +metadata/kind = 1 +metadata/label = "jug 9.45 m" + +[node name="Hold22" type="Marker3D" parent="Route" unique_id=1190112186] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 9.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 9.90 m" + +[node name="Hold23" type="Marker3D" parent="Route" unique_id=264604953] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 10.41, -14.419999) +metadata/kind = 1 +metadata/label = "jug 10.35 m" + +[node name="Hold24" type="Marker3D" parent="Route" unique_id=1975319667] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 10.86, -14.419999) +metadata/kind = 1 +metadata/label = "jug 10.80 m" + +[node name="Hold25" type="Marker3D" parent="Route" unique_id=1159901420] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 11.309999, -14.419999) +metadata/kind = 1 +metadata/label = "jug 11.25 m" + +[node name="Hold26" type="Marker3D" parent="Route" unique_id=1072027502] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 11.759999, -14.419999) +metadata/kind = 1 +metadata/label = "jug 11.70 m" + +[node name="Hold27" type="Marker3D" parent="Route" unique_id=1893685881] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 12.209999, -14.419999) +metadata/kind = 1 +metadata/label = "jug 12.15 m" + +[node name="Hold28" type="Marker3D" parent="Route" unique_id=958008438] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 12.659999, -14.419999) +metadata/kind = 1 +metadata/label = "jug 12.60 m" + +[node name="Hold29" type="Marker3D" parent="Route" unique_id=1564789361] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 13.109999, -14.419999) +metadata/kind = 1 +metadata/label = "jug 13.05 m" + +[node name="Hold30" type="Marker3D" parent="Route" unique_id=15386250] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 13.52, -14.08) +metadata/kind = 1 +metadata/label = "traverse ledge lip" + +[node name="Stand10" type="Marker3D" parent="Route" unique_id=1073168173] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 13.5, -14.3) +metadata/kind = 0 +metadata/label = "traverse ledge (0.4 m wide, 13.5 m)" + +[node name="Hold31" type="Marker3D" parent="Route" unique_id=1814623322] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Hold32" type="Marker3D" parent="Route" unique_id=9127911] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.8000001, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Hold33" type="Marker3D" parent="Route" unique_id=189899689] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Hold34" type="Marker3D" parent="Route" unique_id=558508042] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.6, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Hold35" type="Marker3D" parent="Route" unique_id=1196944275] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Hold36" type="Marker3D" parent="Route" unique_id=432866292] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Hold37" type="Marker3D" parent="Route" unique_id=148908764] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Hold38" type="Marker3D" parent="Route" unique_id=1569286518] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8000001, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Hold39" type="Marker3D" parent="Route" unique_id=2083266937] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.4, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Hold40" type="Marker3D" parent="Route" unique_id=279651171] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 14.96, -14.419999) +metadata/kind = 1 +metadata/label = "jug 14.90 m" + +[node name="Stand11" type="Marker3D" parent="Route" unique_id=460637150] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 13.5, -14.3) +metadata/kind = 0 +metadata/label = "under the overhang" + +[node name="Hold41" type="Marker3D" parent="Route" unique_id=1460484063] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 15.155, -14.2) +metadata/kind = 1 +metadata/label = "roof bar z -14.2" + +[node name="Hold42" type="Marker3D" parent="Route" unique_id=316334699] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 15.155, -13.7) +metadata/kind = 1 +metadata/label = "roof bar z -13.7" + +[node name="Hold43" type="Marker3D" parent="Route" unique_id=719133492] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 15.155, -13.2) +metadata/kind = 1 +metadata/label = "roof bar z -13.2" + +[node name="Hold44" type="Marker3D" parent="Route" unique_id=220805014] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 15.71, -12.919999) +metadata/kind = 1 +metadata/label = "jug 15.65 m" + +[node name="Hold45" type="Marker3D" parent="Route" unique_id=54981006] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 16.08, -13.05) +metadata/kind = 1 +metadata/label = "lip bar" + +[node name="Stand12" type="Marker3D" parent="Route" unique_id=1078452155] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 16, -13.6) +metadata/kind = 0 +metadata/label = "REST LEDGE 2 (16 m)" + +[node name="Stand13" type="Marker3D" parent="Route" unique_id=1081057634] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16, -15.6) +metadata/kind = 0 +metadata/label = "mouth of the chimney" + +[node name="Hold46" type="Marker3D" parent="Route" unique_id=2112822871] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 16.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 16.70 m" + +[node name="Hold47" type="Marker3D" parent="Route" unique_id=1602994054] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 17.01, -16.5) +metadata/kind = 1 +metadata/label = "jug 16.95 m" + +[node name="Hold48" type="Marker3D" parent="Route" unique_id=910953512] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 17.26, -16.5) +metadata/kind = 1 +metadata/label = "jug 17.20 m" + +[node name="Hold49" type="Marker3D" parent="Route" unique_id=1046074029] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 17.51, -16.5) +metadata/kind = 1 +metadata/label = "jug 17.45 m" + +[node name="Hold50" type="Marker3D" parent="Route" unique_id=256962323] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 17.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 17.70 m" + +[node name="Hold51" type="Marker3D" parent="Route" unique_id=1171814020] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 18.01, -16.5) +metadata/kind = 1 +metadata/label = "jug 17.95 m" + +[node name="Hold52" type="Marker3D" parent="Route" unique_id=1170640585] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 18.26, -16.5) +metadata/kind = 1 +metadata/label = "jug 18.20 m" + +[node name="Hold53" type="Marker3D" parent="Route" unique_id=1538938605] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 18.51, -16.5) +metadata/kind = 1 +metadata/label = "jug 18.45 m" + +[node name="Hold54" type="Marker3D" parent="Route" unique_id=1931546680] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 18.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 18.70 m" + +[node name="Hold55" type="Marker3D" parent="Route" unique_id=826029156] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 19.01, -16.5) +metadata/kind = 1 +metadata/label = "jug 18.95 m" + +[node name="Hold56" type="Marker3D" parent="Route" unique_id=1628838800] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 19.26, -16.5) +metadata/kind = 1 +metadata/label = "jug 19.20 m" + +[node name="Hold57" type="Marker3D" parent="Route" unique_id=1502188960] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 19.51, -16.5) +metadata/kind = 1 +metadata/label = "jug 19.45 m" + +[node name="Hold58" type="Marker3D" parent="Route" unique_id=814891649] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 19.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 19.70 m" + +[node name="Hold59" type="Marker3D" parent="Route" unique_id=468647416] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 20.01, -16.5) +metadata/kind = 1 +metadata/label = "jug 19.95 m" + +[node name="Hold60" type="Marker3D" parent="Route" unique_id=1005142572] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 20.26, -16.5) +metadata/kind = 1 +metadata/label = "jug 20.20 m" + +[node name="Hold61" type="Marker3D" parent="Route" unique_id=1304452689] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 20.51, -16.5) +metadata/kind = 1 +metadata/label = "jug 20.45 m" + +[node name="Hold62" type="Marker3D" parent="Route" unique_id=1060838214] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 20.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 20.70 m" + +[node name="Hold63" type="Marker3D" parent="Route" unique_id=808402301] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 21.01, -16.5) +metadata/kind = 1 +metadata/label = "jug 20.95 m" + +[node name="Hold64" type="Marker3D" parent="Route" unique_id=653546833] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 21.26, -16.5) +metadata/kind = 1 +metadata/label = "jug 21.20 m" + +[node name="Hold65" type="Marker3D" parent="Route" unique_id=1733692552] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 21.51, -16.5) +metadata/kind = 1 +metadata/label = "jug 21.45 m" + +[node name="Hold66" type="Marker3D" parent="Route" unique_id=659979255] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 21.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 21.70 m" + +[node name="Hold67" type="Marker3D" parent="Route" unique_id=864923764] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 22.01, -16.5) +metadata/kind = 1 +metadata/label = "jug 21.95 m" + +[node name="Hold68" type="Marker3D" parent="Route" unique_id=1591967116] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 22.26, -16.5) +metadata/kind = 1 +metadata/label = "jug 22.20 m" + +[node name="Hold69" type="Marker3D" parent="Route" unique_id=904936347] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 22.51, -16.5) +metadata/kind = 1 +metadata/label = "jug 22.45 m" + +[node name="Hold70" type="Marker3D" parent="Route" unique_id=1714758249] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 22.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 22.70 m" + +[node name="Hold71" type="Marker3D" parent="Route" unique_id=194816948] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 23.01, -16.5) +metadata/kind = 1 +metadata/label = "jug 22.95 m" + +[node name="Hold72" type="Marker3D" parent="Route" unique_id=1975807743] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 23.26, -16.5) +metadata/kind = 1 +metadata/label = "jug 23.20 m" + +[node name="Hold73" type="Marker3D" parent="Route" unique_id=26914489] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 23.51, -16.5) +metadata/kind = 1 +metadata/label = "jug 23.45 m" + +[node name="Hold74" type="Marker3D" parent="Route" unique_id=1014110725] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 23.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 23.70 m" + +[node name="Hold75" type="Marker3D" parent="Route" unique_id=332130426] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 24.01, -16.5) +metadata/kind = 1 +metadata/label = "jug 23.95 m" + +[node name="Hold76" type="Marker3D" parent="Route" unique_id=1179179846] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 24.26, -16.5) +metadata/kind = 1 +metadata/label = "jug 24.20 m" + +[node name="Hold77" type="Marker3D" parent="Route" unique_id=2102276616] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 24.51, -16.5) +metadata/kind = 1 +metadata/label = "jug 24.45 m" + +[node name="Hold78" type="Marker3D" parent="Route" unique_id=1548946833] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 24.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 24.70 m" + +[node name="Hold79" type="Marker3D" parent="Route" unique_id=1855588301] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 25.01, -16.5) +metadata/kind = 1 +metadata/label = "jug 24.95 m" + +[node name="Hold80" type="Marker3D" parent="Route" unique_id=928327403] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 25.26, -16.5) +metadata/kind = 1 +metadata/label = "jug 25.20 m" + +[node name="Hold81" type="Marker3D" parent="Route" unique_id=632493542] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.36999997, 25.51, -16.5) +metadata/kind = 1 +metadata/label = "jug 25.45 m" + +[node name="Hold82" type="Marker3D" parent="Route" unique_id=2108315111] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36999997, 25.76, -16.5) +metadata/kind = 1 +metadata/label = "jug 25.70 m" + +[node name="Hold83" type="Marker3D" parent="Route" unique_id=1913459035] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.47, 26.02, -16.4) +metadata/kind = 1 +metadata/label = "chimney exit lip" + +[node name="Stand14" type="Marker3D" parent="Route" unique_id=943331316] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 26, -16.6) +metadata/kind = 0 +metadata/label = "SUMMIT (26 m)" + +[node name="TierA" type="StaticBody3D" parent="." unique_id=36742903 groups=["crag_mass"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@182" type="CollisionShape3D" parent="TierA" unique_id=730224855] +shape = SubResource("BoxShape3D_v0m8b") + +[node name="@MeshInstance3D@183" type="MeshInstance3D" parent="TierA" unique_id=638132447] +mesh = SubResource("BoxMesh_s3tp4") +surface_material_override/0 = SubResource("StandardMaterial3D_snry6") + +[node name="TierB" type="StaticBody3D" parent="." unique_id=1317996047 groups=["crag_mass"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 12, -17.25) +collision_mask = 29 + +[node name="@CollisionShape3D@184" type="CollisionShape3D" parent="TierB" unique_id=966456629] +shape = SubResource("BoxShape3D_wvjpr") + +[node name="@MeshInstance3D@185" type="MeshInstance3D" parent="TierB" unique_id=874167381] +mesh = SubResource("BoxMesh_dkatq") +surface_material_override/0 = SubResource("StandardMaterial3D_05sqj") + +[node name="TierCWest" type="StaticBody3D" parent="." unique_id=638565644 groups=["crag_mass"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.225, 21, -18) +collision_mask = 29 + +[node name="@CollisionShape3D@186" type="CollisionShape3D" parent="TierCWest" unique_id=663940280] +shape = SubResource("BoxShape3D_nie6y") + +[node name="@MeshInstance3D@187" type="MeshInstance3D" parent="TierCWest" unique_id=1041199093] +mesh = SubResource("BoxMesh_mxl1w") +surface_material_override/0 = SubResource("StandardMaterial3D_6sdo5") + +[node name="TierCEast" type="StaticBody3D" parent="." unique_id=825437963 groups=["crag_mass"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.225, 21, -18) +collision_mask = 29 + +[node name="@CollisionShape3D@188" type="CollisionShape3D" parent="TierCEast" unique_id=1885096102] +shape = SubResource("BoxShape3D_ke651") + +[node name="@MeshInstance3D@189" type="MeshInstance3D" parent="TierCEast" unique_id=1815110677] +mesh = SubResource("BoxMesh_1she3") +surface_material_override/0 = SubResource("StandardMaterial3D_y2vsw") + +[node name="TierCBack" type="StaticBody3D" parent="." unique_id=669054757 groups=["crag_mass"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 21, -18.5) +collision_mask = 29 + +[node name="@CollisionShape3D@190" type="CollisionShape3D" parent="TierCBack" unique_id=1734173900] +shape = SubResource("BoxShape3D_etrwe") + +[node name="@MeshInstance3D@191" type="MeshInstance3D" parent="TierCBack" unique_id=1186531767] +mesh = SubResource("BoxMesh_51j02") +surface_material_override/0 = SubResource("StandardMaterial3D_bctw7") + +[node name="Spire" type="StaticBody3D" parent="." unique_id=2037470328 groups=["crag_mass"]] +transform = Transform3D(0.9553365, 0, 0.29552022, 0, 1, 0, -0.29552022, 0, 0.9553365, 3.1, 27.3, -19.1) +collision_mask = 29 + +[node name="@CollisionShape3D@192" type="CollisionShape3D" parent="Spire" unique_id=588913324] +shape = SubResource("BoxShape3D_kdti7") + +[node name="@MeshInstance3D@193" type="MeshInstance3D" parent="Spire" unique_id=2001341945] +mesh = SubResource("BoxMesh_6r0dp") +surface_material_override/0 = SubResource("StandardMaterial3D_wmiab") + +[node name="ShoulderWestA" type="StaticBody3D" parent="." unique_id=733310620 groups=["crag_mass"]] +transform = Transform3D(0.99280864, 0, 0.119712204, 0, 1, 0, -0.119712204, 0, 0.99280864, -7, 2.75, -16.8) +collision_mask = 29 + +[node name="@CollisionShape3D@194" type="CollisionShape3D" parent="ShoulderWestA" unique_id=403309424] +shape = SubResource("BoxShape3D_cu25r") + +[node name="@MeshInstance3D@195" type="MeshInstance3D" parent="ShoulderWestA" unique_id=768643162] +mesh = SubResource("BoxMesh_xldex") +surface_material_override/0 = SubResource("StandardMaterial3D_yp8fi") + +[node name="ShoulderEastA" type="StaticBody3D" parent="." unique_id=366544186 groups=["crag_mass"]] +transform = Transform3D(0.9887711, 0, -0.14943814, 0, 1, 0, 0.14943814, 0, 0.9887711, 7.1, 3.4, -16.2) +collision_mask = 29 + +[node name="@CollisionShape3D@196" type="CollisionShape3D" parent="ShoulderEastA" unique_id=1987736446] +shape = SubResource("BoxShape3D_yceac") + +[node name="@MeshInstance3D@197" type="MeshInstance3D" parent="ShoulderEastA" unique_id=332372520] +mesh = SubResource("BoxMesh_ujv6f") +surface_material_override/0 = SubResource("StandardMaterial3D_vt3u8") + +[node name="ShoulderEastB" type="StaticBody3D" parent="." unique_id=1069925188 groups=["crag_mass"]] +transform = Transform3D(0.9950042, 0, 0.09983342, 0, 1, 0, -0.09983342, 0, 0.9950042, 5.6, 10.75, -17.8) +collision_mask = 29 + +[node name="@CollisionShape3D@198" type="CollisionShape3D" parent="ShoulderEastB" unique_id=271319011] +shape = SubResource("BoxShape3D_adv4l") + +[node name="@MeshInstance3D@199" type="MeshInstance3D" parent="ShoulderEastB" unique_id=453375539] +mesh = SubResource("BoxMesh_dkrch") +surface_material_override/0 = SubResource("StandardMaterial3D_5p7np") + +[node name="ShoulderWestB" type="StaticBody3D" parent="." unique_id=512203856 groups=["crag_mass"]] +transform = Transform3D(0.9800666, 0, -0.19866933, 0, 1, 0, 0.19866933, 0, 0.9800666, -5.5, 9.8, -18) +collision_mask = 29 + +[node name="@CollisionShape3D@200" type="CollisionShape3D" parent="ShoulderWestB" unique_id=773461190] +shape = SubResource("BoxShape3D_ja1xx") + +[node name="@MeshInstance3D@201" type="MeshInstance3D" parent="ShoulderWestB" unique_id=1732045362] +mesh = SubResource("BoxMesh_q882o") +surface_material_override/0 = SubResource("StandardMaterial3D_b2fqv") + +[node name="ShoulderWestC" type="StaticBody3D" parent="." unique_id=1444412273 groups=["crag_mass"]] +transform = Transform3D(0.9838437, 0, 0.17902958, 0, 1, 0, -0.17902958, 0, 0.9838437, -4.3, 19, -18.6) +collision_mask = 29 + +[node name="@CollisionShape3D@202" type="CollisionShape3D" parent="ShoulderWestC" unique_id=932334349] +shape = SubResource("BoxShape3D_scqj0") + +[node name="@MeshInstance3D@203" type="MeshInstance3D" parent="ShoulderWestC" unique_id=1383951432] +mesh = SubResource("BoxMesh_dc3ae") +surface_material_override/0 = SubResource("StandardMaterial3D_d3444") + +[node name="ShoulderEastC" type="StaticBody3D" parent="." unique_id=869588220 groups=["crag_mass"]] +transform = Transform3D(0.99280864, 0, -0.119712204, 0, 1, 0, 0.119712204, 0, 0.99280864, 4.4, 19.75, -18.4) +collision_mask = 29 + +[node name="@CollisionShape3D@204" type="CollisionShape3D" parent="ShoulderEastC" unique_id=1960094211] +shape = SubResource("BoxShape3D_3qqo7") + +[node name="@MeshInstance3D@205" type="MeshInstance3D" parent="ShoulderEastC" unique_id=1930856461] +mesh = SubResource("BoxMesh_2kgfr") +surface_material_override/0 = SubResource("StandardMaterial3D_rtu3h") + +[node name="BackA" type="StaticBody3D" parent="." unique_id=284830937 groups=["crag_mass"]] +transform = Transform3D(0.99820054, 0, 0.059964005, 0, 1, 0, -0.059964005, 0, 0.99820054, 0.5, 3, -20.6) +collision_mask = 29 + +[node name="@CollisionShape3D@206" type="CollisionShape3D" parent="BackA" unique_id=1682473078] +shape = SubResource("BoxShape3D_0vb6v") + +[node name="@MeshInstance3D@207" type="MeshInstance3D" parent="BackA" unique_id=1257461619] +mesh = SubResource("BoxMesh_fyjjs") +surface_material_override/0 = SubResource("StandardMaterial3D_n3f23") + +[node name="BackB" type="StaticBody3D" parent="." unique_id=1946030723 groups=["crag_mass"]] +transform = Transform3D(0.99680173, 0, -0.07991469, 0, 1, 0, 0.07991469, 0, 0.99680173, -0.8, 13.5, -20.4) +collision_mask = 29 + +[node name="@CollisionShape3D@208" type="CollisionShape3D" parent="BackB" unique_id=1161862849] +shape = SubResource("BoxShape3D_52jvf") + +[node name="@MeshInstance3D@209" type="MeshInstance3D" parent="BackB" unique_id=1303292780] +mesh = SubResource("BoxMesh_6ia0h") +surface_material_override/0 = SubResource("StandardMaterial3D_7fr13") + +[node name="Corner0" type="StaticBody3D" parent="." unique_id=152507480 groups=["crag_mass"]] +transform = Transform3D(0.93194413, 0.12104647, 0.34180114, -0.09951413, 0.9918219, -0.07991469, -0.34867918, 0.040461987, 0.93636835, 6.3, 5.6, -13.4) +collision_mask = 29 + +[node name="@CollisionShape3D@210" type="CollisionShape3D" parent="Corner0" unique_id=375200059] +shape = SubResource("BoxShape3D_5plk6") + +[node name="@MeshInstance3D@211" type="MeshInstance3D" parent="Corner0" unique_id=78464122] +mesh = SubResource("BoxMesh_gy70j") +surface_material_override/0 = SubResource("StandardMaterial3D_p538d") + +[node name="Corner1" type="StaticBody3D" parent="." unique_id=964482339 groups=["crag_mass"]] +transform = Transform3D(0.9199813, -0.050329905, -0.3887176, 0.079770885, 0.99500805, 0.059964005, 0.38375914, -0.08617411, 0.91940355, -6.6, 5.5, -13.6) +collision_mask = 29 + +[node name="@CollisionShape3D@212" type="CollisionShape3D" parent="Corner1" unique_id=658225270] +shape = SubResource("BoxShape3D_jusyc") + +[node name="@MeshInstance3D@213" type="MeshInstance3D" parent="Corner1" unique_id=177546679] +mesh = SubResource("BoxMesh_sin4a") +surface_material_override/0 = SubResource("StandardMaterial3D_hjndp") + +[node name="Corner2" type="StaticBody3D" parent="." unique_id=931910764 groups=["crag_mass"]] +transform = Transform3D(0.95199823, -0.085074805, 0.29404384, 0.119114146, 0.98784876, -0.09983342, -0.28197753, 0.130066, 0.95056385, 6.4, 12.4, -15.4) +collision_mask = 29 + +[node name="@CollisionShape3D@214" type="CollisionShape3D" parent="Corner2" unique_id=511010815] +shape = SubResource("BoxShape3D_b1yft") + +[node name="@MeshInstance3D@215" type="MeshInstance3D" parent="Corner2" unique_id=1197853686] +mesh = SubResource("BoxMesh_rv36h") +surface_material_override/0 = SubResource("StandardMaterial3D_hbsm6") + +[node name="Corner3" type="StaticBody3D" parent="." unique_id=587647457 groups=["crag_mass"]] +transform = Transform3D(0.93194413, 0.12104647, -0.34180114, -0.09951413, 0.9918219, 0.07991469, 0.34867918, -0.040461987, 0.93636835, -5.5, 13.6, -15.2) +collision_mask = 29 + +[node name="@CollisionShape3D@216" type="CollisionShape3D" parent="Corner3" unique_id=886920672] +shape = SubResource("BoxShape3D_wy3dh") + +[node name="@MeshInstance3D@217" type="MeshInstance3D" parent="Corner3" unique_id=981915188] +mesh = SubResource("BoxMesh_0kq0x") +surface_material_override/0 = SubResource("StandardMaterial3D_gq5yk") + +[node name="Corner4" type="StaticBody3D" parent="." unique_id=1135664644 groups=["crag_mass"]] +transform = Transform3D(0.91840255, -0.072587095, 0.38893166, 0.099708654, 0.9937607, -0.04997917, -0.38287714, 0.084680855, 0.9199099, 4.3, 23, -16.4) +collision_mask = 29 + +[node name="@CollisionShape3D@218" type="CollisionShape3D" parent="Corner4" unique_id=1918929265] +shape = SubResource("BoxShape3D_dexoq") + +[node name="@MeshInstance3D@219" type="MeshInstance3D" parent="Corner4" unique_id=345768530] +mesh = SubResource("BoxMesh_hyqb4") +surface_material_override/0 = SubResource("StandardMaterial3D_x688n") + +[node name="Corner5" type="StaticBody3D" parent="." unique_id=1711339537 groups=["crag_mass"]] +transform = Transform3D(0.95110077, 0.09106804, -0.2951509, -0.079814814, 0.995556, 0.04997917, 0.29839075, -0.023977812, 0.9541426, -4.4, 22.2, -16.6) +collision_mask = 29 + +[node name="@CollisionShape3D@220" type="CollisionShape3D" parent="Corner5" unique_id=1145832894] +shape = SubResource("BoxShape3D_fkj3y") + +[node name="@MeshInstance3D@221" type="MeshInstance3D" parent="Corner5" unique_id=1562028009] +mesh = SubResource("BoxMesh_bcxa5") +surface_material_override/0 = SubResource("StandardMaterial3D_clfb6") + +[node name="Corner6" type="StaticBody3D" parent="." unique_id=1008920814 groups=["crag_mass"]] +transform = Transform3D(0.9206478, 0.33606267, 0.19866933, -0.3428978, 0.9393727, 0, -0.18662454, -0.06812327, 0.9800666, 8.2, 2.4, -17.8) +collision_mask = 29 + +[node name="@CollisionShape3D@222" type="CollisionShape3D" parent="Corner6" unique_id=2027221472] +shape = SubResource("BoxShape3D_fnrqe") + +[node name="@MeshInstance3D@223" type="MeshInstance3D" parent="Corner6" unique_id=1456408862] +mesh = SubResource("BoxMesh_68e1m") +surface_material_override/0 = SubResource("StandardMaterial3D_uwydl") + +[node name="Talus0" type="StaticBody3D" parent="." unique_id=922160266 groups=["crag_mass"]] +transform = Transform3D(0.9988036, 0.03552046, 0.033610266, -0.030668696, 0.9903388, -0.13523506, -0.03808916, 0.13404249, 0.9902433, 9.5, 0.9, -13.5) +collision_mask = 29 + +[node name="@CollisionShape3D@224" type="CollisionShape3D" parent="Talus0" unique_id=757234277] +shape = SubResource("BoxShape3D_rcmts") + +[node name="@MeshInstance3D@225" type="MeshInstance3D" parent="Talus0" unique_id=844486390] +mesh = SubResource("BoxMesh_bicni") +surface_material_override/0 = SubResource("StandardMaterial3D_1dug4") + +[node name="Talus1" type="StaticBody3D" parent="." unique_id=2135074675 groups=["crag_mass"]] +transform = Transform3D(0.56277037, -0.045992553, -0.82533276, -0.013489658, 0.99780697, -0.06480207, 0.82650316, 0.047602147, 0.5609158, 11, 0.6, -16.2) +collision_mask = 29 + +[node name="@CollisionShape3D@226" type="CollisionShape3D" parent="Talus1" unique_id=468493694] +shape = SubResource("BoxShape3D_5qwu1") + +[node name="@MeshInstance3D@227" type="MeshInstance3D" parent="Talus1" unique_id=796758906] +mesh = SubResource("BoxMesh_qm3bo") +surface_material_override/0 = SubResource("StandardMaterial3D_1om8w") + +[node name="Talus2" type="StaticBody3D" parent="." unique_id=992076437 groups=["crag_mass"]] +transform = Transform3D(0.819807, -0.04326992, 0.5710028, 0.08161516, 0.9957904, -0.041717682, -0.566794, 0.08080293, 0.81988746, -9.6, 1.1, -14.2) +collision_mask = 29 + +[node name="@CollisionShape3D@228" type="CollisionShape3D" parent="Talus2" unique_id=1674508594] +shape = SubResource("BoxShape3D_0ektu") + +[node name="@MeshInstance3D@229" type="MeshInstance3D" parent="Talus2" unique_id=316053700] +mesh = SubResource("BoxMesh_omyp6") +surface_material_override/0 = SubResource("StandardMaterial3D_cs6jd") + +[node name="Talus3" type="StaticBody3D" parent="." unique_id=313385972 groups=["crag_mass"]] +transform = Transform3D(0.6854269, 0.08048917, 0.7236791, -0.024790794, 0.99587506, -0.087283, -0.72771925, 0.041885536, 0.6845949, -10.5, 0.6, -19.5) +collision_mask = 29 + +[node name="@CollisionShape3D@230" type="CollisionShape3D" parent="Talus3" unique_id=1058167549] +shape = SubResource("BoxShape3D_csqya") + +[node name="@MeshInstance3D@231" type="MeshInstance3D" parent="Talus3" unique_id=460054193] +mesh = SubResource("BoxMesh_x5amg") +surface_material_override/0 = SubResource("StandardMaterial3D_sw6ok") + +[node name="Talus4" type="StaticBody3D" parent="." unique_id=1718482361 groups=["crag_mass"]] +transform = Transform3D(0.9521058, 0.08184577, -0.29461128, -0.041619755, 0.98923194, 0.14031382, 0.302923, -0.12133196, 0.94525987, 6.5, 0.7, -11.2) +collision_mask = 29 + +[node name="@CollisionShape3D@232" type="CollisionShape3D" parent="Talus4" unique_id=1810839381] +shape = SubResource("BoxShape3D_53mk0") + +[node name="@MeshInstance3D@233" type="MeshInstance3D" parent="Talus4" unique_id=422041819] +mesh = SubResource("BoxMesh_54lc8") +surface_material_override/0 = SubResource("StandardMaterial3D_uo0ce") + +[node name="Talus5" type="StaticBody3D" parent="." unique_id=2029228853 groups=["crag_mass"]] +transform = Transform3D(0.98964626, 0.07009173, 0.12524925, -0.07897882, 0.9945916, 0.06745311, -0.119843945, -0.07664675, 0.9898296, -8.3, 0.45, -11.8) +collision_mask = 29 + +[node name="@CollisionShape3D@234" type="CollisionShape3D" parent="Talus5" unique_id=878031099] +shape = SubResource("BoxShape3D_uadgr") + +[node name="@MeshInstance3D@235" type="MeshInstance3D" parent="Talus5" unique_id=1066442755] +mesh = SubResource("BoxMesh_mk4yk") +surface_material_override/0 = SubResource("StandardMaterial3D_1jv16") + +[node name="Talus6" type="StaticBody3D" parent="." unique_id=82621821 groups=["crag_mass"]] +transform = Transform3D(0.9759679, 0.016594023, -0.217282, 0.0052934755, 0.9949969, 0.09976556, 0.21785043, -0.098518156, 0.9709971, 4, 1.2, -23) +collision_mask = 29 + +[node name="@CollisionShape3D@236" type="CollisionShape3D" parent="Talus6" unique_id=1213110757] +shape = SubResource("BoxShape3D_4qk36") + +[node name="@MeshInstance3D@237" type="MeshInstance3D" parent="Talus6" unique_id=576570263] +mesh = SubResource("BoxMesh_3rh6d") +surface_material_override/0 = SubResource("StandardMaterial3D_lhc5k") + +[node name="Talus7" type="StaticBody3D" parent="." unique_id=1186781004 groups=["crag_mass"]] +transform = Transform3D(0.65803456, -0.00884752, -0.75293577, -0.13602476, 0.98208344, -0.13042015, 0.74059963, 0.18823886, 0.64504135, -5, 0.8, -23.4) +collision_mask = 29 + +[node name="@CollisionShape3D@238" type="CollisionShape3D" parent="Talus7" unique_id=1981113301] +shape = SubResource("BoxShape3D_kg7t2") + +[node name="@MeshInstance3D@239" type="MeshInstance3D" parent="Talus7" unique_id=1928613700] +mesh = SubResource("BoxMesh_jctc5") +surface_material_override/0 = SubResource("StandardMaterial3D_kxsbe") + +[node name="Rubble0" type="StaticBody3D" parent="." unique_id=533275719 groups=["crag_mass"]] +transform = Transform3D(0.98490256, -0.1324932, -0.11141194, 0.12318102, 0.9885892, -0.08670564, 0.121628545, 0.07167277, 0.98998463, 3.5, 1.2, -12.8) +collision_mask = 29 + +[node name="@CollisionShape3D@240" type="CollisionShape3D" parent="Rubble0" unique_id=1115007474] +shape = SubResource("BoxShape3D_mchke") + +[node name="@MeshInstance3D@241" type="MeshInstance3D" parent="Rubble0" unique_id=1739621498] +mesh = SubResource("BoxMesh_0k3x7") +surface_material_override/0 = SubResource("StandardMaterial3D_nq8od") + +[node name="Rubble1" type="StaticBody3D" parent="." unique_id=1774487965 groups=["crag_mass"]] +transform = Transform3D(0.9670737, -0.089197285, -0.23835327, 0.109516636, 0.9912722, 0.07338636, 0.22972709, -0.097073674, 0.9684019, 5, 3.5, -12.8) +collision_mask = 29 + +[node name="@CollisionShape3D@242" type="CollisionShape3D" parent="Rubble1" unique_id=1609982154] +shape = SubResource("BoxShape3D_cckmc") + +[node name="@MeshInstance3D@243" type="MeshInstance3D" parent="Rubble1" unique_id=265835626] +mesh = SubResource("BoxMesh_v4ekr") +surface_material_override/0 = SubResource("StandardMaterial3D_7ydme") + +[node name="Rubble2" type="StaticBody3D" parent="." unique_id=1202630308 groups=["crag_mass"]] +transform = Transform3D(0.9906143, 0.12584421, 0.053353388, -0.13139014, 0.98429865, 0.117868, -0.03768266, -0.12377184, 0.991595, 1.6, 5.6, -12.8) +collision_mask = 29 + +[node name="@CollisionShape3D@244" type="CollisionShape3D" parent="Rubble2" unique_id=1135407444] +shape = SubResource("BoxShape3D_i3pa8") + +[node name="@MeshInstance3D@245" type="MeshInstance3D" parent="Rubble2" unique_id=1963294475] +mesh = SubResource("BoxMesh_qujyr") +surface_material_override/0 = SubResource("StandardMaterial3D_o3c0s") + +[node name="Rubble3" type="StaticBody3D" parent="." unique_id=464909903 groups=["crag_mass"]] +transform = Transform3D(0.9990975, -0.042212628, -0.0047189356, 0.042273417, 0.9990132, 0.013624425, 0.0041391565, -0.013811615, 0.99989605, 4.2, 6.8, -12.8) +collision_mask = 29 + +[node name="@CollisionShape3D@246" type="CollisionShape3D" parent="Rubble3" unique_id=1728761260] +shape = SubResource("BoxShape3D_hbnf1") + +[node name="@MeshInstance3D@247" type="MeshInstance3D" parent="Rubble3" unique_id=2058206845] +mesh = SubResource("BoxMesh_syrlg") +surface_material_override/0 = SubResource("StandardMaterial3D_7pdsg") + +[node name="Rubble4" type="StaticBody3D" parent="." unique_id=1289742578 groups=["crag_mass"]] +transform = Transform3D(0.9931994, -0.10519363, -0.04989247, 0.10920747, 0.99028814, 0.08604096, 0.040356964, -0.09090446, 0.99504155, -0.2, 2.4, -12.8) +collision_mask = 29 + +[node name="@CollisionShape3D@248" type="CollisionShape3D" parent="Rubble4" unique_id=478512179] +shape = SubResource("BoxShape3D_37lho") + +[node name="@MeshInstance3D@249" type="MeshInstance3D" parent="Rubble4" unique_id=893675302] +mesh = SubResource("BoxMesh_d4uuj") +surface_material_override/0 = SubResource("StandardMaterial3D_lbl05") + +[node name="Rubble5" type="StaticBody3D" parent="." unique_id=1854543241 groups=["crag_mass"]] +transform = Transform3D(0.9918335, 0.11195531, -0.061093025, -0.118334316, 0.9864806, -0.11337135, 0.04757456, 0.119674906, 0.99167264, 0.4, 10.2, -14.3) +collision_mask = 29 + +[node name="@CollisionShape3D@250" type="CollisionShape3D" parent="Rubble5" unique_id=463854641] +shape = SubResource("BoxShape3D_q2b5r") + +[node name="@MeshInstance3D@251" type="MeshInstance3D" parent="Rubble5" unique_id=2031975654] +mesh = SubResource("BoxMesh_5ysk4") +surface_material_override/0 = SubResource("StandardMaterial3D_tmh5l") + +[node name="Rubble6" type="StaticBody3D" parent="." unique_id=2071211101 groups=["crag_mass"]] +transform = Transform3D(0.99699664, -0.058165673, -0.051131543, 0.061686218, 0.99562323, 0.07020822, 0.04682404, -0.07315147, 0.996221, -1.2, 11.6, -14.3) +collision_mask = 29 + +[node name="@CollisionShape3D@252" type="CollisionShape3D" parent="Rubble6" unique_id=1026321715] +shape = SubResource("BoxShape3D_wuuha") + +[node name="@MeshInstance3D@253" type="MeshInstance3D" parent="Rubble6" unique_id=1969415851] +mesh = SubResource("BoxMesh_xbxac") +surface_material_override/0 = SubResource("StandardMaterial3D_1hj5b") + +[node name="Rubble7" type="StaticBody3D" parent="." unique_id=1937664998 groups=["crag_mass"]] +transform = Transform3D(0.9897382, 0.08012156, -0.11831639, -0.08848829, 0.99380547, -0.06723498, 0.112196505, 0.07701464, 0.9906971, -4.5, 11, -14.3) +collision_mask = 29 + +[node name="@CollisionShape3D@254" type="CollisionShape3D" parent="Rubble7" unique_id=2078222759] +shape = SubResource("BoxShape3D_rk117") + +[node name="@MeshInstance3D@255" type="MeshInstance3D" parent="Rubble7" unique_id=446461083] +mesh = SubResource("BoxMesh_7k3r1") +surface_material_override/0 = SubResource("StandardMaterial3D_svshe") + +[node name="Rubble8" type="StaticBody3D" parent="." unique_id=258108610 groups=["crag_mass"]] +transform = Transform3D(0.97907543, -0.14404942, -0.14373967, 0.13727376, 0.9889464, -0.05604429, 0.15022399, 0.035139907, 0.98802733, -6.1, 4, -14.2) +collision_mask = 29 + +[node name="@CollisionShape3D@256" type="CollisionShape3D" parent="Rubble8" unique_id=1395139193] +shape = SubResource("BoxShape3D_x4s4b") + +[node name="@MeshInstance3D@257" type="MeshInstance3D" parent="Rubble8" unique_id=1940176283] +mesh = SubResource("BoxMesh_ilpnn") +surface_material_override/0 = SubResource("StandardMaterial3D_03xh5") + +[node name="Rubble9" type="StaticBody3D" parent="." unique_id=717545213 groups=["crag_mass"]] +transform = Transform3D(0.99201745, -0.10099712, 0.07550471, 0.1009728, 0.99488056, 0.0041493205, -0.075537235, 0.003507723, 0.99713683, 6.2, 7.5, -14.5) +collision_mask = 29 + +[node name="@CollisionShape3D@258" type="CollisionShape3D" parent="Rubble9" unique_id=1013048028] +shape = SubResource("BoxShape3D_ystjr") + +[node name="@MeshInstance3D@259" type="MeshInstance3D" parent="Rubble9" unique_id=1820362833] +mesh = SubResource("BoxMesh_do7wh") +surface_material_override/0 = SubResource("StandardMaterial3D_u2n3y") + +[node name="Rubble10" type="StaticBody3D" parent="." unique_id=1268425345 groups=["crag_mass"]] +transform = Transform3D(0.9998721, 0.013658298, 0.008319874, -0.013750126, 0.9998441, 0.011081751, -0.008167218, -0.011194733, 0.999904, -3.6, 20.5, -15.8) +collision_mask = 29 + +[node name="@CollisionShape3D@260" type="CollisionShape3D" parent="Rubble10" unique_id=129643759] +shape = SubResource("BoxShape3D_cho6p") + +[node name="@MeshInstance3D@261" type="MeshInstance3D" parent="Rubble10" unique_id=1821472391] +mesh = SubResource("BoxMesh_iyobw") +surface_material_override/0 = SubResource("StandardMaterial3D_w2q4s") + +[node name="Rubble11" type="StaticBody3D" parent="." unique_id=1999056849 groups=["crag_mass"]] +transform = Transform3D(0.98421496, 0.023069618, 0.17546678, -0.0194738, 0.9995642, -0.02218743, -0.17590214, 0.018420197, 0.9842353, 3.2, 22.8, -15.8) +collision_mask = 29 + +[node name="@CollisionShape3D@262" type="CollisionShape3D" parent="Rubble11" unique_id=50591956] +shape = SubResource("BoxShape3D_3y7yt") + +[node name="@MeshInstance3D@263" type="MeshInstance3D" parent="Rubble11" unique_id=1832601175] +mesh = SubResource("BoxMesh_4yms4") +surface_material_override/0 = SubResource("StandardMaterial3D_3q5df") + +[node name="Rubble12" type="StaticBody3D" parent="." unique_id=1233907539 groups=["crag_mass"]] +transform = Transform3D(0.97184056, -0.10588562, 0.21050906, 0.10988733, 0.9939167, -0.0073701893, -0.20844808, 0.030294929, 0.9775641, -2.4, 24.6, -15.8) +collision_mask = 29 + +[node name="@CollisionShape3D@264" type="CollisionShape3D" parent="Rubble12" unique_id=355161848] +shape = SubResource("BoxShape3D_22ul5") + +[node name="@MeshInstance3D@265" type="MeshInstance3D" parent="Rubble12" unique_id=1748271638] +mesh = SubResource("BoxMesh_6c5a6") +surface_material_override/0 = SubResource("StandardMaterial3D_4e1g1") + +[node name="Rubble13" type="StaticBody3D" parent="." unique_id=974888290 groups=["crag_mass"]] +transform = Transform3D(0.9935589, 0.06227754, 0.094669186, -0.057655726, 0.99704325, -0.050798412, -0.09755287, 0.045012992, 0.9942119, 1.8, 18.4, -15.8) +collision_mask = 29 + +[node name="@CollisionShape3D@266" type="CollisionShape3D" parent="Rubble13" unique_id=1659677426] +shape = SubResource("BoxShape3D_rshqu") + +[node name="@MeshInstance3D@267" type="MeshInstance3D" parent="Rubble13" unique_id=1515233715] +mesh = SubResource("BoxMesh_4jt7m") +surface_material_override/0 = SubResource("StandardMaterial3D_q86bc") + +[node name="Boulder1" type="StaticBody3D" parent="." unique_id=1580917474 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.6, 0.6, -9.6) +collision_mask = 29 + +[node name="@CollisionShape3D@268" type="CollisionShape3D" parent="Boulder1" unique_id=1017641992] +shape = SubResource("BoxShape3D_nbkjl") + +[node name="@MeshInstance3D@269" type="MeshInstance3D" parent="Boulder1" unique_id=825467615] +mesh = SubResource("BoxMesh_dnd12") +surface_material_override/0 = SubResource("StandardMaterial3D_87bjv") + +[node name="Boulder2" type="StaticBody3D" parent="." unique_id=2031980261 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.6, 1.05, -11.2) +collision_mask = 29 + +[node name="@CollisionShape3D@270" type="CollisionShape3D" parent="Boulder2" unique_id=824528229] +shape = SubResource("BoxShape3D_xgr8m") + +[node name="@MeshInstance3D@271" type="MeshInstance3D" parent="Boulder2" unique_id=493850351] +mesh = SubResource("BoxMesh_5xxlf") +surface_material_override/0 = SubResource("StandardMaterial3D_4j1dc") + +[node name="Boulder3" type="StaticBody3D" parent="." unique_id=419697905 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 1.5, -12.2) +collision_mask = 29 + +[node name="@CollisionShape3D@272" type="CollisionShape3D" parent="Boulder3" unique_id=29866097] +shape = SubResource("BoxShape3D_uun4j") + +[node name="@MeshInstance3D@273" type="MeshInstance3D" parent="Boulder3" unique_id=1490962049] +mesh = SubResource("BoxMesh_88ayx") +surface_material_override/0 = SubResource("StandardMaterial3D_r8xf2") + +[node name="LadderRail" type="StaticBody3D" parent="." unique_id=1429679666 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 6, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@274" type="CollisionShape3D" parent="LadderRail" unique_id=16392507] +shape = SubResource("CylinderShape3D_tmi2n") + +[node name="@MeshInstance3D@275" type="MeshInstance3D" parent="LadderRail" unique_id=732913894] +mesh = SubResource("CylinderMesh_vcc0l") +surface_material_override/0 = SubResource("StandardMaterial3D_wljrl") + +[node name="LadderStandoff" type="StaticBody3D" parent="." unique_id=1252302634 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 4, -12.94) +collision_mask = 29 + +[node name="@CollisionShape3D@276" type="CollisionShape3D" parent="LadderStandoff" unique_id=584716314] +shape = SubResource("BoxShape3D_i6qn8") + +[node name="@MeshInstance3D@277" type="MeshInstance3D" parent="LadderStandoff" unique_id=2031384650] +mesh = SubResource("BoxMesh_d5tar") +surface_material_override/0 = SubResource("StandardMaterial3D_lrjaj") + +[node name="LadderStandoff2" type="StaticBody3D" parent="." unique_id=1132695728 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 6, -12.94) +collision_mask = 29 + +[node name="@CollisionShape3D@278" type="CollisionShape3D" parent="LadderStandoff2" unique_id=770234423] +shape = SubResource("BoxShape3D_e4wrd") + +[node name="@MeshInstance3D@279" type="MeshInstance3D" parent="LadderStandoff2" unique_id=185699204] +mesh = SubResource("BoxMesh_4c2ip") +surface_material_override/0 = SubResource("StandardMaterial3D_b54b0") + +[node name="LadderStandoff3" type="StaticBody3D" parent="." unique_id=1712820140 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 8, -12.94) +collision_mask = 29 + +[node name="@CollisionShape3D@280" type="CollisionShape3D" parent="LadderStandoff3" unique_id=2029401208] +shape = SubResource("BoxShape3D_0xe5i") + +[node name="@MeshInstance3D@281" type="MeshInstance3D" parent="LadderStandoff3" unique_id=721284646] +mesh = SubResource("BoxMesh_0h58y") +surface_material_override/0 = SubResource("StandardMaterial3D_jc3vp") + +[node name="LadderRail2" type="StaticBody3D" parent="." unique_id=1420973558 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4, 6, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@282" type="CollisionShape3D" parent="LadderRail2" unique_id=507716649] +shape = SubResource("CylinderShape3D_sx2us") + +[node name="@MeshInstance3D@283" type="MeshInstance3D" parent="LadderRail2" unique_id=1760773939] +mesh = SubResource("CylinderMesh_lxydr") +surface_material_override/0 = SubResource("StandardMaterial3D_bpxa8") + +[node name="LadderStandoff4" type="StaticBody3D" parent="." unique_id=35568564 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4, 4, -12.94) +collision_mask = 29 + +[node name="@CollisionShape3D@284" type="CollisionShape3D" parent="LadderStandoff4" unique_id=601000645] +shape = SubResource("BoxShape3D_6gi70") + +[node name="@MeshInstance3D@285" type="MeshInstance3D" parent="LadderStandoff4" unique_id=262319286] +mesh = SubResource("BoxMesh_qaovb") +surface_material_override/0 = SubResource("StandardMaterial3D_jgt08") + +[node name="LadderStandoff5" type="StaticBody3D" parent="." unique_id=1866985354 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4, 6, -12.94) +collision_mask = 29 + +[node name="@CollisionShape3D@286" type="CollisionShape3D" parent="LadderStandoff5" unique_id=353895880] +shape = SubResource("BoxShape3D_yn1fr") + +[node name="@MeshInstance3D@287" type="MeshInstance3D" parent="LadderStandoff5" unique_id=31132589] +mesh = SubResource("BoxMesh_6e4kg") +surface_material_override/0 = SubResource("StandardMaterial3D_sv0tw") + +[node name="LadderStandoff6" type="StaticBody3D" parent="." unique_id=135952993 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4, 8, -12.94) +collision_mask = 29 + +[node name="@CollisionShape3D@288" type="CollisionShape3D" parent="LadderStandoff6" unique_id=732105620] +shape = SubResource("BoxShape3D_sisyp") + +[node name="@MeshInstance3D@289" type="MeshInstance3D" parent="LadderStandoff6" unique_id=430678759] +mesh = SubResource("BoxMesh_2ohyv") +surface_material_override/0 = SubResource("StandardMaterial3D_p8dcb") + +[node name="Rung" type="StaticBody3D" parent="." unique_id=891181052 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 3.3, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@290" type="CollisionShape3D" parent="Rung" unique_id=652149837] +shape = SubResource("CylinderShape3D_nlm00") + +[node name="@MeshInstance3D@291" type="MeshInstance3D" parent="Rung" unique_id=1513743195] +mesh = SubResource("CylinderMesh_fxqm5") +surface_material_override/0 = SubResource("StandardMaterial3D_2l75p") + +[node name="Rung2" type="StaticBody3D" parent="." unique_id=20777318 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 3.6, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@292" type="CollisionShape3D" parent="Rung2" unique_id=238152715] +shape = SubResource("CylinderShape3D_s1pmj") + +[node name="@MeshInstance3D@293" type="MeshInstance3D" parent="Rung2" unique_id=853999888] +mesh = SubResource("CylinderMesh_if0uh") +surface_material_override/0 = SubResource("StandardMaterial3D_tsvk8") + +[node name="Rung3" type="StaticBody3D" parent="." unique_id=238014966 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 3.8999999, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@294" type="CollisionShape3D" parent="Rung3" unique_id=1331181531] +shape = SubResource("CylinderShape3D_6tphc") + +[node name="@MeshInstance3D@295" type="MeshInstance3D" parent="Rung3" unique_id=1473322297] +mesh = SubResource("CylinderMesh_plbgp") +surface_material_override/0 = SubResource("StandardMaterial3D_rrqcy") + +[node name="Rung4" type="StaticBody3D" parent="." unique_id=1263059743 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 4.2, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@296" type="CollisionShape3D" parent="Rung4" unique_id=2019997829] +shape = SubResource("CylinderShape3D_mmy0h") + +[node name="@MeshInstance3D@297" type="MeshInstance3D" parent="Rung4" unique_id=849093368] +mesh = SubResource("CylinderMesh_7qho7") +surface_material_override/0 = SubResource("StandardMaterial3D_h1jha") + +[node name="Rung5" type="StaticBody3D" parent="." unique_id=1671957845 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 4.5, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@298" type="CollisionShape3D" parent="Rung5" unique_id=1466631300] +shape = SubResource("CylinderShape3D_ibt8s") + +[node name="@MeshInstance3D@299" type="MeshInstance3D" parent="Rung5" unique_id=1482206061] +mesh = SubResource("CylinderMesh_o0eto") +surface_material_override/0 = SubResource("StandardMaterial3D_ocgx2") + +[node name="Rung6" type="StaticBody3D" parent="." unique_id=2144370527 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 4.8, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@300" type="CollisionShape3D" parent="Rung6" unique_id=1721264475] +shape = SubResource("CylinderShape3D_56ch7") + +[node name="@MeshInstance3D@301" type="MeshInstance3D" parent="Rung6" unique_id=1631660680] +mesh = SubResource("CylinderMesh_l313d") +surface_material_override/0 = SubResource("StandardMaterial3D_utm6i") + +[node name="Rung7" type="StaticBody3D" parent="." unique_id=1562162815 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 5.1000004, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@302" type="CollisionShape3D" parent="Rung7" unique_id=1667825968] +shape = SubResource("CylinderShape3D_iwmuj") + +[node name="@MeshInstance3D@303" type="MeshInstance3D" parent="Rung7" unique_id=2037020412] +mesh = SubResource("CylinderMesh_0frkw") +surface_material_override/0 = SubResource("StandardMaterial3D_3wgxy") + +[node name="Rung8" type="StaticBody3D" parent="." unique_id=595375098 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 5.4000006, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@304" type="CollisionShape3D" parent="Rung8" unique_id=1839842769] +shape = SubResource("CylinderShape3D_18h8k") + +[node name="@MeshInstance3D@305" type="MeshInstance3D" parent="Rung8" unique_id=1699610456] +mesh = SubResource("CylinderMesh_p86sr") +surface_material_override/0 = SubResource("StandardMaterial3D_6kjdx") + +[node name="Rung9" type="StaticBody3D" parent="." unique_id=20741838 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 5.700001, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@306" type="CollisionShape3D" parent="Rung9" unique_id=2120887506] +shape = SubResource("CylinderShape3D_1nwvs") + +[node name="@MeshInstance3D@307" type="MeshInstance3D" parent="Rung9" unique_id=1540253514] +mesh = SubResource("CylinderMesh_xaa4f") +surface_material_override/0 = SubResource("StandardMaterial3D_s8u17") + +[node name="Rung10" type="StaticBody3D" parent="." unique_id=327946165 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 6.000001, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@308" type="CollisionShape3D" parent="Rung10" unique_id=1618911965] +shape = SubResource("CylinderShape3D_h0bd4") + +[node name="@MeshInstance3D@309" type="MeshInstance3D" parent="Rung10" unique_id=1529720502] +mesh = SubResource("CylinderMesh_bpu1h") +surface_material_override/0 = SubResource("StandardMaterial3D_3cheh") + +[node name="Rung11" type="StaticBody3D" parent="." unique_id=1407035632 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 6.300001, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@310" type="CollisionShape3D" parent="Rung11" unique_id=1056027784] +shape = SubResource("CylinderShape3D_bjgaa") + +[node name="@MeshInstance3D@311" type="MeshInstance3D" parent="Rung11" unique_id=423694258] +mesh = SubResource("CylinderMesh_mwfo1") +surface_material_override/0 = SubResource("StandardMaterial3D_88erh") + +[node name="Rung12" type="StaticBody3D" parent="." unique_id=1117618926 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 6.6000013, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@312" type="CollisionShape3D" parent="Rung12" unique_id=835630740] +shape = SubResource("CylinderShape3D_orp6f") + +[node name="@MeshInstance3D@313" type="MeshInstance3D" parent="Rung12" unique_id=1612315835] +mesh = SubResource("CylinderMesh_8bdj4") +surface_material_override/0 = SubResource("StandardMaterial3D_2jy26") + +[node name="Rung13" type="StaticBody3D" parent="." unique_id=1018552400 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 6.9000015, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@314" type="CollisionShape3D" parent="Rung13" unique_id=1487003216] +shape = SubResource("CylinderShape3D_t1of3") + +[node name="@MeshInstance3D@315" type="MeshInstance3D" parent="Rung13" unique_id=1374527542] +mesh = SubResource("CylinderMesh_b25kj") +surface_material_override/0 = SubResource("StandardMaterial3D_gp7uy") + +[node name="Rung14" type="StaticBody3D" parent="." unique_id=68044082 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 7.2000017, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@316" type="CollisionShape3D" parent="Rung14" unique_id=822615760] +shape = SubResource("CylinderShape3D_7v3yg") + +[node name="@MeshInstance3D@317" type="MeshInstance3D" parent="Rung14" unique_id=281431874] +mesh = SubResource("CylinderMesh_1if3w") +surface_material_override/0 = SubResource("StandardMaterial3D_aimtc") + +[node name="Rung15" type="StaticBody3D" parent="." unique_id=724959377 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 7.500002, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@318" type="CollisionShape3D" parent="Rung15" unique_id=1491951974] +shape = SubResource("CylinderShape3D_rpi44") + +[node name="@MeshInstance3D@319" type="MeshInstance3D" parent="Rung15" unique_id=2052438703] +mesh = SubResource("CylinderMesh_lbt0k") +surface_material_override/0 = SubResource("StandardMaterial3D_1jvko") + +[node name="Rung16" type="StaticBody3D" parent="." unique_id=1119140144 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 7.800002, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@320" type="CollisionShape3D" parent="Rung16" unique_id=563175816] +shape = SubResource("CylinderShape3D_bh47j") + +[node name="@MeshInstance3D@321" type="MeshInstance3D" parent="Rung16" unique_id=1872424675] +mesh = SubResource("CylinderMesh_cwfhf") +surface_material_override/0 = SubResource("StandardMaterial3D_7r4re") + +[node name="Rung17" type="StaticBody3D" parent="." unique_id=155391683 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 8.100002, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@322" type="CollisionShape3D" parent="Rung17" unique_id=482341444] +shape = SubResource("CylinderShape3D_kokst") + +[node name="@MeshInstance3D@323" type="MeshInstance3D" parent="Rung17" unique_id=950154488] +mesh = SubResource("CylinderMesh_cusx3") +surface_material_override/0 = SubResource("StandardMaterial3D_jkxvm") + +[node name="Rung18" type="StaticBody3D" parent="." unique_id=5412265 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 8.4000025, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@324" type="CollisionShape3D" parent="Rung18" unique_id=1714490380] +shape = SubResource("CylinderShape3D_y0qv5") + +[node name="@MeshInstance3D@325" type="MeshInstance3D" parent="Rung18" unique_id=934178009] +mesh = SubResource("CylinderMesh_kfqmb") +surface_material_override/0 = SubResource("StandardMaterial3D_frajp") + +[node name="Rung19" type="StaticBody3D" parent="." unique_id=402885836 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, -2.7, 8.700003, -12.85) +collision_mask = 29 + +[node name="@CollisionShape3D@326" type="CollisionShape3D" parent="Rung19" unique_id=843189513] +shape = SubResource("CylinderShape3D_w8e8q") + +[node name="@MeshInstance3D@327" type="MeshInstance3D" parent="Rung19" unique_id=457179348] +mesh = SubResource("CylinderMesh_ddxnn") +surface_material_override/0 = SubResource("StandardMaterial3D_1jdbt") + +[node name="FlagPole" type="StaticBody3D" parent="." unique_id=26845619 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.3, 9.2, -13.7) +collision_mask = 29 + +[node name="@CollisionShape3D@328" type="CollisionShape3D" parent="FlagPole" unique_id=2125352271] +shape = SubResource("CylinderShape3D_4ra8l") + +[node name="@MeshInstance3D@329" type="MeshInstance3D" parent="FlagPole" unique_id=1629206098] +mesh = SubResource("CylinderMesh_ttkoj") +surface_material_override/0 = SubResource("StandardMaterial3D_un8bp") + +[node name="Flag" type="StaticBody3D" parent="." unique_id=807309298] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.3, 10.15, -13.32) +collision_mask = 29 + +[node name="@CollisionShape3D@330" type="CollisionShape3D" parent="Flag" unique_id=2033207077] +shape = SubResource("BoxShape3D_4rdo5") + +[node name="@MeshInstance3D@331" type="MeshInstance3D" parent="Flag" unique_id=1854416456] +cast_shadow = 0 +mesh = SubResource("BoxMesh_48c5m") +surface_material_override/0 = SubResource("StandardMaterial3D_db6w3") + +[node name="Sign" type="Label3D" parent="." unique_id=2126660425] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.3, 10.8, -13.7) +pixel_size = 0.003 +billboard = 2 +text = "8 m" +font_size = 96 + +[node name="Jug" type="StaticBody3D" parent="." unique_id=49298420 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@332" type="CollisionShape3D" parent="Jug" unique_id=248435117] +shape = SubResource("BoxShape3D_pavee") + +[node name="@MeshInstance3D@333" type="MeshInstance3D" parent="Jug" unique_id=1373654060] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ri73e") +surface_material_override/0 = SubResource("StandardMaterial3D_hrpi4") + +[node name="Jug2" type="StaticBody3D" parent="." unique_id=1553172363 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 9.45, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@334" type="CollisionShape3D" parent="Jug2" unique_id=736713104] +shape = SubResource("BoxShape3D_7gc4j") + +[node name="@MeshInstance3D@335" type="MeshInstance3D" parent="Jug2" unique_id=1679532679] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ur1xe") +surface_material_override/0 = SubResource("StandardMaterial3D_wk5ts") + +[node name="Jug3" type="StaticBody3D" parent="." unique_id=351898634 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 9.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@336" type="CollisionShape3D" parent="Jug3" unique_id=1541051777] +shape = SubResource("BoxShape3D_1u8m5") + +[node name="@MeshInstance3D@337" type="MeshInstance3D" parent="Jug3" unique_id=1952589736] +cast_shadow = 0 +mesh = SubResource("BoxMesh_yexbb") +surface_material_override/0 = SubResource("StandardMaterial3D_uvrpx") + +[node name="Jug4" type="StaticBody3D" parent="." unique_id=1421473191 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 10.349999, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@338" type="CollisionShape3D" parent="Jug4" unique_id=1646369367] +shape = SubResource("BoxShape3D_j17wu") + +[node name="@MeshInstance3D@339" type="MeshInstance3D" parent="Jug4" unique_id=1826369741] +cast_shadow = 0 +mesh = SubResource("BoxMesh_bpw1o") +surface_material_override/0 = SubResource("StandardMaterial3D_cxxfx") + +[node name="Jug5" type="StaticBody3D" parent="." unique_id=1300175972 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 10.799999, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@340" type="CollisionShape3D" parent="Jug5" unique_id=1079577650] +shape = SubResource("BoxShape3D_o11g4") + +[node name="@MeshInstance3D@341" type="MeshInstance3D" parent="Jug5" unique_id=316721073] +cast_shadow = 0 +mesh = SubResource("BoxMesh_tnuip") +surface_material_override/0 = SubResource("StandardMaterial3D_t1be7") + +[node name="Jug6" type="StaticBody3D" parent="." unique_id=1833424788 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 11.249999, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@342" type="CollisionShape3D" parent="Jug6" unique_id=2071275571] +shape = SubResource("BoxShape3D_ouko4") + +[node name="@MeshInstance3D@343" type="MeshInstance3D" parent="Jug6" unique_id=2143998496] +cast_shadow = 0 +mesh = SubResource("BoxMesh_45arp") +surface_material_override/0 = SubResource("StandardMaterial3D_slxo5") + +[node name="Jug7" type="StaticBody3D" parent="." unique_id=1110455014 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 11.699999, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@344" type="CollisionShape3D" parent="Jug7" unique_id=921920554] +shape = SubResource("BoxShape3D_3dlty") + +[node name="@MeshInstance3D@345" type="MeshInstance3D" parent="Jug7" unique_id=2001747386] +cast_shadow = 0 +mesh = SubResource("BoxMesh_0celr") +surface_material_override/0 = SubResource("StandardMaterial3D_cwge6") + +[node name="Jug8" type="StaticBody3D" parent="." unique_id=1387543968 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 12.149999, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@346" type="CollisionShape3D" parent="Jug8" unique_id=282018127] +shape = SubResource("BoxShape3D_qihns") + +[node name="@MeshInstance3D@347" type="MeshInstance3D" parent="Jug8" unique_id=1819000079] +cast_shadow = 0 +mesh = SubResource("BoxMesh_0o3cn") +surface_material_override/0 = SubResource("StandardMaterial3D_s7n22") + +[node name="Jug9" type="StaticBody3D" parent="." unique_id=752658814 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.25, 12.599998, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@348" type="CollisionShape3D" parent="Jug9" unique_id=530371016] +shape = SubResource("BoxShape3D_56kv5") + +[node name="@MeshInstance3D@349" type="MeshInstance3D" parent="Jug9" unique_id=471176215] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ikhtq") +surface_material_override/0 = SubResource("StandardMaterial3D_ltha6") + +[node name="Jug10" type="StaticBody3D" parent="." unique_id=313486071 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 13.049998, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@350" type="CollisionShape3D" parent="Jug10" unique_id=1915389088] +shape = SubResource("BoxShape3D_ltv6h") + +[node name="@MeshInstance3D@351" type="MeshInstance3D" parent="Jug10" unique_id=1174763966] +cast_shadow = 0 +mesh = SubResource("BoxMesh_18xvr") +surface_material_override/0 = SubResource("StandardMaterial3D_s61py") + +[node name="TraverseLedge" type="StaticBody3D" parent="." unique_id=1582374313 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 13.44, -14.3) +collision_mask = 29 + +[node name="@CollisionShape3D@352" type="CollisionShape3D" parent="TraverseLedge" unique_id=792760997] +shape = SubResource("BoxShape3D_evtfc") + +[node name="@MeshInstance3D@353" type="MeshInstance3D" parent="TraverseLedge" unique_id=1690513687] +mesh = SubResource("BoxMesh_if64h") +surface_material_override/0 = SubResource("StandardMaterial3D_6y2hv") + +[node name="Jug11" type="StaticBody3D" parent="." unique_id=2065399982 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@354" type="CollisionShape3D" parent="Jug11" unique_id=796331554] +shape = SubResource("BoxShape3D_0l0gp") + +[node name="@MeshInstance3D@355" type="MeshInstance3D" parent="Jug11" unique_id=1574364500] +cast_shadow = 0 +mesh = SubResource("BoxMesh_7gbnl") +surface_material_override/0 = SubResource("StandardMaterial3D_4rgqe") + +[node name="Jug12" type="StaticBody3D" parent="." unique_id=426975223 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.8000001, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@356" type="CollisionShape3D" parent="Jug12" unique_id=23199950] +shape = SubResource("BoxShape3D_s8j8s") + +[node name="@MeshInstance3D@357" type="MeshInstance3D" parent="Jug12" unique_id=112421367] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ar6rv") +surface_material_override/0 = SubResource("StandardMaterial3D_h60k6") + +[node name="Jug13" type="StaticBody3D" parent="." unique_id=5314408 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@358" type="CollisionShape3D" parent="Jug13" unique_id=1123032274] +shape = SubResource("BoxShape3D_y1jqa") + +[node name="@MeshInstance3D@359" type="MeshInstance3D" parent="Jug13" unique_id=302350290] +cast_shadow = 0 +mesh = SubResource("BoxMesh_78set") +surface_material_override/0 = SubResource("StandardMaterial3D_qqux8") + +[node name="Jug14" type="StaticBody3D" parent="." unique_id=1267560295 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.6, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@360" type="CollisionShape3D" parent="Jug14" unique_id=460016174] +shape = SubResource("BoxShape3D_mdeb7") + +[node name="@MeshInstance3D@361" type="MeshInstance3D" parent="Jug14" unique_id=283441662] +cast_shadow = 0 +mesh = SubResource("BoxMesh_52pch") +surface_material_override/0 = SubResource("StandardMaterial3D_ww4pb") + +[node name="Jug15" type="StaticBody3D" parent="." unique_id=1408159950 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@362" type="CollisionShape3D" parent="Jug15" unique_id=2036050093] +shape = SubResource("BoxShape3D_klewb") + +[node name="@MeshInstance3D@363" type="MeshInstance3D" parent="Jug15" unique_id=1030546464] +cast_shadow = 0 +mesh = SubResource("BoxMesh_yqjnx") +surface_material_override/0 = SubResource("StandardMaterial3D_3ad1a") + +[node name="Jug16" type="StaticBody3D" parent="." unique_id=777879512 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@364" type="CollisionShape3D" parent="Jug16" unique_id=2136903262] +shape = SubResource("BoxShape3D_dgqrv") + +[node name="@MeshInstance3D@365" type="MeshInstance3D" parent="Jug16" unique_id=392610660] +cast_shadow = 0 +mesh = SubResource("BoxMesh_24mk4") +surface_material_override/0 = SubResource("StandardMaterial3D_4o7go") + +[node name="Jug17" type="StaticBody3D" parent="." unique_id=1312221644 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@366" type="CollisionShape3D" parent="Jug17" unique_id=429251896] +shape = SubResource("BoxShape3D_4xx6y") + +[node name="@MeshInstance3D@367" type="MeshInstance3D" parent="Jug17" unique_id=999359113] +cast_shadow = 0 +mesh = SubResource("BoxMesh_n0mee") +surface_material_override/0 = SubResource("StandardMaterial3D_ecsmt") + +[node name="Jug18" type="StaticBody3D" parent="." unique_id=1643978415 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8000001, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@368" type="CollisionShape3D" parent="Jug18" unique_id=1691215013] +shape = SubResource("BoxShape3D_7h026") + +[node name="@MeshInstance3D@369" type="MeshInstance3D" parent="Jug18" unique_id=341039530] +cast_shadow = 0 +mesh = SubResource("BoxMesh_8ofk5") +surface_material_override/0 = SubResource("StandardMaterial3D_l0lhm") + +[node name="Jug19" type="StaticBody3D" parent="." unique_id=312653350 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.4, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@370" type="CollisionShape3D" parent="Jug19" unique_id=753080439] +shape = SubResource("BoxShape3D_bwmb8") + +[node name="@MeshInstance3D@371" type="MeshInstance3D" parent="Jug19" unique_id=1353224868] +cast_shadow = 0 +mesh = SubResource("BoxMesh_bh5f1") +surface_material_override/0 = SubResource("StandardMaterial3D_u3ojd") + +[node name="Jug20" type="StaticBody3D" parent="." unique_id=1689642479 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 14.9, -14.44) +collision_mask = 29 + +[node name="@CollisionShape3D@372" type="CollisionShape3D" parent="Jug20" unique_id=704337053] +shape = SubResource("BoxShape3D_grkoj") + +[node name="@MeshInstance3D@373" type="MeshInstance3D" parent="Jug20" unique_id=605303790] +cast_shadow = 0 +mesh = SubResource("BoxMesh_awgsr") +surface_material_override/0 = SubResource("StandardMaterial3D_2klpk") + +[node name="Overhang" type="StaticBody3D" parent="." unique_id=1967287828 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 15.7, -13.75) +collision_mask = 29 + +[node name="@CollisionShape3D@374" type="CollisionShape3D" parent="Overhang" unique_id=1452486112] +shape = SubResource("BoxShape3D_l7phy") + +[node name="@MeshInstance3D@375" type="MeshInstance3D" parent="Overhang" unique_id=1655737597] +mesh = SubResource("BoxMesh_uyyuj") +surface_material_override/0 = SubResource("StandardMaterial3D_x8aek") + +[node name="RoofBar" type="StaticBody3D" parent="." unique_id=1650430787 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, 3, 15.2, -14.2) +collision_mask = 29 + +[node name="@CollisionShape3D@376" type="CollisionShape3D" parent="RoofBar" unique_id=1817651914] +shape = SubResource("CylinderShape3D_yitds") + +[node name="@MeshInstance3D@377" type="MeshInstance3D" parent="RoofBar" unique_id=1427637910] +mesh = SubResource("CylinderMesh_dk1wv") +surface_material_override/0 = SubResource("StandardMaterial3D_ppaw7") + +[node name="RoofHanger" type="StaticBody3D" parent="." unique_id=135664304 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8, 15.3125, -14.2) +collision_mask = 29 + +[node name="@CollisionShape3D@378" type="CollisionShape3D" parent="RoofHanger" unique_id=492817310] +shape = SubResource("CylinderShape3D_lkxds") + +[node name="@MeshInstance3D@379" type="MeshInstance3D" parent="RoofHanger" unique_id=484128320] +mesh = SubResource("CylinderMesh_bxxsu") +surface_material_override/0 = SubResource("StandardMaterial3D_kuk8x") + +[node name="RoofHanger2" type="StaticBody3D" parent="." unique_id=1176171070 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.2, 15.3125, -14.2) +collision_mask = 29 + +[node name="@CollisionShape3D@380" type="CollisionShape3D" parent="RoofHanger2" unique_id=1918797950] +shape = SubResource("CylinderShape3D_x2v57") + +[node name="@MeshInstance3D@381" type="MeshInstance3D" parent="RoofHanger2" unique_id=499151533] +mesh = SubResource("CylinderMesh_j4r6f") +surface_material_override/0 = SubResource("StandardMaterial3D_7moyc") + +[node name="RoofBar2" type="StaticBody3D" parent="." unique_id=1231849694 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, 3, 15.2, -13.7) +collision_mask = 29 + +[node name="@CollisionShape3D@382" type="CollisionShape3D" parent="RoofBar2" unique_id=1631557012] +shape = SubResource("CylinderShape3D_y2qxs") + +[node name="@MeshInstance3D@383" type="MeshInstance3D" parent="RoofBar2" unique_id=691024600] +mesh = SubResource("CylinderMesh_4df0i") +surface_material_override/0 = SubResource("StandardMaterial3D_qowlk") + +[node name="RoofHanger3" type="StaticBody3D" parent="." unique_id=817352191 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8, 15.3125, -13.7) +collision_mask = 29 + +[node name="@CollisionShape3D@384" type="CollisionShape3D" parent="RoofHanger3" unique_id=1550144507] +shape = SubResource("CylinderShape3D_5lnmf") + +[node name="@MeshInstance3D@385" type="MeshInstance3D" parent="RoofHanger3" unique_id=253818330] +mesh = SubResource("CylinderMesh_co83d") +surface_material_override/0 = SubResource("StandardMaterial3D_v7bvj") + +[node name="RoofHanger4" type="StaticBody3D" parent="." unique_id=1150621910 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.2, 15.3125, -13.7) +collision_mask = 29 + +[node name="@CollisionShape3D@386" type="CollisionShape3D" parent="RoofHanger4" unique_id=1714234674] +shape = SubResource("CylinderShape3D_v6d1s") + +[node name="@MeshInstance3D@387" type="MeshInstance3D" parent="RoofHanger4" unique_id=332451944] +mesh = SubResource("CylinderMesh_jcwje") +surface_material_override/0 = SubResource("StandardMaterial3D_n4kl1") + +[node name="RoofBar3" type="StaticBody3D" parent="." unique_id=1630699731 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, 3, 15.2, -13.2) +collision_mask = 29 + +[node name="@CollisionShape3D@388" type="CollisionShape3D" parent="RoofBar3" unique_id=1487227658] +shape = SubResource("CylinderShape3D_jwmqq") + +[node name="@MeshInstance3D@389" type="MeshInstance3D" parent="RoofBar3" unique_id=296231217] +mesh = SubResource("CylinderMesh_can5r") +surface_material_override/0 = SubResource("StandardMaterial3D_rvmul") + +[node name="RoofHanger5" type="StaticBody3D" parent="." unique_id=1915009629 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8, 15.3125, -13.2) +collision_mask = 29 + +[node name="@CollisionShape3D@390" type="CollisionShape3D" parent="RoofHanger5" unique_id=527231793] +shape = SubResource("CylinderShape3D_wmmro") + +[node name="@MeshInstance3D@391" type="MeshInstance3D" parent="RoofHanger5" unique_id=689156782] +mesh = SubResource("CylinderMesh_epe4p") +surface_material_override/0 = SubResource("StandardMaterial3D_4vgr2") + +[node name="RoofHanger6" type="StaticBody3D" parent="." unique_id=1273886794 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.2, 15.3125, -13.2) +collision_mask = 29 + +[node name="@CollisionShape3D@392" type="CollisionShape3D" parent="RoofHanger6" unique_id=140335593] +shape = SubResource("CylinderShape3D_rxpqe") + +[node name="@MeshInstance3D@393" type="MeshInstance3D" parent="RoofHanger6" unique_id=177714256] +mesh = SubResource("CylinderMesh_pb5ff") +surface_material_override/0 = SubResource("StandardMaterial3D_nmg08") + +[node name="Jug21" type="StaticBody3D" parent="." unique_id=48487907 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 15.65, -12.94) +collision_mask = 29 + +[node name="@CollisionShape3D@394" type="CollisionShape3D" parent="Jug21" unique_id=569607103] +shape = SubResource("BoxShape3D_lvrxu") + +[node name="@MeshInstance3D@395" type="MeshInstance3D" parent="Jug21" unique_id=1546919] +cast_shadow = 0 +mesh = SubResource("BoxMesh_d4v0o") +surface_material_override/0 = SubResource("StandardMaterial3D_i45tp") + +[node name="LipBar" type="StaticBody3D" parent="." unique_id=2059940914 groups=["crag_route"]] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, 3, 16.03, -13.05) +collision_mask = 29 + +[node name="@CollisionShape3D@396" type="CollisionShape3D" parent="LipBar" unique_id=77440818] +shape = SubResource("CylinderShape3D_mnhej") + +[node name="@MeshInstance3D@397" type="MeshInstance3D" parent="LipBar" unique_id=621258043] +mesh = SubResource("CylinderMesh_tfijq") +surface_material_override/0 = SubResource("StandardMaterial3D_xdco5") + +[node name="FlagPole2" type="StaticBody3D" parent="." unique_id=94209726 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.3, 17.2, -15.2) +collision_mask = 29 + +[node name="@CollisionShape3D@398" type="CollisionShape3D" parent="FlagPole2" unique_id=457462667] +shape = SubResource("CylinderShape3D_mtk38") + +[node name="@MeshInstance3D@399" type="MeshInstance3D" parent="FlagPole2" unique_id=403058557] +mesh = SubResource("CylinderMesh_aidgg") +surface_material_override/0 = SubResource("StandardMaterial3D_he3wn") + +[node name="Flag2" type="StaticBody3D" parent="." unique_id=192707682] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.3, 18.15, -14.82) +collision_mask = 29 + +[node name="@CollisionShape3D@400" type="CollisionShape3D" parent="Flag2" unique_id=824060385] +shape = SubResource("BoxShape3D_qb6fu") + +[node name="@MeshInstance3D@401" type="MeshInstance3D" parent="Flag2" unique_id=329664953] +cast_shadow = 0 +mesh = SubResource("BoxMesh_cs7ax") +surface_material_override/0 = SubResource("StandardMaterial3D_ukfby") + +[node name="Sign2" type="Label3D" parent="." unique_id=747545517] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.3, 18.8, -15.2) +pixel_size = 0.003 +billboard = 2 +text = "16 m" +font_size = 96 + +[node name="Jug22" type="StaticBody3D" parent="." unique_id=2141116927 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 16.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@402" type="CollisionShape3D" parent="Jug22" unique_id=1145894268] +shape = SubResource("BoxShape3D_mmli7") + +[node name="@MeshInstance3D@403" type="MeshInstance3D" parent="Jug22" unique_id=854380395] +cast_shadow = 0 +mesh = SubResource("BoxMesh_2y0hp") +surface_material_override/0 = SubResource("StandardMaterial3D_3d1l5") + +[node name="Jug23" type="StaticBody3D" parent="." unique_id=644946404 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 16.95, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@404" type="CollisionShape3D" parent="Jug23" unique_id=582744872] +shape = SubResource("BoxShape3D_b8pa8") + +[node name="@MeshInstance3D@405" type="MeshInstance3D" parent="Jug23" unique_id=335149601] +cast_shadow = 0 +mesh = SubResource("BoxMesh_jnli2") +surface_material_override/0 = SubResource("StandardMaterial3D_k4jqh") + +[node name="Jug24" type="StaticBody3D" parent="." unique_id=518019640 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 17.2, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@406" type="CollisionShape3D" parent="Jug24" unique_id=1278673063] +shape = SubResource("BoxShape3D_0nr71") + +[node name="@MeshInstance3D@407" type="MeshInstance3D" parent="Jug24" unique_id=191031339] +cast_shadow = 0 +mesh = SubResource("BoxMesh_g274r") +surface_material_override/0 = SubResource("StandardMaterial3D_o8ywk") + +[node name="Jug25" type="StaticBody3D" parent="." unique_id=1232988542 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 17.45, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@408" type="CollisionShape3D" parent="Jug25" unique_id=84213873] +shape = SubResource("BoxShape3D_hvvw1") + +[node name="@MeshInstance3D@409" type="MeshInstance3D" parent="Jug25" unique_id=476556163] +cast_shadow = 0 +mesh = SubResource("BoxMesh_mr4xe") +surface_material_override/0 = SubResource("StandardMaterial3D_w38s8") + +[node name="Jug26" type="StaticBody3D" parent="." unique_id=1865627302 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 17.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@410" type="CollisionShape3D" parent="Jug26" unique_id=1214342884] +shape = SubResource("BoxShape3D_e43uw") + +[node name="@MeshInstance3D@411" type="MeshInstance3D" parent="Jug26" unique_id=919255440] +cast_shadow = 0 +mesh = SubResource("BoxMesh_auv0w") +surface_material_override/0 = SubResource("StandardMaterial3D_2488n") + +[node name="Jug27" type="StaticBody3D" parent="." unique_id=1097177823 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 17.95, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@412" type="CollisionShape3D" parent="Jug27" unique_id=538272960] +shape = SubResource("BoxShape3D_wqnn4") + +[node name="@MeshInstance3D@413" type="MeshInstance3D" parent="Jug27" unique_id=1544351155] +cast_shadow = 0 +mesh = SubResource("BoxMesh_16meo") +surface_material_override/0 = SubResource("StandardMaterial3D_d771p") + +[node name="Jug28" type="StaticBody3D" parent="." unique_id=1335837585 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 18.2, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@414" type="CollisionShape3D" parent="Jug28" unique_id=1510624293] +shape = SubResource("BoxShape3D_h6ptw") + +[node name="@MeshInstance3D@415" type="MeshInstance3D" parent="Jug28" unique_id=1672525413] +cast_shadow = 0 +mesh = SubResource("BoxMesh_4w661") +surface_material_override/0 = SubResource("StandardMaterial3D_syics") + +[node name="Jug29" type="StaticBody3D" parent="." unique_id=397220043 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 18.45, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@416" type="CollisionShape3D" parent="Jug29" unique_id=1205633556] +shape = SubResource("BoxShape3D_s035j") + +[node name="@MeshInstance3D@417" type="MeshInstance3D" parent="Jug29" unique_id=1428945771] +cast_shadow = 0 +mesh = SubResource("BoxMesh_5q3vp") +surface_material_override/0 = SubResource("StandardMaterial3D_bstld") + +[node name="Jug30" type="StaticBody3D" parent="." unique_id=1384719571 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 18.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@418" type="CollisionShape3D" parent="Jug30" unique_id=317024738] +shape = SubResource("BoxShape3D_1wtn2") + +[node name="@MeshInstance3D@419" type="MeshInstance3D" parent="Jug30" unique_id=2004088661] +cast_shadow = 0 +mesh = SubResource("BoxMesh_w0y04") +surface_material_override/0 = SubResource("StandardMaterial3D_rkbjq") + +[node name="Jug31" type="StaticBody3D" parent="." unique_id=577254511 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 18.95, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@420" type="CollisionShape3D" parent="Jug31" unique_id=1238860828] +shape = SubResource("BoxShape3D_idpor") + +[node name="@MeshInstance3D@421" type="MeshInstance3D" parent="Jug31" unique_id=19245332] +cast_shadow = 0 +mesh = SubResource("BoxMesh_a1qte") +surface_material_override/0 = SubResource("StandardMaterial3D_u5v7o") + +[node name="Jug32" type="StaticBody3D" parent="." unique_id=1731787528 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 19.2, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@422" type="CollisionShape3D" parent="Jug32" unique_id=952789223] +shape = SubResource("BoxShape3D_hoqil") + +[node name="@MeshInstance3D@423" type="MeshInstance3D" parent="Jug32" unique_id=1439999266] +cast_shadow = 0 +mesh = SubResource("BoxMesh_qwv7c") +surface_material_override/0 = SubResource("StandardMaterial3D_1at23") + +[node name="Jug33" type="StaticBody3D" parent="." unique_id=2014014866 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 19.45, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@424" type="CollisionShape3D" parent="Jug33" unique_id=1502625802] +shape = SubResource("BoxShape3D_t1fjj") + +[node name="@MeshInstance3D@425" type="MeshInstance3D" parent="Jug33" unique_id=1423164028] +cast_shadow = 0 +mesh = SubResource("BoxMesh_whitw") +surface_material_override/0 = SubResource("StandardMaterial3D_q2f63") + +[node name="Jug34" type="StaticBody3D" parent="." unique_id=1031208551 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 19.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@426" type="CollisionShape3D" parent="Jug34" unique_id=330967495] +shape = SubResource("BoxShape3D_g5u3u") + +[node name="@MeshInstance3D@427" type="MeshInstance3D" parent="Jug34" unique_id=636605156] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ie35i") +surface_material_override/0 = SubResource("StandardMaterial3D_csv88") + +[node name="Jug35" type="StaticBody3D" parent="." unique_id=317603975 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 19.95, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@428" type="CollisionShape3D" parent="Jug35" unique_id=1000899766] +shape = SubResource("BoxShape3D_islyj") + +[node name="@MeshInstance3D@429" type="MeshInstance3D" parent="Jug35" unique_id=431187547] +cast_shadow = 0 +mesh = SubResource("BoxMesh_dcb7d") +surface_material_override/0 = SubResource("StandardMaterial3D_0iy7a") + +[node name="Jug36" type="StaticBody3D" parent="." unique_id=1199926359 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 20.2, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@430" type="CollisionShape3D" parent="Jug36" unique_id=15166159] +shape = SubResource("BoxShape3D_dermq") + +[node name="@MeshInstance3D@431" type="MeshInstance3D" parent="Jug36" unique_id=947777893] +cast_shadow = 0 +mesh = SubResource("BoxMesh_l0hwr") +surface_material_override/0 = SubResource("StandardMaterial3D_pum65") + +[node name="Jug37" type="StaticBody3D" parent="." unique_id=253525000 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 20.45, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@432" type="CollisionShape3D" parent="Jug37" unique_id=1376352719] +shape = SubResource("BoxShape3D_2qnh6") + +[node name="@MeshInstance3D@433" type="MeshInstance3D" parent="Jug37" unique_id=975326289] +cast_shadow = 0 +mesh = SubResource("BoxMesh_bjrgp") +surface_material_override/0 = SubResource("StandardMaterial3D_7h0ew") + +[node name="Jug38" type="StaticBody3D" parent="." unique_id=1223765403 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 20.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@434" type="CollisionShape3D" parent="Jug38" unique_id=1130277911] +shape = SubResource("BoxShape3D_83tcd") + +[node name="@MeshInstance3D@435" type="MeshInstance3D" parent="Jug38" unique_id=1055397612] +cast_shadow = 0 +mesh = SubResource("BoxMesh_e1e2f") +surface_material_override/0 = SubResource("StandardMaterial3D_bkcg2") + +[node name="Jug39" type="StaticBody3D" parent="." unique_id=1242979462 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 20.95, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@436" type="CollisionShape3D" parent="Jug39" unique_id=1881245107] +shape = SubResource("BoxShape3D_xm7q3") + +[node name="@MeshInstance3D@437" type="MeshInstance3D" parent="Jug39" unique_id=1871895760] +cast_shadow = 0 +mesh = SubResource("BoxMesh_whfon") +surface_material_override/0 = SubResource("StandardMaterial3D_sbdvc") + +[node name="Jug40" type="StaticBody3D" parent="." unique_id=441885985 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 21.2, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@438" type="CollisionShape3D" parent="Jug40" unique_id=1763499456] +shape = SubResource("BoxShape3D_aqayh") + +[node name="@MeshInstance3D@439" type="MeshInstance3D" parent="Jug40" unique_id=1609063138] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ga2mi") +surface_material_override/0 = SubResource("StandardMaterial3D_itf5h") + +[node name="Jug41" type="StaticBody3D" parent="." unique_id=1270570286 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 21.45, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@440" type="CollisionShape3D" parent="Jug41" unique_id=739416455] +shape = SubResource("BoxShape3D_w1mrc") + +[node name="@MeshInstance3D@441" type="MeshInstance3D" parent="Jug41" unique_id=1658710138] +cast_shadow = 0 +mesh = SubResource("BoxMesh_clgjp") +surface_material_override/0 = SubResource("StandardMaterial3D_ine53") + +[node name="Jug42" type="StaticBody3D" parent="." unique_id=128224866 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 21.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@442" type="CollisionShape3D" parent="Jug42" unique_id=1602630710] +shape = SubResource("BoxShape3D_hj3gq") + +[node name="@MeshInstance3D@443" type="MeshInstance3D" parent="Jug42" unique_id=679862203] +cast_shadow = 0 +mesh = SubResource("BoxMesh_asqd4") +surface_material_override/0 = SubResource("StandardMaterial3D_nyxvq") + +[node name="Jug43" type="StaticBody3D" parent="." unique_id=1491039423 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 21.95, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@444" type="CollisionShape3D" parent="Jug43" unique_id=1729460201] +shape = SubResource("BoxShape3D_fp6bx") + +[node name="@MeshInstance3D@445" type="MeshInstance3D" parent="Jug43" unique_id=2036941156] +cast_shadow = 0 +mesh = SubResource("BoxMesh_6diat") +surface_material_override/0 = SubResource("StandardMaterial3D_plo15") + +[node name="Jug44" type="StaticBody3D" parent="." unique_id=1886523639 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 22.2, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@446" type="CollisionShape3D" parent="Jug44" unique_id=1867812673] +shape = SubResource("BoxShape3D_k4qn0") + +[node name="@MeshInstance3D@447" type="MeshInstance3D" parent="Jug44" unique_id=539517899] +cast_shadow = 0 +mesh = SubResource("BoxMesh_jkm0q") +surface_material_override/0 = SubResource("StandardMaterial3D_roxhh") + +[node name="Jug45" type="StaticBody3D" parent="." unique_id=104329036 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 22.45, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@448" type="CollisionShape3D" parent="Jug45" unique_id=927383147] +shape = SubResource("BoxShape3D_odd27") + +[node name="@MeshInstance3D@449" type="MeshInstance3D" parent="Jug45" unique_id=1967600621] +cast_shadow = 0 +mesh = SubResource("BoxMesh_la7oa") +surface_material_override/0 = SubResource("StandardMaterial3D_se51u") + +[node name="Jug46" type="StaticBody3D" parent="." unique_id=94425954 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 22.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@450" type="CollisionShape3D" parent="Jug46" unique_id=66293700] +shape = SubResource("BoxShape3D_6wc80") + +[node name="@MeshInstance3D@451" type="MeshInstance3D" parent="Jug46" unique_id=848509859] +cast_shadow = 0 +mesh = SubResource("BoxMesh_fbdvl") +surface_material_override/0 = SubResource("StandardMaterial3D_atyg4") + +[node name="Jug47" type="StaticBody3D" parent="." unique_id=327811174 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 22.95, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@452" type="CollisionShape3D" parent="Jug47" unique_id=1145964283] +shape = SubResource("BoxShape3D_eipaw") + +[node name="@MeshInstance3D@453" type="MeshInstance3D" parent="Jug47" unique_id=1093524275] +cast_shadow = 0 +mesh = SubResource("BoxMesh_6sy27") +surface_material_override/0 = SubResource("StandardMaterial3D_024ly") + +[node name="Jug48" type="StaticBody3D" parent="." unique_id=1441588635 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 23.2, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@454" type="CollisionShape3D" parent="Jug48" unique_id=768267092] +shape = SubResource("BoxShape3D_3oy37") + +[node name="@MeshInstance3D@455" type="MeshInstance3D" parent="Jug48" unique_id=329639396] +cast_shadow = 0 +mesh = SubResource("BoxMesh_cnn6b") +surface_material_override/0 = SubResource("StandardMaterial3D_13dpv") + +[node name="Jug49" type="StaticBody3D" parent="." unique_id=796772792 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 23.45, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@456" type="CollisionShape3D" parent="Jug49" unique_id=1031364039] +shape = SubResource("BoxShape3D_wmt5p") + +[node name="@MeshInstance3D@457" type="MeshInstance3D" parent="Jug49" unique_id=383751654] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ne5y3") +surface_material_override/0 = SubResource("StandardMaterial3D_7i8c5") + +[node name="Jug50" type="StaticBody3D" parent="." unique_id=1671907913 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 23.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@458" type="CollisionShape3D" parent="Jug50" unique_id=1412305069] +shape = SubResource("BoxShape3D_uyof5") + +[node name="@MeshInstance3D@459" type="MeshInstance3D" parent="Jug50" unique_id=39589416] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ybn7o") +surface_material_override/0 = SubResource("StandardMaterial3D_jy4nf") + +[node name="Jug51" type="StaticBody3D" parent="." unique_id=1695936173 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 23.95, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@460" type="CollisionShape3D" parent="Jug51" unique_id=1025460030] +shape = SubResource("BoxShape3D_2tatq") + +[node name="@MeshInstance3D@461" type="MeshInstance3D" parent="Jug51" unique_id=1952434969] +cast_shadow = 0 +mesh = SubResource("BoxMesh_tivb0") +surface_material_override/0 = SubResource("StandardMaterial3D_fvrgo") + +[node name="Jug52" type="StaticBody3D" parent="." unique_id=923539569 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 24.2, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@462" type="CollisionShape3D" parent="Jug52" unique_id=180638940] +shape = SubResource("BoxShape3D_rqc2s") + +[node name="@MeshInstance3D@463" type="MeshInstance3D" parent="Jug52" unique_id=1307695640] +cast_shadow = 0 +mesh = SubResource("BoxMesh_0fl00") +surface_material_override/0 = SubResource("StandardMaterial3D_6o4bt") + +[node name="Jug53" type="StaticBody3D" parent="." unique_id=820127328 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 24.45, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@464" type="CollisionShape3D" parent="Jug53" unique_id=360749710] +shape = SubResource("BoxShape3D_bsuq8") + +[node name="@MeshInstance3D@465" type="MeshInstance3D" parent="Jug53" unique_id=806991926] +cast_shadow = 0 +mesh = SubResource("BoxMesh_el71b") +surface_material_override/0 = SubResource("StandardMaterial3D_dahde") + +[node name="Jug54" type="StaticBody3D" parent="." unique_id=1074536771 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 24.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@466" type="CollisionShape3D" parent="Jug54" unique_id=506635474] +shape = SubResource("BoxShape3D_5wvht") + +[node name="@MeshInstance3D@467" type="MeshInstance3D" parent="Jug54" unique_id=190172783] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ud68b") +surface_material_override/0 = SubResource("StandardMaterial3D_3vo2d") + +[node name="Jug55" type="StaticBody3D" parent="." unique_id=2104867439 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 24.95, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@468" type="CollisionShape3D" parent="Jug55" unique_id=1964846824] +shape = SubResource("BoxShape3D_qhvrd") + +[node name="@MeshInstance3D@469" type="MeshInstance3D" parent="Jug55" unique_id=656528302] +cast_shadow = 0 +mesh = SubResource("BoxMesh_0gpv5") +surface_material_override/0 = SubResource("StandardMaterial3D_cd373") + +[node name="Jug56" type="StaticBody3D" parent="." unique_id=1212288509 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 25.2, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@470" type="CollisionShape3D" parent="Jug56" unique_id=893603220] +shape = SubResource("BoxShape3D_imp1f") + +[node name="@MeshInstance3D@471" type="MeshInstance3D" parent="Jug56" unique_id=2059646910] +cast_shadow = 0 +mesh = SubResource("BoxMesh_7mf3n") +surface_material_override/0 = SubResource("StandardMaterial3D_5miq5") + +[node name="Jug57" type="StaticBody3D" parent="." unique_id=1876057974 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39, 25.45, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@472" type="CollisionShape3D" parent="Jug57" unique_id=1795492361] +shape = SubResource("BoxShape3D_2qnwn") + +[node name="@MeshInstance3D@473" type="MeshInstance3D" parent="Jug57" unique_id=1832406686] +cast_shadow = 0 +mesh = SubResource("BoxMesh_ojqp6") +surface_material_override/0 = SubResource("StandardMaterial3D_06m0l") + +[node name="Jug58" type="StaticBody3D" parent="." unique_id=1258372298 groups=["crag_route"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, 25.7, -16.5) +collision_mask = 29 + +[node name="@CollisionShape3D@474" type="CollisionShape3D" parent="Jug58" unique_id=342140099] +shape = SubResource("BoxShape3D_3fe6q") + +[node name="@MeshInstance3D@475" type="MeshInstance3D" parent="Jug58" unique_id=281899515] +cast_shadow = 0 +mesh = SubResource("BoxMesh_rcmyd") +surface_material_override/0 = SubResource("StandardMaterial3D_r17t6") + +[node name="Sign3" type="Label3D" parent="." unique_id=2031678765] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4, 27.6, -18.5) +pixel_size = 0.004 +billboard = 2 +text = "Summit 26 m" +font_size = 96 + +[node name="Trunk" type="StaticBody3D" parent="." unique_id=438321458] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 1.8000001, -11.5) +collision_mask = 29 + +[node name="@CollisionShape3D@476" type="CollisionShape3D" parent="Trunk" unique_id=1549330152] +shape = SubResource("CylinderShape3D_qwxso") + +[node name="@MeshInstance3D@477" type="MeshInstance3D" parent="Trunk" unique_id=1421742160] +mesh = SubResource("CylinderMesh_ugobg") +surface_material_override/0 = SubResource("StandardMaterial3D_140bl") + +[node name="Canopy" type="StaticBody3D" parent="." unique_id=1599018589 groups=["no_grab"]] +transform = Transform3D(-0.9899925, 0, -0.14112, 0, 1, 0, 0.14112, 0, -0.9899925, -10, 4.5, -11.5) +collision_mask = 29 + +[node name="@CollisionShape3D@478" type="CollisionShape3D" parent="Canopy" unique_id=575889245] +shape = SubResource("BoxShape3D_8ab1d") + +[node name="@MeshInstance3D@479" type="MeshInstance3D" parent="Canopy" unique_id=1173340651] +mesh = SubResource("BoxMesh_2wr4d") +surface_material_override/0 = SubResource("StandardMaterial3D_ncsok") + +[node name="Trunk2" type="StaticBody3D" parent="." unique_id=880090898] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 2.1000001, -12) +collision_mask = 29 + +[node name="@CollisionShape3D@480" type="CollisionShape3D" parent="Trunk2" unique_id=747170877] +shape = SubResource("CylinderShape3D_f8dqw") + +[node name="@MeshInstance3D@481" type="MeshInstance3D" parent="Trunk2" unique_id=1387877886] +mesh = SubResource("CylinderMesh_bo7gm") +surface_material_override/0 = SubResource("StandardMaterial3D_3dqwx") + +[node name="Canopy2" type="StaticBody3D" parent="." unique_id=1059885660 groups=["no_grab"]] +transform = Transform3D(-0.99996465, 0, -0.008407343, 0, 1, 0, 0.008407343, 0, -0.99996465, 10.5, 5.25, -12) +collision_mask = 29 + +[node name="@CollisionShape3D@482" type="CollisionShape3D" parent="Canopy2" unique_id=413692852] +shape = SubResource("BoxShape3D_a56d3") + +[node name="@MeshInstance3D@483" type="MeshInstance3D" parent="Canopy2" unique_id=656246607] +mesh = SubResource("BoxMesh_pnjao") +surface_material_override/0 = SubResource("StandardMaterial3D_qjpjn") + +[node name="Trunk3" type="StaticBody3D" parent="." unique_id=81634232] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12, 1.6500001, -17) +collision_mask = 29 + +[node name="@CollisionShape3D@484" type="CollisionShape3D" parent="Trunk3" unique_id=401136320] +shape = SubResource("CylinderShape3D_c37dw") + +[node name="@MeshInstance3D@485" type="MeshInstance3D" parent="Trunk3" unique_id=945446728] +mesh = SubResource("CylinderMesh_kxpiu") +surface_material_override/0 = SubResource("StandardMaterial3D_62j5g") + +[node name="Canopy3" type="StaticBody3D" parent="." unique_id=1043981065 groups=["no_grab"]] +transform = Transform3D(-0.8967584, 0, 0.44252056, 0, 1, 0, -0.44252056, 0, -0.8967584, -12, 4.125, -17) +collision_mask = 29 + +[node name="@CollisionShape3D@486" type="CollisionShape3D" parent="Canopy3" unique_id=1925018285] +shape = SubResource("BoxShape3D_st8ea") + +[node name="@MeshInstance3D@487" type="MeshInstance3D" parent="Canopy3" unique_id=802817891] +mesh = SubResource("BoxMesh_3ponm") +surface_material_override/0 = SubResource("StandardMaterial3D_vq46m") + +[node name="Trunk4" type="StaticBody3D" parent="." unique_id=646253097] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 1.95, -18) +collision_mask = 29 + +[node name="@CollisionShape3D@488" type="CollisionShape3D" parent="Trunk4" unique_id=1304252723] +shape = SubResource("CylinderShape3D_fv3e7") + +[node name="@MeshInstance3D@489" type="MeshInstance3D" parent="Trunk4" unique_id=1958557818] +mesh = SubResource("CylinderMesh_wa46t") +surface_material_override/0 = SubResource("StandardMaterial3D_nyum8") + +[node name="Canopy4" type="StaticBody3D" parent="." unique_id=388698265 groups=["no_grab"]] +transform = Transform3D(-0.8967584, 0, -0.44252056, 0, 1, 0, 0.44252056, 0, -0.8967584, 12, 4.875, -18) +collision_mask = 29 + +[node name="@CollisionShape3D@490" type="CollisionShape3D" parent="Canopy4" unique_id=1704079001] +shape = SubResource("BoxShape3D_xev1y") + +[node name="@MeshInstance3D@491" type="MeshInstance3D" parent="Canopy4" unique_id=3253471] +mesh = SubResource("BoxMesh_26gui") +surface_material_override/0 = SubResource("StandardMaterial3D_2hyrf") + +[node name="PillarWest" type="StaticBody3D" parent="." unique_id=2099614124] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 4.5, -10.5) +collision_mask = 29 + +[node name="@CollisionShape3D@492" type="CollisionShape3D" parent="PillarWest" unique_id=1931638471] +shape = SubResource("CylinderShape3D_hayo6") + +[node name="@MeshInstance3D@493" type="MeshInstance3D" parent="PillarWest" unique_id=1407300152] +mesh = SubResource("CylinderMesh_f3vti") +surface_material_override/0 = SubResource("StandardMaterial3D_45bj4") + +[node name="PillarEast" type="StaticBody3D" parent="." unique_id=1175086188] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 6, -10) +collision_mask = 29 + +[node name="@CollisionShape3D@494" type="CollisionShape3D" parent="PillarEast" unique_id=919045198] +shape = SubResource("CylinderShape3D_im5ar") + +[node name="@MeshInstance3D@495" type="MeshInstance3D" parent="PillarEast" unique_id=962740666] +mesh = SubResource("CylinderMesh_o6nli") +surface_material_override/0 = SubResource("StandardMaterial3D_h84kv") + +[node name="Sign4" type="Label3D" parent="." unique_id=440634046] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.6, 2.6, -7.6) +pixel_size = 0.003 +billboard = 2 +text = "The Crag — 26 m" +font_size = 96 + +[node name="CragMarker" type="Node3D" parent="." unique_id=1762871811 instance=ExtResource("2_v0m8b")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -9.5) +script = ExtResource("3_s3tp4") +MarkerLabel = "Crag" + +[node name="SummitCrate0" type="RigidBody3D" parent="." unique_id=85171181 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 26.2, -17.2) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_h2t7n") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@496" type="CollisionShape3D" parent="SummitCrate0" unique_id=1356056489] +shape = SubResource("BoxShape3D_hk37o") + +[node name="@MeshInstance3D@497" type="MeshInstance3D" parent="SummitCrate0" unique_id=67417815] +mesh = SubResource("BoxMesh_bjf5g") +surface_material_override/0 = SubResource("StandardMaterial3D_wjv5s") + +[node name="SummitCrate1" type="RigidBody3D" parent="." unique_id=96902935 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 26.2, -17.2) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_5pbfj") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@498" type="CollisionShape3D" parent="SummitCrate1" unique_id=318570046] +shape = SubResource("BoxShape3D_cf25r") + +[node name="@MeshInstance3D@499" type="MeshInstance3D" parent="SummitCrate1" unique_id=1937410316] +mesh = SubResource("BoxMesh_t7ctr") +surface_material_override/0 = SubResource("StandardMaterial3D_lcsba") + +[node name="SummitCrate2" type="RigidBody3D" parent="." unique_id=1954960397 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 26.2, -17.2) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_urj8c") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@500" type="CollisionShape3D" parent="SummitCrate2" unique_id=2014584822] +shape = SubResource("BoxShape3D_8ywpv") + +[node name="@MeshInstance3D@501" type="MeshInstance3D" parent="SummitCrate2" unique_id=579567530] +mesh = SubResource("BoxMesh_4p830") +surface_material_override/0 = SubResource("StandardMaterial3D_8t4uu") + +[node name="SummitBarrel" type="RigidBody3D" parent="." unique_id=1300694748 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8, 26.425, -18.8) +collision_mask = 29 +mass = 12.0 +physics_material_override = SubResource("PhysicsMaterial_84p2p") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@502" type="CollisionShape3D" parent="SummitBarrel" unique_id=1397423338] +shape = SubResource("CylinderShape3D_w7l24") + +[node name="@MeshInstance3D@503" type="MeshInstance3D" parent="SummitBarrel" unique_id=1760476190] +mesh = SubResource("CylinderMesh_vi2b5") +surface_material_override/0 = SubResource("StandardMaterial3D_d4e40") + +[node name="SummitBall" type="RigidBody3D" parent="." unique_id=2129980803 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.6, 26.15, -18.4) +collision_mask = 29 +mass = 1.5 +physics_material_override = SubResource("PhysicsMaterial_te4hh") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@504" type="CollisionShape3D" parent="SummitBall" unique_id=1447805651] +shape = SubResource("SphereShape3D_4otvp") + +[node name="@MeshInstance3D@505" type="MeshInstance3D" parent="SummitBall" unique_id=342614525] +mesh = SubResource("SphereMesh_yponk") +surface_material_override/0 = SubResource("StandardMaterial3D_f5h4v") + +[node name="SummitPlank" type="RigidBody3D" parent="." unique_id=2137241573 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.4, 26.02, -18.8) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_ficvs") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@506" type="CollisionShape3D" parent="SummitPlank" unique_id=618173472] +shape = SubResource("BoxShape3D_30sv5") + +[node name="@MeshInstance3D@507" type="MeshInstance3D" parent="SummitPlank" unique_id=622627070] +mesh = SubResource("BoxMesh_vev5g") +surface_material_override/0 = SubResource("StandardMaterial3D_th4vx") diff --git a/scenes/maps/playground.tscn b/scenes/maps/playground.tscn new file mode 100644 index 0000000..41ef0d3 --- /dev/null +++ b/scenes/maps/playground.tscn @@ -0,0 +1,2264 @@ +[gd_scene format=3] + +[ext_resource type="Script" path="res://scripts/Playground.cs" id="1"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_4dhe6"] +size = Vector3(1.2, 0.3, 1.2) + +[sub_resource type="BoxMesh" id="BoxMesh_5hicw"] +size = Vector3(1.2, 0.3, 1.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xxtkw"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_rddl2"] +size = Vector3(1.2, 0.6, 1.2) + +[sub_resource type="BoxMesh" id="BoxMesh_xw4wq"] +size = Vector3(1.2, 0.6, 1.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_050xr"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_hwtpv"] +size = Vector3(1.2, 0.9, 1.2) + +[sub_resource type="BoxMesh" id="BoxMesh_7n6l4"] +size = Vector3(1.2, 0.9, 1.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_snwvs"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_kms2k"] +size = Vector3(1.2, 1.2, 1.2) + +[sub_resource type="BoxMesh" id="BoxMesh_2r3eo"] +size = Vector3(1.2, 1.2, 1.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_brwlm"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_yubad"] +size = Vector3(1.2, 1.5, 1.2) + +[sub_resource type="BoxMesh" id="BoxMesh_ri6b7"] +size = Vector3(1.2, 1.5, 1.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m6rps"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ov8qe"] +size = Vector3(3, 1, 3) + +[sub_resource type="BoxMesh" id="BoxMesh_x453x"] +size = Vector3(3, 1, 3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jkr81"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_omqb8"] +size = Vector3(1.2, 0.17, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_ugi88"] +size = Vector3(1.2, 0.17, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fk7ew"] +albedo_color = Color(0.658, 0.658, 0.64000005, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_7iiy4"] +size = Vector3(1.2, 0.34, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_g5lew"] +size = Vector3(1.2, 0.34, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_iu1ix"] +albedo_color = Color(0.658, 0.658, 0.64000005, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_dep6j"] +size = Vector3(1.2, 0.51, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_r2bbi"] +size = Vector3(1.2, 0.51, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xdwkp"] +albedo_color = Color(0.658, 0.658, 0.64000005, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_tvwdx"] +size = Vector3(1.2, 0.68, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_pxm47"] +size = Vector3(1.2, 0.68, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mo4la"] +albedo_color = Color(0.658, 0.658, 0.64000005, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_a72v8"] +size = Vector3(1.2, 0.85, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_2fuex"] +size = Vector3(1.2, 0.85, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wku2t"] +albedo_color = Color(0.658, 0.658, 0.64000005, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_jp1lm"] +size = Vector3(1.2, 0.1, 3.236068) + +[sub_resource type="BoxMesh" id="BoxMesh_oen35"] +size = Vector3(1.2, 0.1, 3.236068) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k3tyx"] +albedo_color = Color(0.35, 0.6, 0.35, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_43gh8"] +size = Vector3(1.2, 0.1, 1.5557239) + +[sub_resource type="BoxMesh" id="BoxMesh_po2hk"] +size = Vector3(1.2, 0.1, 1.5557239) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tre4p"] +albedo_color = Color(0.7, 0.25, 0.2, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_facsp"] +size = Vector3(1.5, 2.4, 3) + +[sub_resource type="BoxMesh" id="BoxMesh_wgbty"] +size = Vector3(1.5, 2.4, 3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o7jyf"] +albedo_color = Color(0.527, 0.527, 0.51000005, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_af7y8"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_ttk7h"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ucg7x"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_2di82"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_2cxnl"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7y4m6"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ui0pa"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_8yeei"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_t5xen"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_2xwyj"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_jaan3"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ibb3u"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ulryc"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_mp4hn"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kv6g1"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_kompm"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_01ysc"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dpsmv"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_cmx2w"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_o4lay"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_q0yk0"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_as2wx"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_e7gj8"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bcg5q"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_envay"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_7cls0"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vwl8l"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_2bpuj"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_qbpbn"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_18eo1"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_swxwg"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_v5dry"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5074v"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_u0ss8"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_me7bm"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3schc"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_xce76"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_kjj7b"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_phgyb"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_y32so"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_h3l2e"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5thfd"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_euosm"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_ou71q"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r6whk"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_pb4df"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_1w5c8"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vmw2n"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_nymjq"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_ixis2"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3cuc5"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ed34t"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_7x2sw"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ktxxr"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_onnij"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_1xeh3"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wsii5"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_vp27g"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_jclyj"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ixgss"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_fydnx"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_htt14"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jf0e5"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_5bfuw"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_8s5yp"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kfd1y"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_3ms4o"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_0xtc5"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xvaun"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_wq00a"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="BoxMesh" id="BoxMesh_babem"] +size = Vector3(0.08, 0.06, 0.22) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5fo3m"] +albedo_color = Color(0.9, 0.45, 0.15, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_8jvjl"] +height = 2.25 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_i6wec"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 2.25 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3wn44"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_l4xjc"] +height = 2.25 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_tepdl"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 2.25 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_g05k5"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_421mk"] +height = 1.4000001 +radius = 0.025 + +[sub_resource type="CylinderMesh" id="CylinderMesh_pm006"] +top_radius = 0.025 +bottom_radius = 0.025 +height = 1.4000001 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8ewds"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_7b8se"] +height = 5.0 +radius = 0.04 + +[sub_resource type="CylinderMesh" id="CylinderMesh_rd54n"] +top_radius = 0.04 +bottom_radius = 0.04 +height = 5.0 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2mogg"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_uacog"] +height = 5.0 +radius = 0.04 + +[sub_resource type="CylinderMesh" id="CylinderMesh_y3pxi"] +top_radius = 0.04 +bottom_radius = 0.04 +height = 5.0 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k6sa0"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_1ca8n"] +height = 2.25 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_bksix"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 2.25 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5a4sk"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_r61go"] +height = 2.25 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_uk46u"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 2.25 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_61v3i"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_px0rx"] +height = 2.25 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_02b3f"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 2.25 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hakan"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_y2mjw"] +height = 2.25 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_pg4xm"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 2.25 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tnhrc"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_2wmxw"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_08t8f"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_farw7"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_xdnyn"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_oi50a"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1c42c"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_gsjie"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_h87dv"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hlpdc"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_xr84g"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_nl25m"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_la566"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_s04wn"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_oq33t"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kulau"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_1ruos"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_fq87p"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y32o7"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_u2tuk"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_ybucj"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kqwy2"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_7f4l2"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_nwaoa"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_no8kg"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_uyhrj"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_v6kas"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sob1p"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_juaha"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_gr6jf"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yhjr7"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_47yis"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_x8oew"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c64aw"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_bctvm"] +height = 0.5999999 +radius = 0.022 + +[sub_resource type="CylinderMesh" id="CylinderMesh_uynwm"] +top_radius = 0.022 +bottom_radius = 0.022 +height = 0.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i23gj"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_g32n4"] +size = Vector3(1, 0.8, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_7skga"] +size = Vector3(1, 0.8, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pd5fv"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ipy23"] +size = Vector3(1, 0.8, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_fm1eo"] +size = Vector3(1, 0.8, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gt7dm"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_dvs5f"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_m2ss6"] +size = Vector3(3.4, 0.06, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_madbh"] +size = Vector3(3.4, 0.06, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5wncn"] +albedo_color = Color(0.72, 0.55, 0.33, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_ccydw"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_choc8"] +size = Vector3(2, 0.04, 0.2) + +[sub_resource type="BoxMesh" id="BoxMesh_32t3s"] +size = Vector3(2, 0.04, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v5c75"] +albedo_color = Color(0.72, 0.55, 0.33, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_oc247"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_xv1lc"] +size = Vector3(2, 0.04, 0.2) + +[sub_resource type="BoxMesh" id="BoxMesh_ggh87"] +size = Vector3(2, 0.04, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ynns5"] +albedo_color = Color(0.734, 0.5725, 0.3635, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_edde2"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_fy8kg"] +size = Vector3(2, 0.04, 0.2) + +[sub_resource type="BoxMesh" id="BoxMesh_4fqqe"] +size = Vector3(2, 0.04, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ao11k"] +albedo_color = Color(0.748, 0.595, 0.397, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_k6tyo"] +size = Vector3(0.3, 0.45, 0.5) + +[sub_resource type="BoxMesh" id="BoxMesh_2g3k7"] +size = Vector3(0.3, 0.45, 0.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pa3tj"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_mu6m3"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_6rxrs"] +size = Vector3(3.2, 0.06, 0.45) + +[sub_resource type="BoxMesh" id="BoxMesh_w0med"] +size = Vector3(3.2, 0.06, 0.45) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_grkha"] +albedo_color = Color(0.5, 0.36, 0.2, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_a1yfi"] +height = 2.45 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_ui54s"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 2.45 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_osw5u"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_xbene"] +height = 2.45 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_evjhj"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 2.45 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m606g"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_govb7"] +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_hxb5f"] +top_radius = 0.05 +bottom_radius = 0.05 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_62y7e"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_p6ymp"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_qop78"] +size = Vector3(1.2, 1.2, 0.05) + +[sub_resource type="BoxMesh" id="BoxMesh_1sbvu"] +size = Vector3(1.2, 1.2, 0.05) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nndk4"] +albedo_color = Color(0.72, 0.55, 0.33, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_xiink"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_au2ro"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_8s8b2"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_alxau"] +albedo_color = Color(0.648, 0.495, 0.297, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_uvh66"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_88h1v"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_v3n37"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qmiwq"] +albedo_color = Color(0.648, 0.495, 0.297, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_ow81m"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_cbmnp"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_gt26q"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uj5ey"] +albedo_color = Color(0.648, 0.495, 0.297, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_d681b"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ca5qb"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_fcskn"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_roqk3"] +albedo_color = Color(0.648, 0.495, 0.297, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_hppca"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_7litv"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_uf1on"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ays1k"] +albedo_color = Color(0.648, 0.495, 0.297, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_h2svt"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_14mgl"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="BoxMesh" id="BoxMesh_xej6x"] +size = Vector3(0.4, 0.4, 0.4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lnrrm"] +albedo_color = Color(0.648, 0.495, 0.297, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_s5n6d"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="BoxShape3D" id="BoxShape3D_tbu86"] +size = Vector3(0.7, 0.7, 0.7) + +[sub_resource type="BoxMesh" id="BoxMesh_sdivr"] +size = Vector3(0.7, 0.7, 0.7) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1mlge"] +albedo_color = Color(0.3, 0.45, 0.75, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_2qo3y"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_j6lu7"] +height = 0.85 +radius = 0.28 + +[sub_resource type="CylinderMesh" id="CylinderMesh_bugjv"] +top_radius = 0.28 +bottom_radius = 0.28 +height = 0.85 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8xmql"] +albedo_color = Color(0.7, 0.25, 0.2, 1) +roughness = 0.75 + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_66v8j"] +friction = 0.8 +bounce = 0.05 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_jl4x8"] +height = 0.85 +radius = 0.28 + +[sub_resource type="CylinderMesh" id="CylinderMesh_2dnqq"] +top_radius = 0.28 +bottom_radius = 0.28 +height = 0.85 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yhwwq"] +albedo_color = Color(0.7, 0.25, 0.2, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_ti6md"] +size = Vector3(0.12, 0.3, 4) + +[sub_resource type="BoxMesh" id="BoxMesh_4ackd"] +size = Vector3(0.12, 0.3, 4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xk8qo"] +albedo_color = Color(0.5, 0.36, 0.2, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_6dg5r"] +size = Vector3(1.4, 0.1, 3) + +[sub_resource type="BoxMesh" id="BoxMesh_bogif"] +size = Vector3(1.4, 0.1, 3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3yyoe"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_shih6"] +size = Vector3(0.1, 0.6, 3) + +[sub_resource type="BoxMesh" id="BoxMesh_w0q3r"] +size = Vector3(0.1, 0.6, 3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0py7j"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_2wlpg"] +size = Vector3(0.1, 0.6, 3) + +[sub_resource type="BoxMesh" id="BoxMesh_ihpiu"] +size = Vector3(0.1, 0.6, 3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u5jgj"] +albedo_color = Color(0.62, 0.62, 0.6, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_cdc2f"] +height = 1.3 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_oao1s"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 1.3 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5khef"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_07qhc"] +height = 1.3 +radius = 0.05 + +[sub_resource type="CylinderMesh" id="CylinderMesh_j8vqk"] +top_radius = 0.05 +bottom_radius = 0.05 +height = 1.3 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w6u8e"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_0pji4"] +height = 1.5999999 +radius = 0.03 + +[sub_resource type="CylinderMesh" id="CylinderMesh_m3cdy"] +top_radius = 0.03 +bottom_radius = 0.03 +height = 1.5999999 +radial_segments = 12 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ko1lh"] +albedo_color = Color(0.45, 0.47, 0.52, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_1ndtr"] +size = Vector3(0.2, 2.1, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_aichm"] +size = Vector3(0.2, 2.1, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1uh00"] +albedo_color = Color(0.72, 0.55, 0.33, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_3xc6d"] +size = Vector3(0.2, 2.1, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_1fk52"] +size = Vector3(0.2, 2.1, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k1ltc"] +albedo_color = Color(0.72, 0.55, 0.33, 1) +roughness = 0.75 + +[sub_resource type="BoxShape3D" id="BoxShape3D_2cf2k"] +size = Vector3(1.2, 0.2, 0.3) + +[sub_resource type="BoxMesh" id="BoxMesh_a6am2"] +size = Vector3(1.2, 0.2, 0.3) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3d2bp"] +albedo_color = Color(0.72, 0.55, 0.33, 1) +roughness = 0.75 + +[node name="Playground" type="Node3D" unique_id=618729331] +script = ExtResource("1") + +[node name="Ledge0_3" type="StaticBody3D" parent="." unique_id=1799188170] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.15, -8) +collision_mask = 29 + +[node name="@CollisionShape3D@2" type="CollisionShape3D" parent="Ledge0_3" unique_id=728346722] +shape = SubResource("BoxShape3D_4dhe6") + +[node name="@MeshInstance3D@3" type="MeshInstance3D" parent="Ledge0_3" unique_id=2025282351] +mesh = SubResource("BoxMesh_5hicw") +surface_material_override/0 = SubResource("StandardMaterial3D_xxtkw") + +[node name="Sign" type="Label3D" parent="." unique_id=553374631] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.65, -7.3) +pixel_size = 0.002 +billboard = 2 +text = "0.3 m" +font_size = 96 + +[node name="Ledge0_6" type="StaticBody3D" parent="." unique_id=1921715406] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.4, 0.3, -8) +collision_mask = 29 + +[node name="@CollisionShape3D@4" type="CollisionShape3D" parent="Ledge0_6" unique_id=1527330619] +shape = SubResource("BoxShape3D_rddl2") + +[node name="@MeshInstance3D@5" type="MeshInstance3D" parent="Ledge0_6" unique_id=1723460903] +mesh = SubResource("BoxMesh_xw4wq") +surface_material_override/0 = SubResource("StandardMaterial3D_050xr") + +[node name="Sign2" type="Label3D" parent="." unique_id=1367750878] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.4, 0.95000005, -7.3) +pixel_size = 0.002 +billboard = 2 +text = "0.6 m" +font_size = 96 + +[node name="Ledge0_9" type="StaticBody3D" parent="." unique_id=1343561243] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.3, 0.45, -8) +collision_mask = 29 + +[node name="@CollisionShape3D@6" type="CollisionShape3D" parent="Ledge0_9" unique_id=7583193] +shape = SubResource("BoxShape3D_hwtpv") + +[node name="@MeshInstance3D@7" type="MeshInstance3D" parent="Ledge0_9" unique_id=1312381178] +mesh = SubResource("BoxMesh_7n6l4") +surface_material_override/0 = SubResource("StandardMaterial3D_snwvs") + +[node name="Sign3" type="Label3D" parent="." unique_id=774433855] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.3, 1.25, -7.3) +pixel_size = 0.002 +billboard = 2 +text = "0.9 m" +font_size = 96 + +[node name="Ledge1_2" type="StaticBody3D" parent="." unique_id=829003616] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.2, 0.6, -8) +collision_mask = 29 + +[node name="@CollisionShape3D@8" type="CollisionShape3D" parent="Ledge1_2" unique_id=281353423] +shape = SubResource("BoxShape3D_kms2k") + +[node name="@MeshInstance3D@9" type="MeshInstance3D" parent="Ledge1_2" unique_id=1645263417] +mesh = SubResource("BoxMesh_2r3eo") +surface_material_override/0 = SubResource("StandardMaterial3D_brwlm") + +[node name="Sign4" type="Label3D" parent="." unique_id=896929765] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.2, 1.5500001, -7.3) +pixel_size = 0.002 +billboard = 2 +text = "1.2 m" +font_size = 96 + +[node name="Ledge1_5" type="StaticBody3D" parent="." unique_id=743832350] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.1, 0.75, -8) +collision_mask = 29 + +[node name="@CollisionShape3D@10" type="CollisionShape3D" parent="Ledge1_5" unique_id=699844619] +shape = SubResource("BoxShape3D_yubad") + +[node name="@MeshInstance3D@11" type="MeshInstance3D" parent="Ledge1_5" unique_id=397425000] +mesh = SubResource("BoxMesh_ri6b7") +surface_material_override/0 = SubResource("StandardMaterial3D_m6rps") + +[node name="Sign5" type="Label3D" parent="." unique_id=745827162] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.1, 1.85, -7.3) +pixel_size = 0.002 +billboard = 2 +text = "1.5 m" +font_size = 96 + +[node name="Sign6" type="Label3D" parent="." unique_id=1100200943] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.3, 2.4, -8) +pixel_size = 0.002 +billboard = 2 +text = "Mantle: both hands on the ledge, push down" +font_size = 96 + +[node name="Platform" type="StaticBody3D" parent="." unique_id=109458477] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0.5, -1.5) +collision_mask = 29 + +[node name="@CollisionShape3D@12" type="CollisionShape3D" parent="Platform" unique_id=1957292503] +shape = SubResource("BoxShape3D_ov8qe") + +[node name="@MeshInstance3D@13" type="MeshInstance3D" parent="Platform" unique_id=736749160] +mesh = SubResource("BoxMesh_x453x") +surface_material_override/0 = SubResource("StandardMaterial3D_jkr81") + +[node name="Stair0" type="StaticBody3D" parent="." unique_id=1275609374] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0.085, 1.35) +collision_mask = 29 + +[node name="@CollisionShape3D@14" type="CollisionShape3D" parent="Stair0" unique_id=1379583722] +shape = SubResource("BoxShape3D_omqb8") + +[node name="@MeshInstance3D@15" type="MeshInstance3D" parent="Stair0" unique_id=1092057087] +mesh = SubResource("BoxMesh_ugi88") +surface_material_override/0 = SubResource("StandardMaterial3D_fk7ew") + +[node name="Stair1" type="StaticBody3D" parent="." unique_id=1981320977] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0.17, 1.0500001) +collision_mask = 29 + +[node name="@CollisionShape3D@16" type="CollisionShape3D" parent="Stair1" unique_id=1149548477] +shape = SubResource("BoxShape3D_7iiy4") + +[node name="@MeshInstance3D@17" type="MeshInstance3D" parent="Stair1" unique_id=1386107255] +mesh = SubResource("BoxMesh_g5lew") +surface_material_override/0 = SubResource("StandardMaterial3D_iu1ix") + +[node name="Stair2" type="StaticBody3D" parent="." unique_id=766506706] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0.255, 0.75) +collision_mask = 29 + +[node name="@CollisionShape3D@18" type="CollisionShape3D" parent="Stair2" unique_id=1353841537] +shape = SubResource("BoxShape3D_dep6j") + +[node name="@MeshInstance3D@19" type="MeshInstance3D" parent="Stair2" unique_id=1090703521] +mesh = SubResource("BoxMesh_r2bbi") +surface_material_override/0 = SubResource("StandardMaterial3D_xdwkp") + +[node name="Stair3" type="StaticBody3D" parent="." unique_id=284726147] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0.34, 0.45000002) +collision_mask = 29 + +[node name="@CollisionShape3D@20" type="CollisionShape3D" parent="Stair3" unique_id=1355532323] +shape = SubResource("BoxShape3D_tvwdx") + +[node name="@MeshInstance3D@21" type="MeshInstance3D" parent="Stair3" unique_id=1562404823] +mesh = SubResource("BoxMesh_pxm47") +surface_material_override/0 = SubResource("StandardMaterial3D_mo4la") + +[node name="Stair4" type="StaticBody3D" parent="." unique_id=1234215978] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0.425, 0.15) +collision_mask = 29 + +[node name="@CollisionShape3D@22" type="CollisionShape3D" parent="Stair4" unique_id=1283632378] +shape = SubResource("BoxShape3D_a72v8") + +[node name="@MeshInstance3D@23" type="MeshInstance3D" parent="Stair4" unique_id=469805323] +mesh = SubResource("BoxMesh_2fuex") +surface_material_override/0 = SubResource("StandardMaterial3D_wku2t") + +[node name="RampWalkable" type="StaticBody3D" parent="." unique_id=1110832891] +transform = Transform3D(1, 0, 0, 0, 0.95105654, 0.309017, 0, -0.309017, 0.95105654, 7, 0.5, -4.5388417) +collision_mask = 29 + +[node name="@CollisionShape3D@24" type="CollisionShape3D" parent="RampWalkable" unique_id=861715653] +shape = SubResource("BoxShape3D_jp1lm") + +[node name="@MeshInstance3D@25" type="MeshInstance3D" parent="RampWalkable" unique_id=1343112187] +mesh = SubResource("BoxMesh_oen35") +surface_material_override/0 = SubResource("StandardMaterial3D_k3tyx") + +[node name="RampSteep" type="StaticBody3D" parent="." unique_id=1758513614] +transform = Transform3D(1, 0, 0, 0, 0.76604444, 0.6427876, 0, -0.6427876, 0.76604444, 9, 0.5, -3.5958767) +collision_mask = 29 + +[node name="@CollisionShape3D@26" type="CollisionShape3D" parent="RampSteep" unique_id=1063220469] +shape = SubResource("BoxShape3D_43gh8") + +[node name="@MeshInstance3D@27" type="MeshInstance3D" parent="RampSteep" unique_id=263172454] +mesh = SubResource("BoxMesh_po2hk") +surface_material_override/0 = SubResource("StandardMaterial3D_tre4p") + +[node name="Sign7" type="Label3D" parent="." unique_id=1048291781] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 1.6, -4.5) +pixel_size = 0.002 +billboard = 2 +text = "18° ramp" +font_size = 96 + +[node name="Sign8" type="Label3D" parent="." unique_id=1375561333] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 1.6, -4.5) +pixel_size = 0.002 +billboard = 2 +text = "40° (too steep)" +font_size = 96 + +[node name="ClimbWall" type="StaticBody3D" parent="." unique_id=1000747054] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.25, 1.2, -1.5) +collision_mask = 29 + +[node name="@CollisionShape3D@28" type="CollisionShape3D" parent="ClimbWall" unique_id=1880253391] +shape = SubResource("BoxShape3D_facsp") + +[node name="@MeshInstance3D@29" type="MeshInstance3D" parent="ClimbWall" unique_id=1942781620] +mesh = SubResource("BoxMesh_wgbty") +surface_material_override/0 = SubResource("StandardMaterial3D_o7jyf") + +[node name="Hold" type="StaticBody3D" parent="." unique_id=905413475] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 0.44020626, -2.6817672) +collision_mask = 29 + +[node name="@CollisionShape3D@30" type="CollisionShape3D" parent="Hold" unique_id=240935325] +shape = SubResource("BoxShape3D_af7y8") + +[node name="@MeshInstance3D@31" type="MeshInstance3D" parent="Hold" unique_id=178129895] +mesh = SubResource("BoxMesh_ttk7h") +surface_material_override/0 = SubResource("StandardMaterial3D_ucg7x") + +[node name="Hold2" type="StaticBody3D" parent="." unique_id=1804267125] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 0.45768443, -1.9656726) +collision_mask = 29 + +[node name="@CollisionShape3D@32" type="CollisionShape3D" parent="Hold2" unique_id=547675098] +shape = SubResource("BoxShape3D_2di82") + +[node name="@MeshInstance3D@33" type="MeshInstance3D" parent="Hold2" unique_id=11331324] +mesh = SubResource("BoxMesh_2cxnl") +surface_material_override/0 = SubResource("StandardMaterial3D_7y4m6") + +[node name="Hold3" type="StaticBody3D" parent="." unique_id=1029125534] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 0.426689, -0.99399424) +collision_mask = 29 + +[node name="@CollisionShape3D@34" type="CollisionShape3D" parent="Hold3" unique_id=1821779322] +shape = SubResource("BoxShape3D_ui0pa") + +[node name="@MeshInstance3D@35" type="MeshInstance3D" parent="Hold3" unique_id=235564324] +mesh = SubResource("BoxMesh_8yeei") +surface_material_override/0 = SubResource("StandardMaterial3D_t5xen") + +[node name="Hold4" type="StaticBody3D" parent="." unique_id=1455494716] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 0.34841645, -0.20665197) +collision_mask = 29 + +[node name="@CollisionShape3D@36" type="CollisionShape3D" parent="Hold4" unique_id=1218022557] +shape = SubResource("BoxShape3D_2xwyj") + +[node name="@MeshInstance3D@37" type="MeshInstance3D" parent="Hold4" unique_id=723497931] +mesh = SubResource("BoxMesh_jaan3") +surface_material_override/0 = SubResource("StandardMaterial3D_ibb3u") + +[node name="Hold5" type="StaticBody3D" parent="." unique_id=1225031172] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 0.7611881, -2.6771693) +collision_mask = 29 + +[node name="@CollisionShape3D@38" type="CollisionShape3D" parent="Hold5" unique_id=295220989] +shape = SubResource("BoxShape3D_ulryc") + +[node name="@MeshInstance3D@39" type="MeshInstance3D" parent="Hold5" unique_id=1275967587] +mesh = SubResource("BoxMesh_mp4hn") +surface_material_override/0 = SubResource("StandardMaterial3D_kv6g1") + +[node name="Hold6" type="StaticBody3D" parent="." unique_id=1007631387] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 0.71293557, -1.7542278) +collision_mask = 29 + +[node name="@CollisionShape3D@40" type="CollisionShape3D" parent="Hold6" unique_id=1261228435] +shape = SubResource("BoxShape3D_kompm") + +[node name="@MeshInstance3D@41" type="MeshInstance3D" parent="Hold6" unique_id=1720307925] +mesh = SubResource("BoxMesh_01ysc") +surface_material_override/0 = SubResource("StandardMaterial3D_dpsmv") + +[node name="Hold7" type="StaticBody3D" parent="." unique_id=645032969] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 0.76820326, -1.1971252) +collision_mask = 29 + +[node name="@CollisionShape3D@42" type="CollisionShape3D" parent="Hold7" unique_id=633990311] +shape = SubResource("BoxShape3D_cmx2w") + +[node name="@MeshInstance3D@43" type="MeshInstance3D" parent="Hold7" unique_id=1831495203] +mesh = SubResource("BoxMesh_o4lay") +surface_material_override/0 = SubResource("StandardMaterial3D_q0yk0") + +[node name="Hold8" type="StaticBody3D" parent="." unique_id=814018177] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 0.7179765, -0.15788585) +collision_mask = 29 + +[node name="@CollisionShape3D@44" type="CollisionShape3D" parent="Hold8" unique_id=1275144202] +shape = SubResource("BoxShape3D_as2wx") + +[node name="@MeshInstance3D@45" type="MeshInstance3D" parent="Hold8" unique_id=1012336227] +mesh = SubResource("BoxMesh_e7gj8") +surface_material_override/0 = SubResource("StandardMaterial3D_bcg5q") + +[node name="Hold9" type="StaticBody3D" parent="." unique_id=20511277] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.1334486, -2.7491925) +collision_mask = 29 + +[node name="@CollisionShape3D@46" type="CollisionShape3D" parent="Hold9" unique_id=854694542] +shape = SubResource("BoxShape3D_envay") + +[node name="@MeshInstance3D@47" type="MeshInstance3D" parent="Hold9" unique_id=1502497175] +mesh = SubResource("BoxMesh_7cls0") +surface_material_override/0 = SubResource("StandardMaterial3D_vwl8l") + +[node name="Hold10" type="StaticBody3D" parent="." unique_id=267698105] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.1389843, -1.8112569) +collision_mask = 29 + +[node name="@CollisionShape3D@48" type="CollisionShape3D" parent="Hold10" unique_id=329693682] +shape = SubResource("BoxShape3D_2bpuj") + +[node name="@MeshInstance3D@49" type="MeshInstance3D" parent="Hold10" unique_id=936013419] +mesh = SubResource("BoxMesh_qbpbn") +surface_material_override/0 = SubResource("StandardMaterial3D_18eo1") + +[node name="Hold11" type="StaticBody3D" parent="." unique_id=1154044815] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.130292, -1.0708437) +collision_mask = 29 + +[node name="@CollisionShape3D@50" type="CollisionShape3D" parent="Hold11" unique_id=1314351845] +shape = SubResource("BoxShape3D_swxwg") + +[node name="@MeshInstance3D@51" type="MeshInstance3D" parent="Hold11" unique_id=2279401] +mesh = SubResource("BoxMesh_v5dry") +surface_material_override/0 = SubResource("StandardMaterial3D_5074v") + +[node name="Hold12" type="StaticBody3D" parent="." unique_id=459172857] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.1382879, -0.15012395) +collision_mask = 29 + +[node name="@CollisionShape3D@52" type="CollisionShape3D" parent="Hold12" unique_id=867261828] +shape = SubResource("BoxShape3D_u0ss8") + +[node name="@MeshInstance3D@53" type="MeshInstance3D" parent="Hold12" unique_id=257753865] +mesh = SubResource("BoxMesh_me7bm") +surface_material_override/0 = SubResource("StandardMaterial3D_3schc") + +[node name="Hold13" type="StaticBody3D" parent="." unique_id=1770368485] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.440625, -2.8117661) +collision_mask = 29 + +[node name="@CollisionShape3D@54" type="CollisionShape3D" parent="Hold13" unique_id=623871349] +shape = SubResource("BoxShape3D_xce76") + +[node name="@MeshInstance3D@55" type="MeshInstance3D" parent="Hold13" unique_id=251766239] +mesh = SubResource("BoxMesh_kjj7b") +surface_material_override/0 = SubResource("StandardMaterial3D_phgyb") + +[node name="Hold14" type="StaticBody3D" parent="." unique_id=1287289872] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.5052737, -2.0014431) +collision_mask = 29 + +[node name="@CollisionShape3D@56" type="CollisionShape3D" parent="Hold14" unique_id=1506927752] +shape = SubResource("BoxShape3D_y32so") + +[node name="@MeshInstance3D@57" type="MeshInstance3D" parent="Hold14" unique_id=609525297] +mesh = SubResource("BoxMesh_h3l2e") +surface_material_override/0 = SubResource("StandardMaterial3D_5thfd") + +[node name="Hold15" type="StaticBody3D" parent="." unique_id=571683643] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.4000812, -1.0909216) +collision_mask = 29 + +[node name="@CollisionShape3D@58" type="CollisionShape3D" parent="Hold15" unique_id=954583856] +shape = SubResource("BoxShape3D_euosm") + +[node name="@MeshInstance3D@59" type="MeshInstance3D" parent="Hold15" unique_id=1970157504] +mesh = SubResource("BoxMesh_ou71q") +surface_material_override/0 = SubResource("StandardMaterial3D_r6whk") + +[node name="Hold16" type="StaticBody3D" parent="." unique_id=1117430583] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.4437553, -0.33921808) +collision_mask = 29 + +[node name="@CollisionShape3D@60" type="CollisionShape3D" parent="Hold16" unique_id=1090814770] +shape = SubResource("BoxShape3D_pb4df") + +[node name="@MeshInstance3D@61" type="MeshInstance3D" parent="Hold16" unique_id=1751588587] +mesh = SubResource("BoxMesh_1w5c8") +surface_material_override/0 = SubResource("StandardMaterial3D_vmw2n") + +[node name="Hold17" type="StaticBody3D" parent="." unique_id=1974959104] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.7602631, -2.715142) +collision_mask = 29 + +[node name="@CollisionShape3D@62" type="CollisionShape3D" parent="Hold17" unique_id=343654248] +shape = SubResource("BoxShape3D_nymjq") + +[node name="@MeshInstance3D@63" type="MeshInstance3D" parent="Hold17" unique_id=2102907842] +mesh = SubResource("BoxMesh_ixis2") +surface_material_override/0 = SubResource("StandardMaterial3D_3cuc5") + +[node name="Hold18" type="StaticBody3D" parent="." unique_id=257141683] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.7790391, -1.9359214) +collision_mask = 29 + +[node name="@CollisionShape3D@64" type="CollisionShape3D" parent="Hold18" unique_id=393457562] +shape = SubResource("BoxShape3D_ed34t") + +[node name="@MeshInstance3D@65" type="MeshInstance3D" parent="Hold18" unique_id=878266270] +mesh = SubResource("BoxMesh_7x2sw") +surface_material_override/0 = SubResource("StandardMaterial3D_ktxxr") + +[node name="Hold19" type="StaticBody3D" parent="." unique_id=988581760] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.7909979, -1.0592806) +collision_mask = 29 + +[node name="@CollisionShape3D@66" type="CollisionShape3D" parent="Hold19" unique_id=1558955400] +shape = SubResource("BoxShape3D_onnij") + +[node name="@MeshInstance3D@67" type="MeshInstance3D" parent="Hold19" unique_id=138450890] +mesh = SubResource("BoxMesh_1xeh3") +surface_material_override/0 = SubResource("StandardMaterial3D_wsii5") + +[node name="Hold20" type="StaticBody3D" parent="." unique_id=1819832026] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 1.7982007, -0.16059306) +collision_mask = 29 + +[node name="@CollisionShape3D@68" type="CollisionShape3D" parent="Hold20" unique_id=418509876] +shape = SubResource("BoxShape3D_vp27g") + +[node name="@MeshInstance3D@69" type="MeshInstance3D" parent="Hold20" unique_id=1747279122] +mesh = SubResource("BoxMesh_jclyj") +surface_material_override/0 = SubResource("StandardMaterial3D_ixgss") + +[node name="Hold21" type="StaticBody3D" parent="." unique_id=983311502] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 2.139201, -2.5566623) +collision_mask = 29 + +[node name="@CollisionShape3D@70" type="CollisionShape3D" parent="Hold21" unique_id=957548083] +shape = SubResource("BoxShape3D_fydnx") + +[node name="@MeshInstance3D@71" type="MeshInstance3D" parent="Hold21" unique_id=787253778] +mesh = SubResource("BoxMesh_htt14") +surface_material_override/0 = SubResource("StandardMaterial3D_jf0e5") + +[node name="Hold22" type="StaticBody3D" parent="." unique_id=690574285] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 2.0955694, -1.9634038) +collision_mask = 29 + +[node name="@CollisionShape3D@72" type="CollisionShape3D" parent="Hold22" unique_id=16615278] +shape = SubResource("BoxShape3D_5bfuw") + +[node name="@MeshInstance3D@73" type="MeshInstance3D" parent="Hold22" unique_id=210062975] +mesh = SubResource("BoxMesh_8s5yp") +surface_material_override/0 = SubResource("StandardMaterial3D_kfd1y") + +[node name="Hold23" type="StaticBody3D" parent="." unique_id=1003225236] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 2.115701, -1.1305425) +collision_mask = 29 + +[node name="@CollisionShape3D@74" type="CollisionShape3D" parent="Hold23" unique_id=145291566] +shape = SubResource("BoxShape3D_3ms4o") + +[node name="@MeshInstance3D@75" type="MeshInstance3D" parent="Hold23" unique_id=930949290] +mesh = SubResource("BoxMesh_0xtc5") +surface_material_override/0 = SubResource("StandardMaterial3D_xvaun") + +[node name="Hold24" type="StaticBody3D" parent="." unique_id=390695758] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.46, 2.176404, -0.19380203) +collision_mask = 29 + +[node name="@CollisionShape3D@76" type="CollisionShape3D" parent="Hold24" unique_id=1136321999] +shape = SubResource("BoxShape3D_wq00a") + +[node name="@MeshInstance3D@77" type="MeshInstance3D" parent="Hold24" unique_id=782194413] +mesh = SubResource("BoxMesh_babem") +surface_material_override/0 = SubResource("StandardMaterial3D_5fo3m") + +[node name="Sign9" type="Label3D" parent="." unique_id=104350837] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 3, -1.5) +pixel_size = 0.002 +billboard = 2 +text = "Climbing wall: grip the holds" +font_size = 96 + +[node name="PostA" type="StaticBody3D" parent="." unique_id=249821925] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 1.125, 2.5) +collision_mask = 29 + +[node name="@CollisionShape3D@78" type="CollisionShape3D" parent="PostA" unique_id=598325418] +shape = SubResource("CylinderShape3D_8jvjl") + +[node name="@MeshInstance3D@79" type="MeshInstance3D" parent="PostA" unique_id=968733365] +mesh = SubResource("CylinderMesh_i6wec") +surface_material_override/0 = SubResource("StandardMaterial3D_3wn44") + +[node name="PostB" type="StaticBody3D" parent="." unique_id=1136929827] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.4, 1.125, 2.5) +collision_mask = 29 + +[node name="@CollisionShape3D@80" type="CollisionShape3D" parent="PostB" unique_id=1954515651] +shape = SubResource("CylinderShape3D_l4xjc") + +[node name="@MeshInstance3D@81" type="MeshInstance3D" parent="PostB" unique_id=1979159951] +mesh = SubResource("CylinderMesh_tepdl") +surface_material_override/0 = SubResource("StandardMaterial3D_g05k5") + +[node name="PullUpBar" type="StaticBody3D" parent="." unique_id=93580726] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, 5.7, 2.1, 2.5) +collision_mask = 29 + +[node name="@CollisionShape3D@82" type="CollisionShape3D" parent="PullUpBar" unique_id=792144980] +shape = SubResource("CylinderShape3D_421mk") + +[node name="@MeshInstance3D@83" type="MeshInstance3D" parent="PullUpBar" unique_id=740696686] +mesh = SubResource("CylinderMesh_pm006") +surface_material_override/0 = SubResource("StandardMaterial3D_8ewds") + +[node name="Sign10" type="Label3D" parent="." unique_id=2129836956] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7, 2.6, 2.5) +pixel_size = 0.002 +billboard = 2 +text = "Pull-up bar" +font_size = 96 + +[node name="MonkeyRailL" type="StaticBody3D" parent="." unique_id=1212809276] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, 7.5, 2.25, 4.5) +collision_mask = 29 + +[node name="@CollisionShape3D@84" type="CollisionShape3D" parent="MonkeyRailL" unique_id=1369996284] +shape = SubResource("CylinderShape3D_7b8se") + +[node name="@MeshInstance3D@85" type="MeshInstance3D" parent="MonkeyRailL" unique_id=236646835] +mesh = SubResource("CylinderMesh_rd54n") +surface_material_override/0 = SubResource("StandardMaterial3D_2mogg") + +[node name="MonkeyRailR" type="StaticBody3D" parent="." unique_id=1951219727] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, 7.5, 2.25, 5.1) +collision_mask = 29 + +[node name="@CollisionShape3D@86" type="CollisionShape3D" parent="MonkeyRailR" unique_id=425555117] +shape = SubResource("CylinderShape3D_uacog") + +[node name="@MeshInstance3D@87" type="MeshInstance3D" parent="MonkeyRailR" unique_id=898262856] +mesh = SubResource("CylinderMesh_y3pxi") +surface_material_override/0 = SubResource("StandardMaterial3D_k6sa0") + +[node name="MonkeyPost" type="StaticBody3D" parent="." unique_id=149588059] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 1.125, 4.5) +collision_mask = 29 + +[node name="@CollisionShape3D@88" type="CollisionShape3D" parent="MonkeyPost" unique_id=1052705945] +shape = SubResource("CylinderShape3D_1ca8n") + +[node name="@MeshInstance3D@89" type="MeshInstance3D" parent="MonkeyPost" unique_id=2110611309] +mesh = SubResource("CylinderMesh_bksix") +surface_material_override/0 = SubResource("StandardMaterial3D_5a4sk") + +[node name="MonkeyPost2" type="StaticBody3D" parent="." unique_id=2008817982] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 1.125, 5.1) +collision_mask = 29 + +[node name="@CollisionShape3D@90" type="CollisionShape3D" parent="MonkeyPost2" unique_id=2125767927] +shape = SubResource("CylinderShape3D_r61go") + +[node name="@MeshInstance3D@91" type="MeshInstance3D" parent="MonkeyPost2" unique_id=784335439] +mesh = SubResource("CylinderMesh_uk46u") +surface_material_override/0 = SubResource("StandardMaterial3D_61v3i") + +[node name="MonkeyPost3" type="StaticBody3D" parent="." unique_id=1762709501] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 1.125, 4.5) +collision_mask = 29 + +[node name="@CollisionShape3D@92" type="CollisionShape3D" parent="MonkeyPost3" unique_id=1222498028] +shape = SubResource("CylinderShape3D_px0rx") + +[node name="@MeshInstance3D@93" type="MeshInstance3D" parent="MonkeyPost3" unique_id=1356701204] +mesh = SubResource("CylinderMesh_02b3f") +surface_material_override/0 = SubResource("StandardMaterial3D_hakan") + +[node name="MonkeyPost4" type="StaticBody3D" parent="." unique_id=840024771] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 1.125, 5.1) +collision_mask = 29 + +[node name="@CollisionShape3D@94" type="CollisionShape3D" parent="MonkeyPost4" unique_id=782135389] +shape = SubResource("CylinderShape3D_y2mjw") + +[node name="@MeshInstance3D@95" type="MeshInstance3D" parent="MonkeyPost4" unique_id=263581036] +mesh = SubResource("CylinderMesh_pg4xm") +surface_material_override/0 = SubResource("StandardMaterial3D_tnhrc") + +[node name="Rung" type="StaticBody3D" parent="." unique_id=742488067] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 5.4, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@96" type="CollisionShape3D" parent="Rung" unique_id=867156861] +shape = SubResource("CylinderShape3D_2wmxw") + +[node name="@MeshInstance3D@97" type="MeshInstance3D" parent="Rung" unique_id=678252672] +mesh = SubResource("CylinderMesh_08t8f") +surface_material_override/0 = SubResource("StandardMaterial3D_farw7") + +[node name="Rung2" type="StaticBody3D" parent="." unique_id=1289501329] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 5.8, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@98" type="CollisionShape3D" parent="Rung2" unique_id=329533176] +shape = SubResource("CylinderShape3D_xdnyn") + +[node name="@MeshInstance3D@99" type="MeshInstance3D" parent="Rung2" unique_id=731271888] +mesh = SubResource("CylinderMesh_oi50a") +surface_material_override/0 = SubResource("StandardMaterial3D_1c42c") + +[node name="Rung3" type="StaticBody3D" parent="." unique_id=385676271] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 6.2000003, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@100" type="CollisionShape3D" parent="Rung3" unique_id=920598834] +shape = SubResource("CylinderShape3D_gsjie") + +[node name="@MeshInstance3D@101" type="MeshInstance3D" parent="Rung3" unique_id=350064303] +mesh = SubResource("CylinderMesh_h87dv") +surface_material_override/0 = SubResource("StandardMaterial3D_hlpdc") + +[node name="Rung4" type="StaticBody3D" parent="." unique_id=591818662] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 6.6000004, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@102" type="CollisionShape3D" parent="Rung4" unique_id=1234932139] +shape = SubResource("CylinderShape3D_xr84g") + +[node name="@MeshInstance3D@103" type="MeshInstance3D" parent="Rung4" unique_id=1352407418] +mesh = SubResource("CylinderMesh_nl25m") +surface_material_override/0 = SubResource("StandardMaterial3D_la566") + +[node name="Rung5" type="StaticBody3D" parent="." unique_id=1187178393] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 7.0000005, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@104" type="CollisionShape3D" parent="Rung5" unique_id=212923013] +shape = SubResource("CylinderShape3D_s04wn") + +[node name="@MeshInstance3D@105" type="MeshInstance3D" parent="Rung5" unique_id=1265263889] +mesh = SubResource("CylinderMesh_oq33t") +surface_material_override/0 = SubResource("StandardMaterial3D_kulau") + +[node name="Rung6" type="StaticBody3D" parent="." unique_id=1482140562] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 7.4000006, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@106" type="CollisionShape3D" parent="Rung6" unique_id=131110321] +shape = SubResource("CylinderShape3D_1ruos") + +[node name="@MeshInstance3D@107" type="MeshInstance3D" parent="Rung6" unique_id=1075885539] +mesh = SubResource("CylinderMesh_fq87p") +surface_material_override/0 = SubResource("StandardMaterial3D_y32o7") + +[node name="Rung7" type="StaticBody3D" parent="." unique_id=231634229] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 7.8000007, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@108" type="CollisionShape3D" parent="Rung7" unique_id=399658217] +shape = SubResource("CylinderShape3D_u2tuk") + +[node name="@MeshInstance3D@109" type="MeshInstance3D" parent="Rung7" unique_id=128410560] +mesh = SubResource("CylinderMesh_ybucj") +surface_material_override/0 = SubResource("StandardMaterial3D_kqwy2") + +[node name="Rung8" type="StaticBody3D" parent="." unique_id=1804269736] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 8.200001, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@110" type="CollisionShape3D" parent="Rung8" unique_id=1672546961] +shape = SubResource("CylinderShape3D_7f4l2") + +[node name="@MeshInstance3D@111" type="MeshInstance3D" parent="Rung8" unique_id=589819590] +mesh = SubResource("CylinderMesh_nwaoa") +surface_material_override/0 = SubResource("StandardMaterial3D_no8kg") + +[node name="Rung9" type="StaticBody3D" parent="." unique_id=1586193411] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 8.6, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@112" type="CollisionShape3D" parent="Rung9" unique_id=2074713806] +shape = SubResource("CylinderShape3D_uyhrj") + +[node name="@MeshInstance3D@113" type="MeshInstance3D" parent="Rung9" unique_id=1591758491] +mesh = SubResource("CylinderMesh_v6kas") +surface_material_override/0 = SubResource("StandardMaterial3D_sob1p") + +[node name="Rung10" type="StaticBody3D" parent="." unique_id=1247988459] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 9, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@114" type="CollisionShape3D" parent="Rung10" unique_id=1402657492] +shape = SubResource("CylinderShape3D_juaha") + +[node name="@MeshInstance3D@115" type="MeshInstance3D" parent="Rung10" unique_id=1375520156] +mesh = SubResource("CylinderMesh_gr6jf") +surface_material_override/0 = SubResource("StandardMaterial3D_yhjr7") + +[node name="Rung11" type="StaticBody3D" parent="." unique_id=776706782] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 9.4, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@116" type="CollisionShape3D" parent="Rung11" unique_id=2025646066] +shape = SubResource("CylinderShape3D_47yis") + +[node name="@MeshInstance3D@117" type="MeshInstance3D" parent="Rung11" unique_id=184953673] +mesh = SubResource("CylinderMesh_x8oew") +surface_material_override/0 = SubResource("StandardMaterial3D_c64aw") + +[node name="Rung12" type="StaticBody3D" parent="." unique_id=848783640] +transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 9.799999, 2.2, 4.8) +collision_mask = 29 + +[node name="@CollisionShape3D@118" type="CollisionShape3D" parent="Rung12" unique_id=231921737] +shape = SubResource("CylinderShape3D_bctvm") + +[node name="@MeshInstance3D@119" type="MeshInstance3D" parent="Rung12" unique_id=247424812] +mesh = SubResource("CylinderMesh_uynwm") +surface_material_override/0 = SubResource("StandardMaterial3D_i23gj") + +[node name="Sign11" type="Label3D" parent="." unique_id=1530520906] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 2.8, 4.8) +pixel_size = 0.002 +billboard = 2 +text = "Monkey bars" +font_size = 96 + +[node name="BridgeBlockA" type="StaticBody3D" parent="." unique_id=688873335] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0.4, -5) +collision_mask = 29 + +[node name="@CollisionShape3D@120" type="CollisionShape3D" parent="BridgeBlockA" unique_id=210818070] +shape = SubResource("BoxShape3D_g32n4") + +[node name="@MeshInstance3D@121" type="MeshInstance3D" parent="BridgeBlockA" unique_id=1647254866] +mesh = SubResource("BoxMesh_7skga") +surface_material_override/0 = SubResource("StandardMaterial3D_pd5fv") + +[node name="BridgeBlockB" type="StaticBody3D" parent="." unique_id=1914973307] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8, 0.4, -5) +collision_mask = 29 + +[node name="@CollisionShape3D@122" type="CollisionShape3D" parent="BridgeBlockB" unique_id=23814349] +shape = SubResource("BoxShape3D_ipy23") + +[node name="@MeshInstance3D@123" type="MeshInstance3D" parent="BridgeBlockB" unique_id=1803819650] +mesh = SubResource("BoxMesh_fm1eo") +surface_material_override/0 = SubResource("StandardMaterial3D_gt7dm") + +[node name="BridgePlank" type="RigidBody3D" parent="." unique_id=786349174 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.25, 0.83, -5) +collision_mask = 29 +mass = 9.0 +physics_material_override = SubResource("PhysicsMaterial_dvs5f") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@124" type="CollisionShape3D" parent="BridgePlank" unique_id=271781665] +shape = SubResource("BoxShape3D_m2ss6") + +[node name="@MeshInstance3D@125" type="MeshInstance3D" parent="BridgePlank" unique_id=404368994] +mesh = SubResource("BoxMesh_madbh") +surface_material_override/0 = SubResource("StandardMaterial3D_5wncn") + +[node name="Sign12" type="Label3D" parent="." unique_id=1151045766] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.25, 1.6, -5) +pixel_size = 0.002 +billboard = 2 +text = "Plank bridge" +font_size = 96 + +[node name="Plank0" type="RigidBody3D" parent="." unique_id=1183094856 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0.02, -2.6) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_ccydw") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@126" type="CollisionShape3D" parent="Plank0" unique_id=107863524] +shape = SubResource("BoxShape3D_choc8") + +[node name="@MeshInstance3D@127" type="MeshInstance3D" parent="Plank0" unique_id=397646575] +mesh = SubResource("BoxMesh_32t3s") +surface_material_override/0 = SubResource("StandardMaterial3D_v5c75") + +[node name="Plank1" type="RigidBody3D" parent="." unique_id=1265199910 groups=["prop"]] +transform = Transform3D(0.9950042, 0, 0.09983342, 0, 1, 0, -0.09983342, 0, 0.9950042, -5, 0.065, -2.55) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_oc247") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@128" type="CollisionShape3D" parent="Plank1" unique_id=283597825] +shape = SubResource("BoxShape3D_xv1lc") + +[node name="@MeshInstance3D@129" type="MeshInstance3D" parent="Plank1" unique_id=1181628895] +mesh = SubResource("BoxMesh_ggh87") +surface_material_override/0 = SubResource("StandardMaterial3D_ynns5") + +[node name="Plank2" type="RigidBody3D" parent="." unique_id=1157859206 groups=["prop"]] +transform = Transform3D(0.9800666, 0, 0.19866933, 0, 1, 0, -0.19866933, 0, 0.9800666, -5, 0.11, -2.5) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_edde2") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@130" type="CollisionShape3D" parent="Plank2" unique_id=1952886845] +shape = SubResource("BoxShape3D_fy8kg") + +[node name="@MeshInstance3D@131" type="MeshInstance3D" parent="Plank2" unique_id=1018049348] +mesh = SubResource("BoxMesh_4fqqe") +surface_material_override/0 = SubResource("StandardMaterial3D_ao11k") + +[node name="SeesawPivot" type="StaticBody3D" parent="." unique_id=1132132595] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 0.225, -1.5) +collision_mask = 29 + +[node name="@CollisionShape3D@132" type="CollisionShape3D" parent="SeesawPivot" unique_id=1365127290] +shape = SubResource("BoxShape3D_k6tyo") + +[node name="@MeshInstance3D@133" type="MeshInstance3D" parent="SeesawPivot" unique_id=1637160679] +mesh = SubResource("BoxMesh_2g3k7") +surface_material_override/0 = SubResource("StandardMaterial3D_pa3tj") + +[node name="Seesaw" type="RigidBody3D" parent="." unique_id=297803024 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 0.48, -1.5) +collision_mask = 29 +mass = 12.0 +physics_material_override = SubResource("PhysicsMaterial_mu6m3") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@134" type="CollisionShape3D" parent="Seesaw" unique_id=1017013530] +shape = SubResource("BoxShape3D_6rxrs") + +[node name="@MeshInstance3D@135" type="MeshInstance3D" parent="Seesaw" unique_id=899228513] +mesh = SubResource("BoxMesh_w0med") +surface_material_override/0 = SubResource("StandardMaterial3D_grkha") + +[node name="SeesawHinge" type="HingeJoint3D" parent="." unique_id=551149467] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 0.48, -1.5) +node_a = NodePath("../SeesawPivot") +node_b = NodePath("../Seesaw") + +[node name="Sign13" type="Label3D" parent="." unique_id=1401010747] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 1.3, -1.5) +pixel_size = 0.002 +billboard = 2 +text = "Seesaw" +font_size = 96 + +[node name="SwingPostA" type="StaticBody3D" parent="." unique_id=1338566805] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 1.225, 1.5) +collision_mask = 29 + +[node name="@CollisionShape3D@136" type="CollisionShape3D" parent="SwingPostA" unique_id=2094952210] +shape = SubResource("CylinderShape3D_a1yfi") + +[node name="@MeshInstance3D@137" type="MeshInstance3D" parent="SwingPostA" unique_id=1400293600] +mesh = SubResource("CylinderMesh_ui54s") +surface_material_override/0 = SubResource("StandardMaterial3D_osw5u") + +[node name="SwingPostB" type="StaticBody3D" parent="." unique_id=525503595] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 1.225, 1.5) +collision_mask = 29 + +[node name="@CollisionShape3D@138" type="CollisionShape3D" parent="SwingPostB" unique_id=642421014] +shape = SubResource("CylinderShape3D_xbene") + +[node name="@MeshInstance3D@139" type="MeshInstance3D" parent="SwingPostB" unique_id=1361976086] +mesh = SubResource("CylinderMesh_evjhj") +surface_material_override/0 = SubResource("StandardMaterial3D_m606g") + +[node name="SwingBeam" type="StaticBody3D" parent="." unique_id=293251746] +transform = Transform3D(0, -1, 0, 0, 0, -1, 1, 0, 0, -6, 2.4, 1.5) +collision_mask = 29 + +[node name="@CollisionShape3D@140" type="CollisionShape3D" parent="SwingBeam" unique_id=2094642867] +shape = SubResource("CylinderShape3D_govb7") + +[node name="@MeshInstance3D@141" type="MeshInstance3D" parent="SwingBeam" unique_id=38114652] +mesh = SubResource("CylinderMesh_hxb5f") +surface_material_override/0 = SubResource("StandardMaterial3D_62y7e") + +[node name="SwingBoard" type="RigidBody3D" parent="." unique_id=1545369648 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 1.75, 1.5) +collision_mask = 29 +mass = 10.0 +physics_material_override = SubResource("PhysicsMaterial_p6ymp") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@142" type="CollisionShape3D" parent="SwingBoard" unique_id=179091618] +shape = SubResource("BoxShape3D_qop78") + +[node name="@MeshInstance3D@143" type="MeshInstance3D" parent="SwingBoard" unique_id=1917258667] +mesh = SubResource("BoxMesh_1sbvu") +surface_material_override/0 = SubResource("StandardMaterial3D_nndk4") + +[node name="SwingHinge" type="HingeJoint3D" parent="." unique_id=602015624] +transform = Transform3D(0, 0, -1, 0, 1, 0, 1, 0, 0, -6, 2.35, 1.5) +node_a = NodePath("../SwingBeam") +node_b = NodePath("../SwingBoard") + +[node name="Sign14" type="Label3D" parent="." unique_id=136701203] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 2.9, 1.5) +pixel_size = 0.002 +billboard = 2 +text = "Hanging board" +font_size = 96 + +[node name="Crate0" type="RigidBody3D" parent="." unique_id=684290209 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 0.2, 2) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_xiink") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@144" type="CollisionShape3D" parent="Crate0" unique_id=127974443] +shape = SubResource("BoxShape3D_au2ro") + +[node name="@MeshInstance3D@145" type="MeshInstance3D" parent="Crate0" unique_id=2019507026] +mesh = SubResource("BoxMesh_8s8b2") +surface_material_override/0 = SubResource("StandardMaterial3D_alxau") + +[node name="Crate1" type="RigidBody3D" parent="." unique_id=1522416465 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.08, 0.2, 2) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_uvh66") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@146" type="CollisionShape3D" parent="Crate1" unique_id=58853899] +shape = SubResource("BoxShape3D_88h1v") + +[node name="@MeshInstance3D@147" type="MeshInstance3D" parent="Crate1" unique_id=306306017] +mesh = SubResource("BoxMesh_v3n37") +surface_material_override/0 = SubResource("StandardMaterial3D_qmiwq") + +[node name="Crate2" type="RigidBody3D" parent="." unique_id=1329691240 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.66, 0.2, 2) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_ow81m") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@148" type="CollisionShape3D" parent="Crate2" unique_id=1571923919] +shape = SubResource("BoxShape3D_cbmnp") + +[node name="@MeshInstance3D@149" type="MeshInstance3D" parent="Crate2" unique_id=52249813] +mesh = SubResource("BoxMesh_gt26q") +surface_material_override/0 = SubResource("StandardMaterial3D_uj5ey") + +[node name="Crate3" type="RigidBody3D" parent="." unique_id=1221339312 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.29, 0.601, 2) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_d681b") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@150" type="CollisionShape3D" parent="Crate3" unique_id=1585607575] +shape = SubResource("BoxShape3D_ca5qb") + +[node name="@MeshInstance3D@151" type="MeshInstance3D" parent="Crate3" unique_id=1277967752] +mesh = SubResource("BoxMesh_fcskn") +surface_material_override/0 = SubResource("StandardMaterial3D_roqk3") + +[node name="Crate4" type="RigidBody3D" parent="." unique_id=229518214 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.87, 0.601, 2) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_hppca") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@152" type="CollisionShape3D" parent="Crate4" unique_id=2121580616] +shape = SubResource("BoxShape3D_7litv") + +[node name="@MeshInstance3D@153" type="MeshInstance3D" parent="Crate4" unique_id=1742821611] +mesh = SubResource("BoxMesh_uf1on") +surface_material_override/0 = SubResource("StandardMaterial3D_ays1k") + +[node name="Crate5" type="RigidBody3D" parent="." unique_id=330944162 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.08, 1.002, 2) +collision_mask = 29 +mass = 4.0 +physics_material_override = SubResource("PhysicsMaterial_h2svt") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@154" type="CollisionShape3D" parent="Crate5" unique_id=1491586051] +shape = SubResource("BoxShape3D_14mgl") + +[node name="@MeshInstance3D@155" type="MeshInstance3D" parent="Crate5" unique_id=286288978] +mesh = SubResource("BoxMesh_xej6x") +surface_material_override/0 = SubResource("StandardMaterial3D_lnrrm") + +[node name="HeavyBox" type="RigidBody3D" parent="." unique_id=1716916626 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9, 0.35, 4) +collision_mask = 29 +mass = 25.0 +physics_material_override = SubResource("PhysicsMaterial_s5n6d") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@156" type="CollisionShape3D" parent="HeavyBox" unique_id=152653590] +shape = SubResource("BoxShape3D_tbu86") + +[node name="@MeshInstance3D@157" type="MeshInstance3D" parent="HeavyBox" unique_id=325352487] +mesh = SubResource("BoxMesh_sdivr") +surface_material_override/0 = SubResource("StandardMaterial3D_1mlge") + +[node name="Barrel0" type="RigidBody3D" parent="." unique_id=1616400777 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0.425, 4.5) +collision_mask = 29 +mass = 12.0 +physics_material_override = SubResource("PhysicsMaterial_2qo3y") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@158" type="CollisionShape3D" parent="Barrel0" unique_id=978366053] +shape = SubResource("CylinderShape3D_j6lu7") + +[node name="@MeshInstance3D@159" type="MeshInstance3D" parent="Barrel0" unique_id=382862558] +mesh = SubResource("CylinderMesh_bugjv") +surface_material_override/0 = SubResource("StandardMaterial3D_8xmql") + +[node name="Barrel1" type="RigidBody3D" parent="." unique_id=314923690 groups=["prop"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.8, 0.425, 4.5) +collision_mask = 29 +mass = 12.0 +physics_material_override = SubResource("PhysicsMaterial_66v8j") +contact_monitor = true +max_contacts_reported = 4 + +[node name="@CollisionShape3D@160" type="CollisionShape3D" parent="Barrel1" unique_id=851411948] +shape = SubResource("CylinderShape3D_jl4x8") + +[node name="@MeshInstance3D@161" type="MeshInstance3D" parent="Barrel1" unique_id=1530581604] +mesh = SubResource("CylinderMesh_2dnqq") +surface_material_override/0 = SubResource("StandardMaterial3D_yhwwq") + +[node name="BalanceBeam" type="StaticBody3D" parent="." unique_id=1191866526] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11, 0.15, -2) +collision_mask = 29 + +[node name="@CollisionShape3D@162" type="CollisionShape3D" parent="BalanceBeam" unique_id=382791105] +shape = SubResource("BoxShape3D_ti6md") + +[node name="@MeshInstance3D@163" type="MeshInstance3D" parent="BalanceBeam" unique_id=1168847170] +mesh = SubResource("BoxMesh_4ackd") +surface_material_override/0 = SubResource("StandardMaterial3D_xk8qo") + +[node name="Sign15" type="Label3D" parent="." unique_id=625340405] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11, 1.1, -2) +pixel_size = 0.002 +billboard = 2 +text = "Balance beam" +font_size = 96 + +[node name="TunnelRoof" type="StaticBody3D" parent="." unique_id=484511705] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 0.65, 7) +collision_mask = 29 + +[node name="@CollisionShape3D@164" type="CollisionShape3D" parent="TunnelRoof" unique_id=689180663] +shape = SubResource("BoxShape3D_6dg5r") + +[node name="@MeshInstance3D@165" type="MeshInstance3D" parent="TunnelRoof" unique_id=292772888] +mesh = SubResource("BoxMesh_bogif") +surface_material_override/0 = SubResource("StandardMaterial3D_3yyoe") + +[node name="TunnelWallL" type="StaticBody3D" parent="." unique_id=404052796] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.15, 0.3, 7) +collision_mask = 29 + +[node name="@CollisionShape3D@166" type="CollisionShape3D" parent="TunnelWallL" unique_id=453699373] +shape = SubResource("BoxShape3D_shih6") + +[node name="@MeshInstance3D@167" type="MeshInstance3D" parent="TunnelWallL" unique_id=361002469] +mesh = SubResource("BoxMesh_w0q3r") +surface_material_override/0 = SubResource("StandardMaterial3D_0py7j") + +[node name="TunnelWallR" type="StaticBody3D" parent="." unique_id=785574073] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.85, 0.3, 7) +collision_mask = 29 + +[node name="@CollisionShape3D@168" type="CollisionShape3D" parent="TunnelWallR" unique_id=2125261682] +shape = SubResource("BoxShape3D_2wlpg") + +[node name="@MeshInstance3D@169" type="MeshInstance3D" parent="TunnelWallR" unique_id=1030319442] +mesh = SubResource("BoxMesh_ihpiu") +surface_material_override/0 = SubResource("StandardMaterial3D_u5jgj") + +[node name="Sign16" type="Label3D" parent="." unique_id=1183749497] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 1.2, 5.3) +pixel_size = 0.002 +billboard = 2 +text = "Crawl tunnel (0.6 m)" +font_size = 96 + +[node name="DuckPostA" type="StaticBody3D" parent="." unique_id=451939845] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0.65, 7) +collision_mask = 29 + +[node name="@CollisionShape3D@170" type="CollisionShape3D" parent="DuckPostA" unique_id=1410126989] +shape = SubResource("CylinderShape3D_cdc2f") + +[node name="@MeshInstance3D@171" type="MeshInstance3D" parent="DuckPostA" unique_id=999944442] +mesh = SubResource("CylinderMesh_oao1s") +surface_material_override/0 = SubResource("StandardMaterial3D_5khef") + +[node name="DuckPostB" type="StaticBody3D" parent="." unique_id=1163601987] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.6, 0.65, 7) +collision_mask = 29 + +[node name="@CollisionShape3D@172" type="CollisionShape3D" parent="DuckPostB" unique_id=1231475005] +shape = SubResource("CylinderShape3D_07qhc") + +[node name="@MeshInstance3D@173" type="MeshInstance3D" parent="DuckPostB" unique_id=1925122326] +mesh = SubResource("CylinderMesh_j8vqk") +surface_material_override/0 = SubResource("StandardMaterial3D_w6u8e") + +[node name="DuckBar" type="StaticBody3D" parent="." unique_id=1368510343] +transform = Transform3D(0, 1, 0, 0, 0, -1, -1, 0, 0, 1.8, 1.25, 7) +collision_mask = 29 + +[node name="@CollisionShape3D@174" type="CollisionShape3D" parent="DuckBar" unique_id=1206412959] +shape = SubResource("CylinderShape3D_0pji4") + +[node name="@MeshInstance3D@175" type="MeshInstance3D" parent="DuckBar" unique_id=98107730] +mesh = SubResource("CylinderMesh_m3cdy") +surface_material_override/0 = SubResource("StandardMaterial3D_ko1lh") + +[node name="Sign17" type="Label3D" parent="." unique_id=1380073714] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8, 1.8, 7) +pixel_size = 0.002 +billboard = 2 +text = "Duck under (1.2 m)" +font_size = 96 + +[node name="DoorL" type="StaticBody3D" parent="." unique_id=1049529485] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.1, 1.05, 7) +collision_mask = 29 + +[node name="@CollisionShape3D@176" type="CollisionShape3D" parent="DoorL" unique_id=1092647047] +shape = SubResource("BoxShape3D_1ndtr") + +[node name="@MeshInstance3D@177" type="MeshInstance3D" parent="DoorL" unique_id=1678368414] +mesh = SubResource("BoxMesh_aichm") +surface_material_override/0 = SubResource("StandardMaterial3D_1uh00") + +[node name="DoorR" type="StaticBody3D" parent="." unique_id=1309110082] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.1, 1.05, 7) +collision_mask = 29 + +[node name="@CollisionShape3D@178" type="CollisionShape3D" parent="DoorR" unique_id=1790632683] +shape = SubResource("BoxShape3D_3xc6d") + +[node name="@MeshInstance3D@179" type="MeshInstance3D" parent="DoorR" unique_id=577065325] +mesh = SubResource("BoxMesh_1fk52") +surface_material_override/0 = SubResource("StandardMaterial3D_k1ltc") + +[node name="DoorTop" type="StaticBody3D" parent="." unique_id=1051364759] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.6, 2, 7) +collision_mask = 29 + +[node name="@CollisionShape3D@180" type="CollisionShape3D" parent="DoorTop" unique_id=1660183461] +shape = SubResource("BoxShape3D_2cf2k") + +[node name="@MeshInstance3D@181" type="MeshInstance3D" parent="DoorTop" unique_id=2054482188] +mesh = SubResource("BoxMesh_a6am2") +surface_material_override/0 = SubResource("StandardMaterial3D_3d2bp") + +[node name="Sign18" type="Label3D" parent="." unique_id=1256687055] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.6, 2.5, 7) +pixel_size = 0.002 +billboard = 2 +text = "Doorway" +font_size = 96 diff --git a/scripts/Crag.cs b/scripts/Crag.cs index f371514..857abc5 100644 --- a/scripts/Crag.cs +++ b/scripts/Crag.cs @@ -12,11 +12,20 @@ using System.Collections.Generic; // 6. a 0.9 m chimney with holds on both walls up the third tier; // 7. the summit (26 m) with throwable props. Way down: aim at the "Crag" teleport marker at the // base (or jump — no fall damage). -// The cliff faces south (+Z) toward spawn. Every route point is recorded in Route so crag_spike -// can check reach; route bodies in RoutePieces so it can check nothing intersects them. +// The cliff faces south (+Z) toward spawn. EDITOR-BUILT: this is the root of scenes/maps/crag.tscn +// and Rebuild() generates everything into that scene (MapScene: inspector button, or +// tools/rebuild_maps.tscn headless); the game loads the saved scene. The route is saved too: every +// route point is a Marker3D under "Route" (metadata kind/label, in climbing order), route bodies are in +// group "crag_route" and rock in "crag_mass" — Route/RoutePieces/MassPieces are read back from the +// saved nodes on _Ready, so crag_spike checks the scene as saved (and as hand-edited). +[Tool] public partial class Crag : Node3D { + [ExportToolButton("Rebuild (replaces all children)")] + public Callable RebuildButton => Callable.From(RebuildInEditor); + public enum Step { Stand, Hold } + public const string RouteNode = "Route", RouteGroup = "crag_route", MassGroup = "crag_mass"; public readonly List<(Step Kind, Vector3 Point, string Name)> Route = new(); public readonly List<(CollisionObject3D Body, Aabb Box)> RoutePieces = new(); public readonly List<(CollisionObject3D Body, Aabb Box)> MassPieces = new(); @@ -37,25 +46,76 @@ public partial class Crag : Node3D public override void _Ready() { + if (Engine.IsEditorHint()) + return; + MapScene.CollectProps(this, _dynamic); + ReadLayout(); + } + + public void Reset() => MapScene.Reset(_dynamic); + + private void RebuildInEditor() + { + if (!MapScene.CanRebuildInEditor(this)) + return; + Rebuild(); + MapScene.MarkUnsaved(); + } + + // Replaces every child with the generated layout, owned by this map (saved with its scene). + public void Rebuild() + { + MapScene.Clear(this); + _rng.Seed = 26; // same rubble/talus every rebuild + _route = new Node3D { Name = RouteNode }; + AddChild(_route); BuildMass(); BuildRoute(); BuildBase(); BuildSummitProps(); + MapScene.Adopt(this); + ReadLayout(); } - public void Reset() + // Route points and piece bounds from the (saved) nodes. + public void ReadLayout() { - foreach (var (body, start) in _dynamic) + Route.Clear(); + RoutePieces.Clear(); + MassPieces.Clear(); + if (GetNodeOrNull(RouteNode) is Node route) + foreach (Node child in route.GetChildren()) + if (child is Marker3D m) + Route.Add(((Step)(int)m.GetMeta("kind"), m.GlobalPosition, (string)m.GetMeta("label"))); + foreach (Node child in GetChildren()) { - if (!IsInstanceValid(body)) + if (child is not CollisionObject3D body) continue; - body.GlobalTransform = start; - body.LinearVelocity = Vector3.Zero; - body.AngularVelocity = Vector3.Zero; - body.ResetPhysicsInterpolation(); + if (body.IsInGroup(RouteGroup)) + RoutePieces.Add((body, Bounds(body))); + else if (body.IsInGroup(MassGroup)) + MassPieces.Add((body, Bounds(body))); } } + // World bounds of a box or a cylinder piece (a cylinder's ends are flat: radius across its axis only). + private static Aabb Bounds(CollisionObject3D body) + { + CollisionShape3D cs = body.GetChildOrNull(0); + Transform3D t = body.GlobalTransform * cs.Transform; + if (cs.Shape is CylinderShape3D cyl) + { + Vector3 from = t * new Vector3(0f, -cyl.Height * 0.5f, 0f), to = t * new Vector3(0f, cyl.Height * 0.5f, 0f); + Vector3 d = (to - from).Normalized(), r = new( + cyl.Radius * Mathf.Sqrt(Mathf.Max(0f, 1f - d.X * d.X)), cyl.Radius * Mathf.Sqrt(Mathf.Max(0f, 1f - d.Y * d.Y)), cyl.Radius * Mathf.Sqrt(Mathf.Max(0f, 1f - d.Z * d.Z))); + return new Aabb(from - r, Vector3.Zero).Expand(from + r).Expand(to - r).Expand(to + r); + } + Vector3 size = ((BoxShape3D)cs.Shape).Size; + return t * new Aabb(-size * 0.5f, size); + } + + private Node3D _route; + // ---------------------------------------------------------------- the rock private void BuildMass() @@ -241,8 +301,9 @@ public partial class Crag : Node3D // The way down: a teleport marker at the base (aim at it from the summit). Node3D marker = GD.Load("res://scenes/teleport_marker.tscn").Instantiate(); marker.Set("MarkerLabel", "Crag"); + marker.Name = "CragMarker"; marker.Position = new Vector3(1.5f, 0f, -9.5f); - AddChild(marker); + AddChild(marker, true); } private void BuildSummitProps() @@ -258,45 +319,47 @@ public partial class Crag : Node3D // ---------------------------------------------------------------- builders - private void AddStep(Step kind, Vector3 point, string name) => Route.Add((kind, point, name)); + // A route point: an editor-visible Marker3D under "Route", in climbing order. + private void AddStep(Step kind, Vector3 point, string name) + { + Marker3D m = new() { Name = kind == Step.Hold ? "Hold" : "Stand", Position = point }; + m.SetMeta("kind", (int)kind); + m.SetMeta("label", name); + _route.AddChild(m, true); + } private StaticBody3D Mass(string name, Vector3 size, Vector3 center, Color color, Basis? basis = null) { StaticBody3D b = Block(name, size, center, color, true, basis); - MassPieces.Add((b, BoxAabb(size, b.Transform))); + b.AddToGroup(MassGroup, true); return b; } private StaticBody3D RouteBlock(string name, Vector3 size, Vector3 center, Color color, bool castShadow = true) { StaticBody3D b = Block(name, size, center, color, castShadow); - RoutePieces.Add((b, BoxAabb(size, b.Transform))); + b.AddToGroup(RouteGroup, true); return b; } private StaticBody3D RouteBar(string name, Vector3 from, Vector3 to, float radius, Color color) { StaticBody3D b = Bar(name, from, to, radius, color); - // Bounds of the cylinder: radius across the axis only (the ends are flat). - Vector3 d = (to - from).Normalized(), r = new Vector3( - radius * Mathf.Sqrt(Mathf.Max(0f, 1f - d.X * d.X)), radius * Mathf.Sqrt(Mathf.Max(0f, 1f - d.Y * d.Y)), radius * Mathf.Sqrt(Mathf.Max(0f, 1f - d.Z * d.Z))); - RoutePieces.Add((b, new Aabb(from - r, Vector3.Zero).Expand(from + r).Expand(to - r).Expand(to + r))); + b.AddToGroup(RouteGroup, true); return b; } - private static Aabb BoxAabb(Vector3 size, Transform3D t) => t * new Aabb(-size * 0.5f, size); - private StaticBody3D Block(string name, Vector3 size, Vector3 center, Color color, bool castShadow, Basis? basis = null, bool grab = true) { StaticBody3D body = new() { Name = name, CollisionLayer = WorldLayer, CollisionMask = WorldMask, Transform = new Transform3D(basis ?? Basis.Identity, center) }; if (!grab) - body.AddToGroup(PropGrabber.NoGrabGroup); + body.AddToGroup(PropGrabber.NoGrabGroup, true); body.AddChild(new CollisionShape3D { Shape = new BoxShape3D { Size = size } }); MeshInstance3D mesh = Mesh(new BoxMesh { Size = size }, color); if (!castShadow) mesh.CastShadow = GeometryInstance3D.ShadowCastingSetting.Off; body.AddChild(mesh); - AddChild(body); + AddChild(body, true); return body; } @@ -309,7 +372,7 @@ public partial class Crag : Node3D StaticBody3D body = new() { Name = name, CollisionLayer = WorldLayer, CollisionMask = WorldMask, Transform = new Transform3D(new Basis(x, y, x.Cross(y)), (from + to) * 0.5f) }; body.AddChild(new CollisionShape3D { Shape = new CylinderShape3D { Radius = radius, Height = len } }); body.AddChild(Mesh(new CylinderMesh { TopRadius = radius, BottomRadius = radius, Height = len, RadialSegments = 12 }, color)); - AddChild(body); + AddChild(body, true); return body; } @@ -325,11 +388,10 @@ public partial class Crag : Node3D MaxContactsReported = 4, PhysicsMaterialOverride = new PhysicsMaterial { Friction = 0.8f, Bounce = 0.05f }, }; - body.AddToGroup("prop"); + body.AddToGroup(MapScene.PropGroup, true); body.AddChild(new CollisionShape3D { Shape = shape }); body.AddChild(Mesh(mesh, color)); - AddChild(body); - _dynamic.Add((body, body.GlobalTransform)); + AddChild(body, true); return body; } @@ -347,12 +409,13 @@ public partial class Crag : Node3D { AddChild(new Label3D { + Name = "Sign", Text = text, FontSize = 96, PixelSize = 0.002f * scale, OutlineSize = 12, Billboard = BaseMaterial3D.BillboardModeEnum.FixedY, Position = at, - }); + }, true); } } diff --git a/scripts/CragSpike.cs b/scripts/CragSpike.cs index b658b4f..311b619 100644 --- a/scripts/CragSpike.cs +++ b/scripts/CragSpike.cs @@ -1,7 +1,8 @@ using Godot; using System.Collections.Generic; -// Regression for the crag (no player): the route is climbable on paper — consecutive route points +// Regression for the crag (no player), checked on the SAVED scenes/maps/crag.tscn (route = its +// Route markers; rebuild with tools/rebuild_maps.tscn): the route is climbable on paper — consecutive route points // within human reach, every point in free space, route pieces not buried in each other or the // rock — the summit is high enough, and it's in plain view from spawn. Prints "CRAG: overall PASS". public partial class CragSpike : Node3D @@ -23,8 +24,9 @@ public partial class CragSpike : Node3D floor.AddToGroup(PropGrabber.NoGrabGroup); floor.AddChild(new CollisionShape3D { Shape = new BoxShape3D { Size = new Vector3(80, 0.1f, 80) }, Position = new Vector3(0, -0.05f, 0) }); AddChild(floor); - AddChild(new Playground()); - _crag = new Crag(); + // The SAVED scenes (as the game loads them, hand edits included), not a fresh rebuild. + AddChild(GD.Load("res://scenes/maps/playground.tscn").Instantiate()); + _crag = GD.Load("res://scenes/maps/crag.tscn").Instantiate(); AddChild(_crag); } diff --git a/scripts/MapScene.cs b/scripts/MapScene.cs new file mode 100644 index 0000000..7fe8cdd --- /dev/null +++ b/scripts/MapScene.cs @@ -0,0 +1,80 @@ +using Godot; +using System.Collections.Generic; + +// Shared plumbing for the editor-built maps (Playground, Crag). Each map is the ROOT of its own scene +// (scenes/maps/*.tscn) with a [Tool] script whose Rebuild() regenerates every child from code and +// gives it to the scene (Owner = the map root) so it is saved into the .tscn like hand-made nodes. +// The game never regenerates: it loads what was saved, so edits made in the editor stick (until the +// next Rebuild, which replaces ALL children). Rebuild from the inspector button with the map scene +// open, or headless for agents: godot-mono --headless --path . tools/rebuild_maps.tscn +public static class MapScene +{ + public const string PropGroup = "prop"; + + // The inspector button only works with the map scene itself open (nodes owned by an instanced + // sub-scene's root aren't saved into the outer scene). + public static bool CanRebuildInEditor(Node map) + { + if (map.GetTree()?.EditedSceneRoot == map) + return true; + GD.PushWarning($"{map.Name}: open its own scene (scenes/maps/) to rebuild it — it's instanced here."); + return false; + } + + public static void Clear(Node map) + { + foreach (Node child in map.GetChildren()) + { + map.RemoveChild(child); + child.Free(); + } + } + + // Every generated node belongs to the map scene; children of instanced sub-scenes (e.g. a + // teleport marker) keep their own owner. + public static void Adopt(Node map) + { + foreach (Node child in map.GetChildren()) + Adopt(map, child); + } + + private static void Adopt(Node root, Node node) + { + if (node.Owner == null) + node.Owner = root; + if (node.SceneFilePath != "") + return; + foreach (Node child in node.GetChildren()) + Adopt(root, child); + } + + public static void MarkUnsaved() + { +#if TOOLS + if (Engine.IsEditorHint()) + EditorInterface.Singleton.MarkSceneAsUnsaved(); +#endif + } + + // Runtime: the dynamic props (group "prop") and where they start, for Reset(). + public static void CollectProps(Node map, List<(RigidBody3D Body, Transform3D Start)> props) + { + props.Clear(); + foreach (Node child in map.GetChildren()) + if (child is RigidBody3D body && body.IsInGroup(PropGroup)) + props.Add((body, body.GlobalTransform)); + } + + public static void Reset(List<(RigidBody3D Body, Transform3D Start)> props) + { + foreach (var (body, start) in props) + { + if (!GodotObject.IsInstanceValid(body)) + continue; + body.GlobalTransform = start; + body.LinearVelocity = Vector3.Zero; + body.AngularVelocity = Vector3.Zero; + body.ResetPhysicsInterpolation(); + } + } +} diff --git a/scripts/MapScene.cs.uid b/scripts/MapScene.cs.uid new file mode 100644 index 0000000..a69e5f8 --- /dev/null +++ b/scripts/MapScene.cs.uid @@ -0,0 +1 @@ +uid://d0oo5qx6v57bs diff --git a/scripts/Playground.cs b/scripts/Playground.cs index b689705..7eac49b 100644 --- a/scripts/Playground.cs +++ b/scripts/Playground.cs @@ -1,7 +1,9 @@ using Godot; using System.Collections.Generic; -// The body-physics sandbox (Nimso-sandbox style), built in code around the spawn/table area: +// The body-physics sandbox (Nimso-sandbox style) around the spawn/table area. EDITOR-BUILT: this is the +// root of scenes/maps/playground.tscn and Rebuild() generates the pieces below into that scene +// (MapScene: inspector button, or tools/rebuild_maps.tscn headless); the game loads the saved scene. // EAST — mantling ledges (0.3 … 1.5 m), a 1 m platform with stairs, a walkable 18° ramp and a // too-steep 40° one, a climbing wall with holds onto a 2.4 m top, a pull-up bar, monkey bars. // WEST — physics toys: a plank bridge on two blocks (walk on it / knock it off), loose planks, @@ -10,8 +12,12 @@ using System.Collections.Generic; // SOUTH — a crawl tunnel (0.6 m clearance), a duck-under bar (1.2 m) and a doorway. // Static pieces are world (layer 1) and grabbable for climbing (PropGrabber grabs any static body // not in "no_grab"); dynamic pieces are "prop"s (grab/push) and come back with Reset(). +[Tool] public partial class Playground : Node3D { + [ExportToolButton("Rebuild (replaces all children)")] + public Callable RebuildButton => Callable.From(RebuildInEditor); + private readonly List<(RigidBody3D Body, Transform3D Start)> _dynamic = new(); private const uint WorldLayer = 1, WorldMask = 0b11101, PropMask = 0b11101; @@ -21,22 +27,28 @@ public partial class Playground : Node3D public override void _Ready() { + if (!Engine.IsEditorHint()) + MapScene.CollectProps(this, _dynamic); + } + + public void Reset() => MapScene.Reset(_dynamic); + + private void RebuildInEditor() + { + if (!MapScene.CanRebuildInEditor(this)) + return; + Rebuild(); + MapScene.MarkUnsaved(); + } + + // Replaces every child with the generated layout, owned by this map (saved with its scene). + public void Rebuild() + { + MapScene.Clear(this); BuildEast(); BuildWest(); BuildSouth(); - } - - public void Reset() - { - foreach (var (body, start) in _dynamic) - { - if (!IsInstanceValid(body)) - continue; - body.GlobalTransform = start; - body.LinearVelocity = Vector3.Zero; - body.AngularVelocity = Vector3.Zero; - body.ResetPhysicsInterpolation(); - } + MapScene.Adopt(this); } // ---------------------------------------------------------------- builders @@ -46,7 +58,7 @@ public partial class Playground : Node3D StaticBody3D body = new() { Name = name, CollisionLayer = WorldLayer, CollisionMask = WorldMask, Transform = new Transform3D(basis ?? Basis.Identity, center) }; body.AddChild(new CollisionShape3D { Shape = new BoxShape3D { Size = size } }); body.AddChild(Mesh(new BoxMesh { Size = size }, color)); - AddChild(body); + AddChild(body, true); return body; } @@ -59,7 +71,7 @@ public partial class Playground : Node3D StaticBody3D body = new() { Name = name, CollisionLayer = WorldLayer, CollisionMask = WorldMask, Transform = new Transform3D(new Basis(x, y, x.Cross(y)), (from + to) * 0.5f) }; body.AddChild(new CollisionShape3D { Shape = new CylinderShape3D { Radius = radius, Height = len } }); body.AddChild(Mesh(new CylinderMesh { TopRadius = radius, BottomRadius = radius, Height = len, RadialSegments = 12 }, color)); - AddChild(body); + AddChild(body, true); return body; } @@ -75,11 +87,10 @@ public partial class Playground : Node3D MaxContactsReported = 4, PhysicsMaterialOverride = new PhysicsMaterial { Friction = friction, Bounce = 0.05f }, }; - body.AddToGroup("prop"); + body.AddToGroup(MapScene.PropGroup, true); body.AddChild(new CollisionShape3D { Shape = shape }); body.AddChild(Mesh(mesh, color)); - AddChild(body); - _dynamic.Add((body, body.GlobalTransform)); + AddChild(body, true); return body; } @@ -97,13 +108,14 @@ public partial class Playground : Node3D { AddChild(new Label3D { + Name = "Sign", Text = text, FontSize = 96, PixelSize = 0.002f, OutlineSize = 12, Billboard = BaseMaterial3D.BillboardModeEnum.FixedY, Position = at, - }); + }, true); } // ---------------------------------------------------------------- zones @@ -183,13 +195,16 @@ public partial class Playground : Node3D // Seesaw: a plank hinged on a pivot block. Block("SeesawPivot", new Vector3(0.3f, 0.45f, 0.5f), new Vector3(-8.5f, 0.225f, -1.5f), Metal); RigidBody3D seesaw = BoxProp("Seesaw", new Vector3(3.2f, 0.06f, 0.45f), 12f, new Vector3(-8.5f, 0.48f, -1.5f), DarkWood); + // Joint paths resolve relative to the joint (a sibling here) and are saved that way; set + // before AddChild so the joint never exists without its bodies. HingeJoint3D pivot = new() { + Name = "SeesawHinge", Transform = new Transform3D(new Basis(Vector3.Right, Vector3.Up, Vector3.Back), new Vector3(-8.5f, 0.48f, -1.5f)), - NodeA = GetNode("SeesawPivot").GetPath(), // absolute: joint paths resolve relative to the joint - NodeB = seesaw.GetPath(), + NodeA = $"../{GetNode("SeesawPivot").Name}", + NodeB = $"../{seesaw.Name}", }; - AddChild(pivot); + AddChild(pivot, true); Sign("Seesaw", new Vector3(-8.5f, 1.3f, -1.5f)); // Swing board: a 10 kg board hinged at its top edge from a 2.4 m beam — grab it and hang. @@ -199,11 +214,12 @@ public partial class Playground : Node3D RigidBody3D board = BoxProp("SwingBoard", new Vector3(1.2f, 1.2f, 0.05f), 10f, new Vector3(-6f, 1.75f, 1.5f), Wood); HingeJoint3D swing = new() { + Name = "SwingHinge", Transform = new Transform3D(new Basis(Vector3.Back, Vector3.Up, Vector3.Left), new Vector3(-6f, 2.35f, 1.5f)), - NodeA = beam.GetPath(), - NodeB = board.GetPath(), + NodeA = $"../{beam.Name}", + NodeB = $"../{board.Name}", }; - AddChild(swing); + AddChild(swing, true); Sign("Hanging board", new Vector3(-6f, 2.9f, 1.5f)); // Crate pyramid (4 kg each), a heavy 25 kg box, barrels. diff --git a/scripts/RagdollSpike.cs b/scripts/RagdollSpike.cs index 9fcfc1c..3f20372 100644 --- a/scripts/RagdollSpike.cs +++ b/scripts/RagdollSpike.cs @@ -1193,7 +1193,8 @@ public partial class RagdollSpike : Node3D private void SetupPlayground() { Rest(); - _playground = new Playground { Position = new Vector3(0f, 0f, 40f) }; // far from the player + _playground = GD.Load("res://scenes/maps/playground.tscn").Instantiate(); // the saved scene + _playground.Position = new Vector3(0f, 0f, 40f); // far from the player _stage.AddChild(_playground); } diff --git a/tools/MapDump.cs b/tools/MapDump.cs new file mode 100644 index 0000000..936473f --- /dev/null +++ b/tools/MapDump.cs @@ -0,0 +1,62 @@ +using Godot; +using System.Collections.Generic; +using System.Linq; + +// Dumps the map layout (type, transform, shape/mesh size, groups) sorted, for before/after comparison. +// godot-mono --headless --path . tools/map_dump.tscn -- out= +public partial class MapDump : Node3D +{ + private int _frame; + + public override void _Ready() + { + foreach (string path in RebuildMaps.Maps) + AddChild(GD.Load(path).Instantiate()); + } + + public override void _Process(double delta) + { + if (++_frame < 3) + return; + string outPath = "/tmp/claude-1000/maps/dump.txt"; + foreach (string a in OS.GetCmdlineUserArgs()) + if (a.StartsWith("out=")) + outPath = a[4..]; + var lines = new List(); + foreach (Node map in GetChildren()) + Walk(map, map.GetType().Name, lines); + lines.Sort(System.StringComparer.Ordinal); + System.IO.File.WriteAllLines(outPath, lines); + GD.Print($"MAPDUMP: {lines.Count} nodes → {outPath}"); + GetTree().Quit(); + } + + private static string R(Vector3 v) => $"({v.X:F3},{v.Y:F3},{v.Z:F3})"; + + private void Walk(Node n, string map, List lines) + { + foreach (Node ch in n.GetChildren()) + { + string info = ch.GetClass(); + if (ch is Node3D n3) + { + Transform3D t = n3.GlobalTransform; + info += $" o{R(t.Origin)} x{R(t.Basis.X)} y{R(t.Basis.Y)}"; + } + if (ch is CollisionShape3D cs && cs.Shape is BoxShape3D bs) info += $" box{R(bs.Size)}"; + if (ch is CollisionShape3D cc && cc.Shape is CylinderShape3D cy) info += $" cyl{cy.Radius:F3}/{cy.Height:F3}"; + if (ch is CollisionShape3D cp && cp.Shape is SphereShape3D sp) info += $" sph{sp.Radius:F3}"; + if (ch is MeshInstance3D mi && mi.GetSurfaceOverrideMaterial(0) is StandardMaterial3D m) info += $" col{m.AlbedoColor.ToHtml()} sh{(int)mi.CastShadow}"; + if (ch is Label3D l) info += $" text[{l.Text}] px{l.PixelSize:F4}"; + if (ch is CollisionObject3D co) info += $" L{co.CollisionLayer}/{co.CollisionMask}"; + if (ch is RigidBody3D rb) info += $" m{rb.Mass:F2} f{rb.PhysicsMaterialOverride?.Friction:F2}"; + var groups = ch.GetGroups().Select(g => g.ToString()).Where(g => !g.StartsWith("_")).OrderBy(g => g); + info += " g[" + string.Join(",", groups) + "]"; + if (ch is Joint3D j) info += $" joint {j.GetNodeOrNull(j.NodeA)?.GetClass()}@{R((j.GetNodeOrNull(j.NodeA) as Node3D)?.GlobalPosition ?? Vector3.Zero)}-{j.GetNodeOrNull(j.NodeB)?.GetClass()}@{R((j.GetNodeOrNull(j.NodeB) as Node3D)?.GlobalPosition ?? Vector3.Zero)}"; + if (ch.GetType().Name == "TeleportMarker" || ch.SceneFilePath != "") info += $" scene[{ch.SceneFilePath}] label[{ch.Get("MarkerLabel")}]"; + lines.Add($"{map}: {info}"); + if (ch.SceneFilePath == "") + Walk(ch, map, lines); + } + } +} diff --git a/tools/MapDump.cs.uid b/tools/MapDump.cs.uid new file mode 100644 index 0000000..d22ea0e --- /dev/null +++ b/tools/MapDump.cs.uid @@ -0,0 +1 @@ +uid://bt87gcewn6ihe diff --git a/tools/PlaygroundShots.cs b/tools/PlaygroundShots.cs index d6f2923..a364555 100644 --- a/tools/PlaygroundShots.cs +++ b/tools/PlaygroundShots.cs @@ -31,8 +31,8 @@ public partial class PlaygroundShots : Node3D floor.AddChild(new CollisionShape3D { Shape = new BoxShape3D { Size = new Vector3(80, 0.1f, 80) }, Position = new Vector3(0, -0.05f, 0) }); floor.AddChild(new MeshInstance3D { Mesh = new PlaneMesh { Size = new Vector2(80, 80) } }); AddChild(floor); - AddChild(new Playground()); - AddChild(new Crag()); + AddChild(GD.Load("res://scenes/maps/playground.tscn").Instantiate()); // the saved maps + AddChild(GD.Load("res://scenes/maps/crag.tscn").Instantiate()); _cam = new Camera3D { Current = true }; AddChild(_cam); SetView(); diff --git a/tools/RebuildMaps.cs b/tools/RebuildMaps.cs new file mode 100644 index 0000000..713061f --- /dev/null +++ b/tools/RebuildMaps.cs @@ -0,0 +1,68 @@ +using Godot; + +// Headless map rebuild for agents (same as pressing each map's "Rebuild" button in the editor and +// saving): loads each map scene, regenerates its children from code and saves it back. +// godot-mono --headless --path . tools/rebuild_maps.tscn [-- only=playground|crag] +// Prints "MAPS: rebuilt ( nodes)" per map and "MAPS: done". Overwrites hand edits in those +// scenes — that's what Rebuild means. +public partial class RebuildMaps : Node +{ + public static readonly string[] Maps = { "res://scenes/maps/playground.tscn", "res://scenes/maps/crag.tscn" }; + + public override void _Ready() + { + string only = null; + foreach (string a in OS.GetCmdlineUserArgs()) + if (a.StartsWith("only=")) + only = a[5..]; + bool ok = true; + foreach (string path in Maps) + { + if (only != null && !path.Contains(only)) + continue; + ok &= RebuildOne(path); + } + GD.Print(ok ? "MAPS: done" : "MAPS: FAILED"); + GetTree().Quit(ok ? 0 : 1); + } + + private bool RebuildOne(string path) + { + Node map = ResourceLoader.Load(path, null, ResourceLoader.CacheMode.Ignore).Instantiate(); + AddChild(map); // in the tree, so joint paths and globals resolve like in the editor + switch (map) + { + case Playground p: + p.Rebuild(); + break; + case Crag c: + c.Rebuild(); + break; + default: + GD.PushError($"MAPS: {path} root is not a map ({map.GetType().Name})"); + return false; + } + RemoveChild(map); + PackedScene packed = new(); + Error err = packed.Pack(map); + if (err == Error.Ok) + err = ResourceSaver.Save(packed, path); + int count = CountOwned(map, map); + map.Free(); + if (err != Error.Ok) + { + GD.PushError($"MAPS: saving {path} failed: {err}"); + return false; + } + GD.Print($"MAPS: rebuilt {path} ({count} nodes)"); + return true; + } + + private static int CountOwned(Node root, Node n) + { + int c = 0; + foreach (Node child in n.GetChildren()) + c += (child.Owner == root ? 1 : 0) + CountOwned(root, child); + return c; + } +} diff --git a/tools/RebuildMaps.cs.uid b/tools/RebuildMaps.cs.uid new file mode 100644 index 0000000..4df9e38 --- /dev/null +++ b/tools/RebuildMaps.cs.uid @@ -0,0 +1 @@ +uid://cd3m3hyr27lpy diff --git a/tools/map_dump.tscn b/tools/map_dump.tscn new file mode 100644 index 0000000..049c6a8 --- /dev/null +++ b/tools/map_dump.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://tools/MapDump.cs" id="1"] + +[node name="MapDump" type="Node3D"] +script = ExtResource("1") diff --git a/tools/rebuild_maps.tscn b/tools/rebuild_maps.tscn new file mode 100644 index 0000000..b6d8b16 --- /dev/null +++ b/tools/rebuild_maps.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://tools/RebuildMaps.cs" id="1"] + +[node name="RebuildMaps" type="Node"] +script = ExtResource("1")