Godot interaction system init

This commit is contained in:
2026-08-17 20:06:51 +03:00
commit a86839c8cd
53 changed files with 2134 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf
+3
View File
@@ -0,0 +1,3 @@
# Godot 4+ specific ignores
.godot/
/android/
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dykfn12jy713j"
path="res://.godot/imported/CrosshairHover.png-a85d3d697df307bed3f174b2e4bd61bd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Images/CrosshairHover.png"
dest_files=["res://.godot/imported/CrosshairHover.png-a85d3d697df307bed3f174b2e4bd61bd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://0ihhmm8mwb35"
path="res://.godot/imported/CrosshairNormal.png-38a8a7822df527679673b9473452e22e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Images/CrosshairNormal.png"
dest_files=["res://.godot/imported/CrosshairNormal.png-38a8a7822df527679673b9473452e22e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
+21
View File
@@ -0,0 +1,21 @@
[gd_scene format=3 uid="uid://cwwsolupah1s3"]
[ext_resource type="PackedScene" uid="uid://cpog4xqme7wqj" path="res://Player.tscn" id="1_glv2v"]
[sub_resource type="BoxMesh" id="BoxMesh_1blfk"]
size = Vector3(50, 0.1, 50)
[sub_resource type="BoxShape3D" id="BoxShape3D_va8t4"]
size = Vector3(50, 0.1, 50)
[node name="Main" type="Node3D" unique_id=856459222]
[node name="StaticBody3D" type="StaticBody3D" parent="." unique_id=268564877]
[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D" unique_id=427946866]
mesh = SubResource("BoxMesh_1blfk")
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" unique_id=2109163521]
shape = SubResource("BoxShape3D_va8t4")
[node name="Player" parent="." unique_id=1270645855 instance=ExtResource("1_glv2v")]
Binary file not shown.
+19
View File
@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://dkc00xclmtkbo"
path="res://.godot/imported/Buy Something!.mp3-4458c1edcd46268f36485e24e39e6554.mp3str"
[deps]
source_file="res://Scenes/Buy Something!.mp3"
dest_files=["res://.godot/imported/Buy Something!.mp3-4458c1edcd46268f36485e24e39e6554.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
+38
View File
@@ -0,0 +1,38 @@
[gd_scene format=3 uid="uid://8xgne2anpltj"]
[ext_resource type="Script" uid="uid://dd8ys8xg3q3sw" path="res://Scripts/Crosshair.gd" id="1_gksq7"]
[ext_resource type="Texture2D" uid="uid://0ihhmm8mwb35" path="res://Images/CrosshairNormal.png" id="1_vlax0"]
[ext_resource type="Texture2D" uid="uid://dykfn12jy713j" path="res://Images/CrosshairHover.png" id="2_gksq7"]
[node name="Crosshair" type="CanvasLayer" unique_id=577244800]
script = ExtResource("1_gksq7")
normalTexture = ExtResource("1_vlax0")
hoverTexture = ExtResource("2_gksq7")
[node name="NormalCrosshair" type="TextureRect" parent="." unique_id=205010982]
custom_maximum_size = Vector2(64, 64)
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -72.0
offset_top = -72.0
offset_right = 72.0
offset_bottom = 72.0
grow_horizontal = 2
grow_vertical = 2
[node name="HoverCrosshair" type="TextureRect" parent="." unique_id=2141817914]
custom_maximum_size = Vector2(64, 64)
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -72.0
offset_top = -72.0
offset_right = 72.0
offset_bottom = 72.0
grow_horizontal = 2
grow_vertical = 2
+78
View File
@@ -0,0 +1,78 @@
[gd_scene format=3 uid="uid://hmpweoahtner"]
[ext_resource type="Script" uid="uid://cyw8ng7alo12e" path="res://Scripts/Door.gd" id="1_1vvux"]
[sub_resource type="BoxMesh" id="BoxMesh_va8t4"]
size = Vector3(0.2, 3, 0.2)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f1iwm"]
albedo_color = Color(1, 0, 0, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_476pq"]
size = Vector3(0.2, 3, 0.2)
[sub_resource type="BoxShape3D" id="BoxShape3D_va8t4"]
size = Vector3(1.5, 3, 0.1)
[sub_resource type="BoxMesh" id="BoxMesh_1blfk"]
size = Vector3(1.5, 3, 0.1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4dq1k"]
albedo_color = Color(0.18070471, 0.12822011, 6.016344e-08, 1)
[node name="Door" type="Node3D" unique_id=2086051002 node_paths=PackedStringArray("body", "hinge")]
script = ExtResource("1_1vvux")
body = NodePath("DoorBody")
hinge = NodePath("HingeJoint3D")
hingeAngularLowerLimit = 0.0
snapVelocityThreshold = 2.0
[node name="Frame" type="StaticBody3D" parent="." unique_id=1425869315]
[node name="MeshInstance3D" type="MeshInstance3D" parent="Frame" unique_id=402301167]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.35, 1.5, 0)
mesh = SubResource("BoxMesh_va8t4")
surface_material_override/0 = SubResource("StandardMaterial3D_f1iwm")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Frame" unique_id=1028358895]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.35, 1.5, 0)
shape = SubResource("BoxShape3D_476pq")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Frame" unique_id=1629149026]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.35, 1.5, 0)
mesh = SubResource("BoxMesh_va8t4")
surface_material_override/0 = SubResource("StandardMaterial3D_f1iwm")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="Frame" unique_id=1273426324]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.35, 1.5, 0)
shape = SubResource("BoxShape3D_476pq")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="Frame" unique_id=800996442]
transform = Transform3D(-4.371139e-08, -0.635, 0, 1, -2.7756732e-08, 0, 0, 0, 1, 0.5, 3.1, 0)
mesh = SubResource("BoxMesh_va8t4")
surface_material_override/0 = SubResource("StandardMaterial3D_f1iwm")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Frame" unique_id=1785799541]
transform = Transform3D(-4.371139e-08, -0.635, 0, 1, -2.7756732e-08, 0, 0, 0, 1, 0.5, 3.1, 0)
shape = SubResource("BoxShape3D_476pq")
[node name="DoorBody" type="RigidBody3D" parent="." unique_id=1982348670]
axis_lock_angular_x = true
axis_lock_angular_z = true
mass = 10.0
angular_damp = 5.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="DoorBody" unique_id=2068198605]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 1.5, 0)
shape = SubResource("BoxShape3D_va8t4")
[node name="MeshInstance3D" type="MeshInstance3D" parent="DoorBody" unique_id=502246902]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 1.5, 0)
mesh = SubResource("BoxMesh_1blfk")
surface_material_override/0 = SubResource("StandardMaterial3D_4dq1k")
[node name="HingeJoint3D" type="HingeJoint3D" parent="." unique_id=1587300072]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.25, 1.5, 0)
node_a = NodePath("../Frame")
node_b = NodePath("../DoorBody")
angular_limit/enable = true
+124
View File
@@ -0,0 +1,124 @@
[gd_scene format=3 uid="uid://cwwsolupah1s3"]
[ext_resource type="PackedScene" uid="uid://cpog4xqme7wqj" path="res://Scenes/Player.tscn" id="1_pbw6q"]
[ext_resource type="PackedScene" uid="uid://hmpweoahtner" path="res://Scenes/Door.tscn" id="2_v1gob"]
[ext_resource type="PackedScene" uid="uid://dgre5brxnbps0" path="res://Scenes/MedievalDoor.tscn" id="3_jw32o"]
[ext_resource type="Script" uid="uid://cvg1f1wtahy0t" path="res://TestScripts/BlockMover.gd" id="4_50glp"]
[ext_resource type="PackedScene" uid="uid://cfheqck1xs2bs" path="res://Scenes/SimpleButton.tscn" id="5_vy5pj"]
[ext_resource type="PackedScene" uid="uid://b0fqh430x23kp" path="res://Scenes/SimpleLever.tscn" id="6_v1gob"]
[ext_resource type="PackedScene" uid="uid://cjqsmugd22cdh" path="res://Scenes/SimplePickupable.tscn" id="7_jw32o"]
[ext_resource type="PackedScene" uid="uid://cyn6cmirqiiya" path="res://Scenes/SpatialAudioPlayer.tscn" id="8_bmxlf"]
[ext_resource type="AudioStream" uid="uid://dkc00xclmtkbo" path="res://Scenes/Buy Something!.mp3" id="8_vy5pj"]
[ext_resource type="PackedScene" uid="uid://dknge5384ijcx" path="res://Scenes/SimpleKey.tscn" id="10_bmxlf"]
[sub_resource type="BoxMesh" id="BoxMesh_1blfk"]
size = Vector3(50, 0.1, 50)
[sub_resource type="BoxShape3D" id="BoxShape3D_va8t4"]
size = Vector3(50, 0.1, 50)
[sub_resource type="Environment" id="Environment_1blfk"]
[sub_resource type="BoxMesh" id="BoxMesh_fos0i"]
[node name="Main" type="Node3D" unique_id=856459222]
[node name="StaticBody3D" type="StaticBody3D" parent="." unique_id=268564877]
collision_layer = 17
[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D" unique_id=427946866]
layers = 17
mesh = SubResource("BoxMesh_1blfk")
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" unique_id=2109163521]
shape = SubResource("BoxShape3D_va8t4")
[node name="Player" parent="." unique_id=1270645855 instance=ExtResource("1_pbw6q")]
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1880837933]
environment = SubResource("Environment_1blfk")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=2091686084]
transform = Transform3D(1, 0, 0, 0, 0.326888, 0.9450631, 0, -0.9450631, 0.326888, 0, 28.631863, 43.110176)
[node name="Door" parent="." unique_id=2086051002 instance=ExtResource("2_v1gob")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5746174, 0.05000019, -7.507909)
snapAngleThreshold = 0.5
snapVelocityThreshold = 5.0
[node name="MedievalDoor" parent="." unique_id=1143822269 instance=ExtResource("3_jw32o")]
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 7.1977696, -0.02157104, -1.6521502)
[node name="Block" type="Node3D" parent="." unique_id=1216126902]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.362265, 2.041253, 0)
script = ExtResource("4_50glp")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Block" unique_id=492958743]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.53257275, 0)
layers = 16385
mesh = SubResource("BoxMesh_fos0i")
[node name="SimplePressButton" parent="." unique_id=1810741910 instance=ExtResource("5_vy5pj")]
transform = Transform3D(0.5576158, 0, 0.83009917, 0, 1, 0, -0.83009917, 0, 0.5576158, -5.3408794, 1.7139747, -1.4288577)
[node name="SimpleHoldButton" parent="." unique_id=506197337 instance=ExtResource("5_vy5pj")]
transform = Transform3D(-0.10736252, 0, 0.99421996, 0, 1, 0, -0.99421996, 0, -0.10736252, -6.9503546, 1.7799978, 2.37957)
holdMode = true
[node name="SimpleLever" parent="." unique_id=2031608942 instance=ExtResource("6_v1gob")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5557852, 1.6475947, -1.1587057)
angleOff = 45.0
[node name="SimplePickupable" parent="." unique_id=650555678 instance=ExtResource("7_jw32o")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5.011193, 10.622059)
[node name="SimplePickupable2" parent="." unique_id=2110903933 instance=ExtResource("7_jw32o")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.798231, 3.3262725, 10.622059)
[node name="SimplePickupable3" parent="." unique_id=2062232606 instance=ExtResource("7_jw32o")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.9931345, 3.3262725, 10.622059)
bodyMass = 50.0
[node name="CSGBox3D" type="CSGBox3D" parent="." unique_id=475794547]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.204157, 2.9997559, -20.283545)
layers = 17
size = Vector3(0.5214844, 6.9995117, 7.3129883)
[node name="CSGBox3D4" type="CSGBox3D" parent="." unique_id=963438638]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.204157, 2.9997559, -11.079284)
layers = 17
size = Vector3(0.5214844, 6.9995117, 7.3129883)
[node name="CSGBox3D5" type="CSGBox3D" parent="." unique_id=82836301]
transform = Transform3D(0.5832621, 0, -0.81228405, 0, 1, 0, 0.81228405, 0, 0.5832621, 13.224218, 2.9997559, -5.482582)
layers = 17
size = Vector3(0.5214844, 6.9995117, 7.3129883)
[node name="CSGBox3D2" type="CSGBox3D" parent="." unique_id=1489453991]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.8968315, 2.9997559, -13.600012)
layers = 17
size = Vector3(0.5214844, 6.9995117, 20.680054)
[node name="CSGBox3D6" type="CSGBox3D" parent="." unique_id=166399348]
transform = Transform3D(-0.013710948, 0.999906, 0, -0.999906, -0.013710948, 0, 0, 0, 1, 13.479281, 6.294318, -13.600012)
layers = 17
size = Vector3(0.5214844, 6.9995117, 20.680054)
[node name="CSGBox3D3" type="CSGBox3D" parent="." unique_id=2101564635]
transform = Transform3D(0.03308868, 0, -0.9994524, 0, 1, 0, 0.9994524, 0, 0.03308868, 13.939653, 2.9997559, -23.496096)
layers = 17
size = Vector3(0.5214844, 6.9995117, 7.3129883)
[node name="SpatialAudioPlayer" parent="." unique_id=708850804 instance=ExtResource("8_bmxlf")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.358648, 2.9025939, -13.239832)
stream = ExtResource("8_vy5pj")
volume_db = -35.0
maxRaycastDistance = 10.0
[node name="SimplePickupable4" parent="." unique_id=1419866814 instance=ExtResource("10_bmxlf")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0351448, 3.2192059)
bodyMass = 5.0
[connection signal="pressed" from="SimplePressButton" to="Block" method="toggleMove"]
[connection signal="held" from="SimpleHoldButton" to="Block" method="holdMove"]
[connection signal="released" from="SimpleHoldButton" to="Block" method="releaseMove"]
+331
View File
@@ -0,0 +1,331 @@
[gd_scene format=4 uid="uid://dgre5brxnbps0"]
[ext_resource type="Texture2D" uid="uid://dulhjsunch31g" path="res://Textures/Door/Wood.jpg" id="1_fgasx"]
[ext_resource type="Texture2D" uid="uid://dp4cgjr828p7j" path="res://Textures/Door/Stone.jpg" id="2_fpqxj"]
[ext_resource type="Texture2D" uid="uid://jydmkkryke23" path="res://Textures/Door/Door.jpg" id="4_8du8j"]
[ext_resource type="Script" uid="uid://cyw8ng7alo12e" path="res://Scripts/Door.gd" id="5_3u0t0"]
[ext_resource type="Texture2D" uid="uid://cq1svjaaumlba" path="res://Textures/Door/RustedMetal.jpg" id="5_pao41"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5ubf6"]
resource_name = "Wood"
cull_mode = 2
albedo_texture = ExtResource("1_fgasx")
roughness = 0.5
metadata/_gltf_primary_texture_coord = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_ihxew"]
_surfaces = [{
"aabb": AABB(-1.3463125, 0.084730506, -0.27765536, 2.6750941, 2.2221437, 0.41620636),
"format": 34896613377,
"index_count": 108,
"index_data": PackedByteArray("AAABAAIAAwAAAAIAAAAEAAEABQABAAQAAwAGAAAABQAGAAMABgADAAYABQAEAAcABQAHAAYACAAHAAYACQAGAAcACAAGAAoABgAJAAoACAAKAAsACgAJAAsACQAIAAsACQAHAAwABwAIAAwACQANAAgACQAMAA4ADgANAAkADAAIAA8ADgAQAA0ADAAQAA4ACAANABAADAAPABAACAAQAA8AEQAKABIAEQATAAoAEQASABQAEQAVABMAFgAUABIAFwATABUAFgAXABQAEwAXABgAGAAXABYA"),
"name": "Wood",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 25,
"vertex_data": PackedByteArray("4+xH7vjmAAAb9wAA+OYAAOPsAAD45gAA4+wAAAAAAAAb90fu+OYAABv3AAAAAAAA4+xH7gAAAAAb90fuAAAAAAAAR+7+/wAAAAD//wAAAADjCEfuAAAAAAAAR+4AAAAA//9H7gAAAAAAAP///v8AAP////8AAAAA//9H7v//AAD///////8AAOMIAAAAAAAA4whH7vjmAAAbE0fuAAAAAOMIAAD45gAAGxMAAAAAAAAbE0fu+OYAABsTAAD45gAAGxNH7nEBAAA=")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_22684"]
resource_name = "medievaldoors11_Cube_010"
_surfaces = [{
"aabb": AABB(-1.3463125, 0.084730506, -0.27765536, 2.6750941, 2.2221437, 0.41620636),
"attribute_data": PackedByteArray("lN8QOkTo//+U3///ROgQOsqA//8/YhA6yoAQOj9i/v/08P//pPkQOqT5///08BA6tEP//z9iEDo/Yv7/tEMQOmLK///gvQAAYsoAAOC9//+0QxA6NlA7EjZQEDq0QzsSNlAQOrhcOxK4XBA6NlA7Etoh/v8AAAAA2iEAAAAA//+0QwAA2iHjCNohAADaIePs2iEb99oh/v+0Q///5dbjCGLKAADl1gAA5dbj7OXWG/fl1v//Ysr///TwEDpE6P//ROgQOvTw///l1hA6lN///+XW//+U3xA6yoD+/1WfEDpVn///JJ8QOsqAEDrgvf//VZ8QOlWf/v/gvRA64L0QOg=="),
"format": 34896613399,
"index_count": 108,
"index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADAAPAA0AEAARABIAEAATABEAFAAVABYAFAAXABUAGAAZABoAGAAbABkAHAAdAB4AHAAfAB0AIAAhACIAIAAjACEAIAAkACMAJAAgACUAJQAgACYAJwAoACkAKgAoACcAKAAqACsAKAArACwAKAAsAC0ALgAvADAALgAxAC8AMgAzADQAMgA1ADMANgA3ADgANwA2ADkAOQA2ADoAOwA8AD0AOwA+ADwAPgA7AD8A"),
"material": SubResource("StandardMaterial3D_5ubf6"),
"name": "Wood",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 64,
"vertex_data": PackedByteArray("4+xH7vjmAIAb9wAA+OYAgOPsAAD45gCAG/dH7vjmAIAb9wAAAAD/vxv3R+745v+/G/dH7gAA/78b9wAA+Ob/vxsTR+745v//4wgAAPjm///jCEfu+Ob//xsTAAD45v//4wgAAAAA/7/jCEfu+Ob/v+MIAAD45v+/4whH7gAA/78AAEfu/v//v/////////+///9H7v///78AAP///v//v///R+4AAFTV////////VNX/////AABU1f//R+7//1TVAAD//wAAVNUAAEfu/v9U1QAAR+4AAFTVAAD///7/VNX/////AABU1QAA///+/1TVAAD//wAAVNX///////9U1QAAR+7+/1TV4whH7gAAVNUAAEfuAABU1ePsR+4AAFTVG/dH7gAAVNX//0fuAABU1f//R+7//1TV4whH7gAA//8AAP//AAD//wAAR+4AAP//4+xH7gAA//8b90fuAAD/////R+4AAP///////wAA//8b9wAAAAD//+PsR+4AAP//4+wAAAAA//8b90fuAAD//+MIAAAAAP//GxNH7gAA///jCEfuAAD//xsTAAAAAP//GxMAAPjm/78bE0fuAAD/vxsTAAAAAP+/GxNH7nEB/78bE0fu+Ob/v+PsAAAAAAAA4+xH7vjmAADj7AAA+OYAAOPsR+4AAAAA4+xH7gAAAAD/f////3////9/////f////38AAP9/AAD/fwAA/38AAP9//3//f/9//3//f/9//3//f/7//3/+//9//v//f/7//3//f/9//3//f/9//3//f6oqqiqqKqoqqiqqKqoqqipUVaqqVFWqqlRVqqpUVaqqVNWqKlTVqipU1aoqVNWqKqoqVNWqKlTVqipU1aoqVNWqKlTVqipU1aoqVNX/P/+//z//v/8//78AQP+//z//v/8//7//P/+/////f////3////9/////f////3////9/////f////3//fwAA/X8AAP9/AAD+fwAA/38AAP8//3//P/9//z//f/8//3//P/9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_ihxew")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_kufgt"]
data = PackedVector3Array(1.1291, 2.1531, 0.097899996, 1.2358999, 0.084699996, 0.097899996, 1.1291, 0.084699996, 0.097899996, 1.1291, 2.1531, 0.097899996, 1.2358999, 2.1531, 0.097899996, 1.2358999, 0.084699996, 0.097899996, 1.2358999, 0.084699996, -0.2777, 1.2358999, 2.1531, 0.097899996, 1.2358999, 2.1531, -0.2777, 1.2358999, 0.084699996, -0.2777, 1.2358999, 0.084699996, 0.097899996, 1.2358999, 2.1531, 0.097899996, -1.1467, 2.1531, 0.097899996, -1.2534, 0.084699996, 0.097899996, -1.2534, 2.1531, 0.097899996, -1.1467, 2.1531, 0.097899996, -1.1467, 0.084699996, 0.097899996, -1.2534, 0.084699996, 0.097899996, -1.2534, 0.084699996, -0.2777, -1.2534, 2.1531, 0.097899996, -1.2534, 0.084699996, 0.097899996, -1.2534, 0.084699996, -0.2777, -1.2534, 2.1531, -0.2777, -1.2534, 2.1531, 0.097899996, -1.3463, 2.1531, 0.13849999, 1.3288, 2.3069, 0.13859999, 1.3288, 2.1531, 0.13859999, -1.3463, 2.1531, 0.13849999, -1.3463, 2.3069, 0.13849999, 1.3288, 2.3069, 0.13859999, 1.3288, 2.1531, -0.2777, 1.3288, 2.3069, 0.13859999, 1.3288, 2.3069, -0.2777, 1.3288, 2.1531, -0.2777, 1.3288, 2.1531, 0.13859999, 1.3288, 2.3069, 0.13859999, -1.3463, 2.3069, -0.2777, -1.3463, 2.1531, 0.13849999, -1.3463, 2.1531, -0.2777, -1.3463, 2.3069, -0.2777, -1.3463, 2.3069, 0.13849999, -1.3463, 2.1531, 0.13849999, 1.3288, 2.3069, -0.2777, -1.3463, 2.3069, 0.13849999, -1.3463, 2.3069, -0.2777, 1.3288, 2.3069, -0.2777, 1.3288, 2.3069, 0.13859999, -1.3463, 2.3069, 0.13849999, -1.3463, 2.1531, 0.13849999, -1.2534, 2.1531, -0.2777, -1.3463, 2.1531, -0.2777, -1.3463, 2.1531, 0.13849999, 1.1291, 2.1531, -0.2777, -1.2534, 2.1531, -0.2777, -1.3463, 2.1531, 0.13849999, 1.2358999, 2.1531, -0.2777, 1.1291, 2.1531, -0.2777, 1.2358999, 2.1531, -0.2777, -1.3463, 2.1531, 0.13849999, 1.3288, 2.1531, -0.2777, 1.3288, 2.1531, -0.2777, -1.3463, 2.1531, 0.13849999, 1.3288, 2.1531, 0.13859999, -1.2534, 2.1531, -0.2777, -1.3463, 2.3069, -0.2777, -1.3463, 2.1531, -0.2777, 1.1291, 2.1531, -0.2777, -1.3463, 2.3069, -0.2777, -1.2534, 2.1531, -0.2777, -1.3463, 2.3069, -0.2777, 1.1291, 2.1531, -0.2777, 1.2358999, 2.1531, -0.2777, -1.3463, 2.3069, -0.2777, 1.2358999, 2.1531, -0.2777, 1.3288, 2.1531, -0.2777, -1.3463, 2.3069, -0.2777, 1.3288, 2.1531, -0.2777, 1.3288, 2.3069, -0.2777, 1.2358999, 0.084699996, -0.2777, 1.1291, 2.1531, -0.2777, 1.1291, 0.084699996, -0.2777, 1.2358999, 0.084699996, -0.2777, 1.2358999, 2.1531, -0.2777, 1.1291, 2.1531, -0.2777, -1.2534, 0.084699996, -0.2777, -1.1467, 2.1531, -0.2777, -1.2534, 2.1531, -0.2777, -1.2534, 0.084699996, -0.2777, -1.1467, 0.084699996, -0.2777, -1.1467, 2.1531, -0.2777, -1.1467, 0.084699996, 0.097899996, -1.1467, 2.1531, -0.2777, -1.1467, 0.084699996, -0.2777, -1.1467, 2.1531, -0.2777, -1.1467, 0.084699996, 0.097899996, -1.1467, 2.1531, -0.2753, -1.1467, 2.1531, -0.2753, -1.1467, 0.084699996, 0.097899996, -1.1467, 2.1531, 0.097899996, 1.1291, 0.084699996, -0.2777, 1.1291, 2.1531, 0.097899996, 1.1291, 0.084699996, 0.097899996, 1.1291, 0.084699996, -0.2777, 1.1291, 2.1531, -0.2777, 1.1291, 2.1531, 0.097899996, 1.1291, 2.1531, -0.2777, 1.1291, 0.084699996, -0.2777, 1.1291, 2.1531, -0.2777)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_56a0c"]
resource_name = "Stone"
cull_mode = 2
albedo_texture = ExtResource("2_fpqxj")
roughness = 0.5
metadata/_gltf_primary_texture_coord = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_rlm6i"]
_surfaces = [{
"aabb": AABB(-1.3266811, -0.0367862, -0.27765518, 2.6729937, 0.121516705, 0.68299586),
"format": 34896613377,
"index_count": 36,
"index_data": PackedByteArray("AAABAAIAAAADAAEABAACAAEAAwAEAAEABQAAAAIAAwAAAAUABAAGAAIABQACAAYAAwAHAAQAAwAFAAcABwAGAAQABwAFAAYA"),
"name": "Stone",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 8,
"vertex_data": PackedByteArray("//8AAAAAAAAAAAAA/v8AAP//AAD//wAAAAAAAAAAAAAAAP///v8AAP////8AAAAA////////AAAAAP//AAAAAA==")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_ci6nf"]
resource_name = "medievaldoors11_Cube_008"
_surfaces = [{
"aabb": AABB(-1.3266811, -0.0367862, -0.27765518, 2.6729937, 0.121516705, 0.68299586),
"attribute_data": PackedByteArray("Bv5KX/gBtKAG/rSg+AFKX/gBLXoG/tGF+AHRhQb+LXozoC16y1/RhctfLXozoNGFM6DRhctfLXrLX9GFM6AtevgBSl8G/rSg+AG0oAb+Sl/4AdGFBv4tevgBLXoG/tGF"),
"format": 34896613399,
"index_count": 36,
"index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADAAPAA0AEAARABIAEAATABEAFAAVABYAFAAXABUA"),
"material": SubResource("StandardMaterial3D_56a0c"),
"name": "Stone",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 24,
"vertex_data": PackedByteArray("//8AAAAA/z8AAAAA/v//P///AAD///8/AAAAAAAA/z8AAP///v8AgP//AAD//wCAAAAAAP7/AID///////8AgP////8AAP+///8AAP///7//////////v///AAAAAP+/AAAAAAAAAAAAAP///v8AAAAAAAD+/wAAAAD//wAAAAAAAP//AAD/v/////////+/AAD///7//7//////AAD/vwAAAAAAAAAA/////wAAAAAAAP//AAAAAP//AAAAAAAAAAD/fwAA/38AAP9/AAD/f/9/////f////3////9/////fwAA/38AAP9/AAD/fwAA/z//f/8//3//P/9//z//f////3////9/////f////3////9/////f////3////9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_rlm6i")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_3u0t0"]
data = PackedVector3Array(1.3463, -0.0368, -0.2777, -1.3267, -0.0368, 0.4053, 1.3463, -0.0368, 0.4053, 1.3463, -0.0368, -0.2777, -1.3267, -0.0368, -0.2777, -1.3267, -0.0368, 0.4053, -1.3267, 0.084699996, 0.4053, 1.3463, -0.0368, 0.4053, -1.3267, -0.0368, 0.4053, -1.3267, 0.084699996, 0.4053, 1.3463, 0.084699996, 0.4053, 1.3463, -0.0368, 0.4053, 1.3463, 0.084699996, -0.2777, 1.3463, -0.0368, 0.4053, 1.3463, 0.084699996, 0.4053, 1.3463, 0.084699996, -0.2777, 1.3463, -0.0368, -0.2777, 1.3463, -0.0368, 0.4053, -1.3267, -0.0368, -0.2777, -1.3267, 0.084699996, 0.4053, -1.3267, -0.0368, 0.4053, -1.3267, -0.0368, -0.2777, -1.3267, 0.084699996, -0.2777, -1.3267, 0.084699996, 0.4053, -1.3267, 0.084699996, -0.2777, 1.3463, 0.084699996, 0.4053, -1.3267, 0.084699996, 0.4053, -1.3267, 0.084699996, -0.2777, 1.3463, 0.084699996, -0.2777, 1.3463, 0.084699996, 0.4053, -1.3267, -0.0368, -0.2777, 1.3463, 0.084699996, -0.2777, -1.3267, 0.084699996, -0.2777, -1.3267, -0.0368, -0.2777, 1.3463, -0.0368, -0.2777, 1.3463, 0.084699996, -0.2777)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ow5aw"]
resource_name = "DoorType1_2"
cull_mode = 2
albedo_texture = ExtResource("4_8du8j")
roughness = 0.5
metadata/_gltf_primary_texture_coord = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_jrc0e"]
_surfaces = [{
"aabb": AABB(-1.146632, 0.08473039, 0.0045645237, 1.1378665, 2.068352, 0.05000186),
"format": 34896613377,
"index_count": 36,
"index_data": PackedByteArray("AAABAAIAAAACAAMAAAAEAAEAAgAFAAMAAgABAAUAAAADAAYABAAAAAYABgADAAUAAQAEAAcABAAGAAcAAQAHAAUABgAFAAcA"),
"name": "DoorType1_2",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 8,
"vertex_data": PackedByteArray("AAAAAP7/AAD+//////8AAP//AAD+/wAA//8AAAAAAAAAAP////8AAP7///8AAAAAAAAAAAAAAAAAAP//AAAAAA==")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_qpqq3"]
resource_name = "medievaldoors11_Cube_016"
_surfaces = [{
"aabb": AABB(-1.146632, 0.08473039, 0.0045645237, 1.1378665, 2.068352, 0.05000186),
"attribute_data": PackedByteArray("AQD//9aMAADWjP//AQAAAAEA///WjAAAAQAAANaM///UjDMGAAACANSMAgAAADMGsYYAAOKM///ijAAAsob//7KG///ijAAA4oz//7GGAAAAADMG1YwCAAAAAgDVjDMG"),
"format": 34896613399,
"index_count": 36,
"index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADAAPAA0AEAARABIAEAATABEAFAAVABYAFAAXABUA"),
"material": SubResource("StandardMaterial3D_ow5aw"),
"name": "DoorType1_2",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 24,
"vertex_data": PackedByteArray("AAAAAP7/AID+//////8AgP//AAD+/wCAAAD/////AIAAAAAAAAAAAP7///8AAAAAAAD//wAAAAD//wAAAAAAAP7///////+/AAD//wAA/7/+////AAD/vwAA//////+/AAD/////AAAAAAAAAAAAAAAA//8AAAAAAAAAAP7/AAD//wAA/v//v/7///8AAP+///8AAAAA/7/+////////vwAAAAD+//8///8AAAAA/z8AAAAAAAD/P///AAD+//8//3////9/////f////3///////3////9/////f////3////9/////f////3////9//z//f/8//3//P/9//z//f/9/AAD/fwAA/38AAP9/AAAAAP9/AAD/fwAA/38AAP9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_jrc0e")
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_3u0t0"]
points = PackedVector3Array(-1.146632, 0.08473039, 0.0045645237, -1.146632, 0.08473039, 0.05456149, -1.146632, 2.1530824, 0.0045645237, -0.008765459, 0.08473039, 0.0045645237, -0.008765459, 0.08473039, 0.05456149, -1.146632, 2.1530824, 0.05456638, -0.008876801, 2.1530824, 0.0045645237, -0.008876801, 2.1530824, 0.05456638)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vkyjj"]
resource_name = "RustedMetal"
cull_mode = 2
albedo_texture = ExtResource("5_pao41")
roughness = 0.5
metadata/_gltf_primary_texture_coord = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_cm8yl"]
_surfaces = [{
"aabb": AABB(-0.15807295, 0.91522706, 0.06941259, 0.122282505, 0.15972829, 0.053642333),
"format": 34896613377,
"index_count": 1098,
"index_data": PackedByteArray("AAAKADYACgAiADYAPQAAADYAAAA3AAoAPQA2AAIAPQAfAAAANgAiAGQANgBkAAIACgBlACIAAAAfADgAAAA4ADcANwBmAAoAZgBlAAoANwA4ADkANwABAGYANwA5AAEAOABnADkAHwBoADgAOABoAGcAHwBpAGgAAQA6AGYAZgAjAGUAOgAjAGYAIwA7AGUAaQA7AGgAOgBqACMAPgBpAB8APQA+AB8AaAA7AGsAIwBrADsAaABrAGcAagBrACMAIAA+AD0AIAA9AAIAZQA7AGwAaQBsADsAZQBsACIAPgBtAGkAbQBsAGkAIABAAD4AQABtAD4AIgBsAD8AbQA/AGwAIgA/AGQAQABuAG0AbgA/AG0AAwBAACAAbgBvAD8AZAA/AG8ALABuAEAAAwAsAEAAcABvAG4ALABwAG4AZABvACEAAgBkACEAIAACAEEAAwAgAEEAAgAhAEEAcABxAG8AIQBvAHEAIQBxAEIAQQAhAEIAAwBBAHIAQQBCAHIAQwADAHIAQwAsAAMARABwACwAQwBEACwAcwBxAHAARABzAHAAQgBxAEUAcwBFAHEAcgBCAHQAQgBFAHQAQwByAAYAcgB0AAYARgBEAEMARgBDAAYAKgBzAEQARgAqAEQAdQBFAHMAKgB1AHMAdABFAHYAdQB2AEUABgB0ACsAdAB2ACsARgAGAEcABgArAEcACAAqAEYACABGAEcASAB1ACoACABIACoAdwB2AHUASAB3AHUAKwB2AEkAdwBJAHYARwArAHgAKwBJAHgACABHAHkARwB4AHkASgBIAAgASgAIAHkAKAB3AEgASgAoAEgAegBJAHcAKAB6AHcAeABJAHsAegB7AEkAeQB4ACkAeAB7ACkASgB5AAsAeQApAAsASwAoAEoASwBKAAsATAB6ACgASwBMACgAfAB7AHoATAB8AHoAKQB7AE0AfABNAHsACwApAH0AKQBNAH0ASwALAH4ACwB9AH4ACQBMAEsACQBLAH4AJgB8AEwACQAmAEwAfwBNAHwAJgB/AHwAfQBNAIAAfwCAAE0AfgB9ACcAfQCAACcACQB+AAcAfgAnAAcATgAmAAkATgAJAAcATwB/ACYATgBPACYAgQCAAH8ATwCBAH8AJwCAAFAAgQBQAIAABwAnAIIAJwBQAIIATgAHAFIABwCCAFIABABPAE4ABABOAFIAUQCBAE8ABABRAE8AgwBQAIEAUQCDAIEAggBQAIQAgwCEAFAAUgCCACUAggCEACUABABSAIUAUgAlAIUAUwBRAAQAUwAEAIUAJACDAFEAUwAkAFEAhgCEAIMAJACGAIMAJQCEAIcAhgCHAIQAhQAlAFQAJQCHAFQAUwCFAAUAhQBUAAUAPAAkAFMAPABTAAUAVgCGACQAPABWACQAiACHAIYAVgCIAIYAAQBWADwAAQA5AFYAOQCIAFYAAQA8ADoAPAAFADoABQBqADoABQBUAGoAOQBnAIgAVABVAGoAVACHAFUAiABVAIcAZwBVAIgAagBVAGsAZwBrAFUADAAOAIkADAANAA4AEQAMAIkADQCKAA4ADQAPAIoAEQCJAIsAFAARAIsAiQAOAIwAFACLABMAFQAUABMAiwCJAI0AiQCMAI0AEwCLAI4AiwCNAI4AFQATAI8AFwAVAI8AEwCOADAAjwATADAAFwCPAC4AGQAXAC4AjwAwAJAALgCPAJAAGQAuAJEAGgAZAJEALgCQAFgAkQAuAFgAGgCRAFcAHAAaAFcAkQBYAJIAVwCRAJIAHABXAJMAHgAcAJMAVwCSAJQAkwBXAJQAHgCTABYAHQAeABYAkwCUAFkAFgCTAFkAHQAWAJUAGwAdAJUAFgBZAJYAlQAWAJYAGwCVAC0AGAAbAC0AlQCWAC8ALQCVAC8AGAAtAJcAEgAYAJcALQAvAJgAlwAtAJgAEgCXAJkAEAASAJkAlwCYAJoAmQCXAJoAEACZAFoADwAQAFoADwBaAIoAWgCZAFsAmQCaAFsAigBaAJsAWgBbAJsAigCbADEADgCKADEADgAxAIwAMQCbAJwAmwBbAJ0AmwCdAJwAWwBcAJ0AWwCaAFwAjAAxADQAMQCcADQAjAA0AJ4AjQCMAJ4AmgCfAFwAmgCYAJ8AjQCeAKAAjgCNAKAAngA0AKEAjgCgAKIAMACOAKIAoACeAKMAngChAKMAogCgAKQAoACjAKQAMACiAGAAkAAwAGAAogCkAKUAYACiAKUApQCkAKYAkABgAKcAWACQAKcAYAClADUApwBgADUApQCmAKgANQClAKgApACpAKYAqQCoAKYApACjAKkANQCoAKoAWACnAKsApwA1AKwArAA1AKoAqwCnAKwAkgBYAKsAqACtAKoArACqAK0AqQCtAKgAqwCsAK4ArgCsAK0AkgCrAK8ArwCrAK4AlACSAK8AowBiAKkAowChAGIAsACpAGIAoQCwAGIAsQCpALAAsQCtAKkAoQCyALAANACyAKEANACcALIAsgCzALAAsQCwALMAnABfALIAsgBfALMAXwCxALMAnACdAF8AnQC0AF8AXwC0ALEAnQBcALQAtABhALEAXAC1ALQAtAC1AGEAXACfALUAtgCxAGEAtQC2AGEAtwCxALYArQCxALcAtQC4ALYAnwC4ALUAuAC5ALYAtwC2ALkAnwAyALgAmAAyAJ8AmAAvADIAuAC6ALkAMgC6ALgAugC3ALkALwC7ADIAMgC7ALoALwCWALsAugBeALcAuwBeALoAlgC8ALsAuwC8AF4AlgBZALwAXgBjALcAWQBdALwAWQCUAF0AlACvAF0AvAC9AF4AXgC9AGMAvABdAL0AvgC3AGMAvQC+AGMArQC3AL4AXQAzAL0AXQCvADMAvQAzAL4ArwCuADMArQC+AL8ArgCtAL8AMwC/AL4AMwCuAL8A"),
"lods": [0.012256797, PackedByteArray("AAAKADYAAAA3AAoAAAA4ADcANwABAAoANwA4ADkANwA5AAEAOAAjADkAAQA6AAoAOgAjAAoAOAA7ACMAAQA8ADoAAAAfADgAHwA7ADgAPQAfAAAAPQAAADYAHwAiADsAIwA7ACIACgAiADYACgAjACIAPQA2AAIAPQA+AB8APgAiAB8AIAA9AAIAIAA+AD0ANgAhAAIANgAiACEAPgA/ACIAIgA/ACEAQAA/AD4AIABAAD4AQAAhAD8AIAACAEEAAgAhAEEAAwBAACAAAwAgAEEALAAhAEAAAwAsAEAALABCACEAQQAhAEIAAwBBAAYAQQBCAAYAQwAsAAMAQwADAAYARABCACwAQwBEACwARABFAEIARgBDAAYARgBEAEMABgBCACsAQgBFACsARgAGAEcABgArAEcAKgBFAEQARgAqAEQAKgArAEUACABGAEcACAAqAEYACABHAAsASAArACoACABIACoASABJACsARwArACkAKwBJACkARwApAAsAKABJAEgAKAApAEkASgBIAAgASgAoAEgASgAIAAsASwAoAEoASwBKAAsATAApACgASwBMACgATABNACkASwALAAcACwApACcAKQBNACcACwAnAAcAJgBNAEwAJgAnAE0ACQBMAEsACQAmAEwACQBLAAcATgAmAAkATgAJAAcATwAnACYATgBPACYATwBQACcABwAnACUAJwBQACUAUQBQAE8AUQAlAFAABABPAE4ABABRAE8ATgAHAFIABABOAFIABwAlAFIABABSAAUAUgAlAAUAUwBRAAQAUwAEAAUAJAAlAFEAUwAkAFEAJABUACUABQAlAFQAPAAkAFMAPABTAAUAPAAFADoABQAjADoABQBUACMAVABVACMAOQAjAFUAVgBUACQAPABWACQAVgBVAFQAOQBVAFYAAQBWADwAAQA5AFYADAANAA4ADQAPAA4AEQAMAA4AEQAOABMAFAARABMAFQAUABMAFQATAC4AFwAVAC4AGQAXAC4ALgATADAAEwAOADAAGQAuAFcAGgAZAFcAHAAaAFcAVwAuAFgALgAwAFgAHABXABYAHgAcABYAHQAeABYAFgBXAFkAVwBYAFkAHQAWAC0ALQAWAFkAGwAdAC0AGAAbAC0AEgAYAC0AEgAtAFoAEAASAFoADwAQAFoADwBaAA4AWgAtAFsADgBaAFsALQBZAC8ALQAvAFsADgBbADEADgAxADAAMQBbADQAMAAxADQAWwAvAFwAWwBcADQALwBZADIALwAyAFwAWQBdADIAWQBYAF0AXAAyAF4AMgBdAF4ANABcAF8AXABeAF8AWAAwAGAAMAA0AGAAWABgAF0AXwBeAGEAYAA0ADUANABfADUAXQBgADMAXQAzAF4AYAA1ADMAXwBhAGIANQBfAGIAXgBjAGEAXgAzAGMAYQBjAGIAMwA1AGMAYgBjADUA"), 0.029816525, PackedByteArray("AAAKAAIAAAABAAoAAAAfAAEAIAAfAAAAIAAAAAIAIAAhAB8AHwAiAAEAHwAhACIACgAiAAIAAgAiACEACgAjACIAAQAiACMABQAjAAoAAQAFAAoAAQAjACQABQAlACMAJAAjACUAAQAEAAUAAQAkAAQABAAHAAUABwAlAAUABAAkACYAJAAlACYABAAJAAcABAAmAAkABwAnACUAJgAlACcACwAnAAcACQALAAcAJgAnACgACQAmACgACwApACcAKAAnACkACQAIAAsACQAoAAgABgApAAsACAAGAAsAKAApACoACAAoACoAKgApACsABgArACkACAAqACwAKgArACwABgAhACsALAArACEAAgAhAAYALAAhACAAAwACAAYACAADAAYAAwAgAAIACAAsAAMAAwAsACAADAANAA4ADQAPAA4ADwAQAA4AEQAMAA4AEAASAA4AEQAOABMAFAARABMAFQAUABMAEgAtAA4AEgAYAC0AGAAbAC0AGwAdAC0AFQATAC4AFwAVAC4AGQAXAC4AGgAZAC4AHAAaAC4AHQAWAC0AHAAuABYAHQAeABYAHgAcABYAFgAuAC8ALQAWAC8ALgATADAALgAwAC8AEwAOADAADgAtADEALQAvADEADgAxADAAMQAvADIALwAwADMALwAzADIAMQAyADQAMAAxADQANAAyADMAMAA1ADMANAAzADUAMAA0ADUA"), 0.093039304, PackedByteArray("AAAKAAIAAAACAAoAAwAAAAIAAwACAAAAAwAGAAIAAwACAAYACAADAAYACAAGAAMACAALAAYACAAGAAsACQAIAAsACQALAAgACQAHAAsACQALAAcABAAJAAcACQAEAAcAAAAKAAEAAAABAAoAAQAKAAQAAQAFAAoABQAEAAoAAQAEAAUABAAHAAUABwAEAAUADAANAA4ADQAPAA4ADwAQAA4AEQAMAA4AEAASAA4AEQAOABMAFAARABMAFQAUABMADgAWABMAFQATABYAEgAWAA4AFwAVABYAEgAYABYAGQAXABYAGgAZABYAGAAbABYAHAAaABYAGwAdABYAHgAcABYAHQAeABYA"), 0.149667, PackedByteArray("AAABAAIAAAACAAEAAwAAAAIAAwACAAAAAQACAAQAAQAFAAIAAQAEAAUABQAEAAIAAwACAAYAAwAGAAIABAAHAAUABwAEAAUACAADAAYACAAGAAMACAAHAAYACAAGAAcACQAEAAcABAAJAAcACQAIAAcACQAHAAgA")],
"name": "RustedMetal",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 192,
"vertex_data": PackedByteArray("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")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_ju5ts"]
resource_name = "medievaldoors11_Cube_009"
_surfaces = [{
"aabb": AABB(-0.15807295, 0.91522706, 0.06941259, 0.122282505, 0.15972829, 0.053642333),
"attribute_data": PackedByteArray("AaUQdOa4/ItFkrhyBXGra/CpS54VbI53AaUuqiBd3onBgyKj4oFfqezqV7ZS8G3icNcz3vb/XLzwnzbrNM+//RCv9v/HetTy3Xz53Otg2te5beat811irPCpi4EVbE+UMLuC7I1uZMWSAV5baAHLZCsJ7GRAATluEQEZecIBgVDcAL6FuwkGRPkB5EPqB/64pQCCk28ASaE9APmtGgDsuAgAccIIAPrLQRvZwiEA+tZkAMPj3ACs8UgKLv/VXKTeGgL2/+KBiGly8D242OPi1jH6bLokyPfuhuLq6+St2vFcr9H6kYoK+bSQcOwOfVbudXJ42fFp0N88ak/GcWJryk9inKyQabytOQhnoTkIjOORFNf5gygTzw4xkMWRJrzowCXC9V9OYN2BLCja70O04s8+b/AeTATzDFTs9q2fv3jpsSB/JJR7bH6v3ZXluK+YwYNgcOmxSaMcZJByRJJ5pSBdK30jlFGsh2b9fwVxyqEcZLqWceVGxtrtccp8837O8/jG0Fnrad+X5srvyNu8+LfbEeIW2Rn0v9Qx7d3NtvhPwPb/Ys825e2/7fodvaf0i5ya/Rmu2OyCnXv4i57v8iaMMvQ+ktHnjW5D6/GDVuencXvnFmZ04iR3KOM+dmzWNmVd1gZeC8uiapbSIF0yvHhhLrx9ZuS61gg5edsH8MtcE7jm1gw0zXEcdfVEG97R3iCR4D9C29XdUVTSPS2p6uUwXfbpMuvtTylw5CosQOorMsDndDcQ2/w4cuSMOSzqZUUV8X6vxItZdhNyrZ/Go4dmFYpYdhqdEJ8d8EGPDu/bu5HxRcb26U+u1vSL0s7p/8ku8tne6tMI3kLl6+qFyGXmmdmn8wW5SPBmzHz2jbmM6HzcGuCV6OnWl/AFzEb1o76B9+6ufPcYnlb1vY1H8Wd/u+vBgbHpY3Qr5UuGy+LDefLg2Gyz3ahvmtsUaIvUTmUYyUVkmbsUZQOtqWeYxypnaK1NbcXQhHHRzglpVbpYbSe6VAl/WwMJWm6DCaNQowjdhW4IoJMKCBSu2gd3wvYH3Na1CDPxPBNi8IkJMdcpHB3wkhTY3dYcVOqLJdDwPCsU8xMXwNbIEjbGaR7y5NMlXezjKqfwOSwg9RIrNe5+K//r6isZ7LUnHebbI07dJCFZz5Ql9MIiLQrpuCc020srUONoLjvoAjFv0PI8Ucn4LbjiHDDS5+gxJNrlObbSSEiizW8xu+JTNV3jWjT25408D91NSWDZ8Vjc12g2i+jUQKzf4TvM5TQ4TekeURPiD11j5tI9SOe+RfPld1Fo5+RZne76PuToYDou649Gb+mbTy/thj/K6sk6YexcRkftgz827bw63e0xOobvUjNa8Doy7vQVM9PySS/n9qUtePbYLh7q6jHh63wwi+o="),
"format": 34896613399,
"index_count": 1098,
"index_data": PackedByteArray("AAAWAE8AAABQABYAUQAAAE8AUACRABYAUQBPAAIAUAABAJEAMQBRAAIAAQBSAJEAMQACAFQAAQBTAFIAAwAxAFQAUwAEAFIAAwBUAJIAUwBVAAQAVgADAJIAVQCTAAQAVgCSAAUAVQAGAJMAWABWAAUABgBXAJMAWAAFAFoABgBZAFcABwBYAFoAWQAIAFcABwBaAJQAWQAJAAgAXAAHAJQACQCVAAgAXACUABcACQBbAJUAWwBcABcAWwAXAJUAlgCXADoADgCWADoAbQCWAA4ADgA6AHEAbQA3AJYAGAA3AG0ANwBvAJYAlgBvAJcAGACYADcAmQCYABgANwCaAG8AmACaADcAmQA1AJgAaQA1AJkAmABrAJoANQBrAJgAaQCbADUADACbAGkANQCcAGsAmwCcADUADABkAJsAnQBkAAwAmwBmAJwAZABmAJsAnQAzAGQAXQAzAJ0AZACeAGYAMwCeAGQAXQCfADMACgCfAF0ACgAyAJ8AnwCgADMAMwCgAJ4AMgBeAJ8AnwBeAKAAMgChAF4AogBeAKEAogChAKMApACgAF4ApABeAKIApQCeAKAApQCgAKQApgCeAKUApgBmAJ4AXwCiAKMAXwCjADQAYABfADQAYAA0AA0ACwBfAGAAYQCiAF8ACwBhAF8AYQCkAKIAYgBhAAsANgCkAGEAYgA2AGEANgClAKQAYwA2AGIAZQClADYAYwBlADYAZQCmAKUADwBlAGMADwBnAGUAZwCmAGUAaABnAA8AZwCnAKYApwBmAKYApwCcAGYAaABqAGcAagCnAGcAEABqAGgAqACcAKcAagCoAKcAqABrAJwAEAA4AGoAOACoAGoAbAA4ABAAqQBrAKgAOACpAKgAqQCaAGsAbABuADgAbgCpADgAOQBuAGwAqgCaAKkAbgCqAKkAqgBvAJoAOQBwAG4AcACqAG4AEQBwADkAqwBvAKoAcACrAKoAqwCXAG8AEQA7AHAAOwCrAHAAcgA7ABEArACXAKsAOwCsAKsAcgB0ADsAdACsADsAdQB0AHIArACtAJcAOgCXAK0AdACuAKwArgCtAKwAdQA9AHQAPQCuAHQAEwA9AHUAOgCtAHMAcQA6AHMAcQBzAK8AcwCtAHYArgB2AK0ArwBzALAAcwB2ALAArwCwABIAsQB2AK4APQCxAK4AsAB2ALIAsQCyAHYAEgCwADwAsACyADwAEgA8AHcAEwB4AD0AeACxAD0AeQB4ABMAswCyALEAeACzALEAeQA/AHgAPwCzAHgAewA/AHkAswB6ALIAPACyAHoAPwC0ALMAtAB6ALMAewB8AD8AfAC0AD8AFQB8AHsAFQBAAHwAQAC1AHwAfAC1ALQAQAC2ALUAtAC3AHoAtQC3ALQAtgB9ALUAtQB9ALcAtgC4AH0APAB6ALkAuQB6ALcAdwA8ALkAdwC5ALoAuQC3AD4AugC5AD4APgC3AH0AugA+ABkAuwB9ALgAPgB9ALsAGQA+ALsAuwC4AEEAGQC7ALwAvAC7AEEAvABBABQAGgAcAL0AGgAbABwAHwAaAL0AGwC+ABwAHwC9AL8AIgAfAL8AIgC/ACEAGwAdAL4AHQB+AL4AHQAeAH4AHgDAAH4AHgAgAMAAIADBAMAAIAAkAMEAJABCAMEAJAAlAEIAJQDCAEIAJQAmAMIAJgAjAMIAJgAnACMAJwDDACMAJwAoAMMAKAB/AMMAKAApAH8AKQDEAH8AKQArAMQAKwBDAMQAKwAsAEMALADFAEMALAAtAMUALQAuAMUALQAwAC4AxQAuAEQAxQBEAMYAQwDFAMYAxgBEAIIAQwDGAIAAxwBDAIAAxgCCAMgAgADGAMgAyACCAEgAxwCAAMkAgQDHAMkAgADIAMoAyQCAAMoAyABIAMsAygDIAMsAywBIAMwAgQDJAM0AzgCBAM0AyQDKAM8AzQDJAM8AygDLANAAzwDKANAAywDMANEA0ADLANEA0gDRAMwAzgDNAIMAKgDOAIMAzQDPAIQAgwDNAIQAzwDQAEcAhADPAEcARwDQANMA0ADRANMARwDTANQA0QDVANMA1gBHANQAhABHANYA1gDUAIsAgwCEANcA1wCEANYAKgCDANgA2ACDANcA2QAqANgAigDWAIsA1wDWAIoAigCLANoA2ADXANsA2wDXAIoA2QDYAEUARQDYANsARgDZAEUA3ACKANoA2wCKANwA3ADaAN0ARQDbAEoASgDbANwARgBFAN4A3gBFAEoA3wBGAN4A4ADcAN0ASgDcAOAA4ADdAOEA3gBKAOIA4gBKAOAA3wDeAOMA4wDeAOIA5ADfAOMA5QDgAOEA4gDgAOUA5QDhAIwA4wDiAI0AjQDiAOUA5ADjAIUAhQDjAI0AhgDkAIUA5gDlAIwAjQDlAOYA5gCMAOcAhQCNAOgA6ACNAOYAhgCFAOkA6QCFAOgA6gCGAOkAjgDmAOcA6ADmAI4AjgDnAOsA6QDoAOwA7ADoAI4A6gDpAEkASQDpAOwALwDqAEkA7QCOAOsA7ACOAO0A7QDrAO4ASQDsAEsASwDsAO0ALwBJAO8A7wBJAEsA8AAvAO8A8QDtAO4ASwDtAPEA8QDuAI8A7wBLAPIA8gBLAPEA8ADvAPMA8wDvAPIA9ADwAPMA9QDxAI8A8gDxAPUA9QCPAPYA8wDyAPcA9wDyAPUA9ADzAPgA+ADzAPcATgD0APgATgD4AE0A+QD1APYA9wD1APkA+QD2APoA+AD3APsATQD4APsA+wD3APkATQD7AJAA/AD5APoA+wD5APwAkAD7APwA/AD6AP0AkAD8AEwATAD8AP0ATAD9AP4A/wAAAQEBAAECAYgA/wACAQABAgHSAAMBAgHRANIA/wDRAAIB0QD/AAQB0QAEAdUA1QAEAYcABAH/AAUBBQH/AIkABAEFAQYB"),
"lods": [0.012256797, PackedByteArray("AAAWAE8AAABQABYAUQAAAE8AUAABABYAUQBPAAIAAQBSABYAMQBRAAIAAQBTAFIAMQACAFQAUwAEAFIAAwAxAFQAUwBVAAQAAwBUAAUAVQAGAAQAVgADAAUABgBXAAQAWABWAAUABgBZAFcAWAAFAFoAWQAIAFcABwBYAFoAWQAJAAgABwBaABcACQBbAAgAWwAXAAgAXAAHABcAWwBcABcACgAzAF0AXQAzAAwACgAyADMAMgBeADMAXwBeADIAXwAyADQAYABfADQAYAA0AA0ACwBfAGAAYQBeAF8ACwBhAF8AYQAzAF4AYgBhAAsAYgA2AGEANgAzAGEAYwA2AGIANgBkADMADAAzAGQAYwBlADYAZQBkADYADwBlAGMAZQBmAGQADwBnAGUAZwBmAGUAaABnAA8AZABmADUADABkADUAZwA1AGYADAA1AGkAaABqAGcAagA1AGcAEABqAGgAaQA1ABgAEAA4AGoAagBrADUAOABrAGoAbAA4ABAANQBrADcAGAA1ADcAOAA3AGsAGAA3AG0AbABuADgAbgA3ADgAOQBuAGwAbgBvADcAOQBwAG4AcABvAG4AEQBwADkANwBvADoAbQA3ADoAcAA6AG8AbQA6AA4ADgA6AHEAEQA7AHAAOwA6AHAAcgA7ABEAcQA6AHMAOwBzADoAcQBzABIAcgB0ADsAdABzADsAdQB0AHIAdAB2AHMAdQA9AHQAPQB2AHQAEwA9AHUAcwB2ADwAEgBzADwAPQA8AHYAEgA8AHcAEwB4AD0AeAA8AD0AeQB4ABMAeAB6ADwAeQA/AHgAPwB6AHgAewA/AHkAPAB6AD4AdwA8AD4APwA+AHoAdwA+ABkAewB8AD8AfAA+AD8AFQB8AHsAFQBAAHwAQAB9AHwAfAB9AD4AQABBAH0APgB9AEEAGQA+AEEAGQBBABQAGgAbABwAGwAdABwAHwAaABwAHwAcACEAIgAfACEAHQB+ABwAHQAeAH4AHgAgAH4AIABCAH4AIAAkAEIAJAAlAEIAJQAmAEIAJgAjAEIAJgAnACMAJwAoACMAKAB/ACMAKAApAH8AKQArAH8AKwBDAH8AKwAsAEMALAAtAEMALQAuAEMALQAwAC4AQwAuAEQAQwBEAIAAgQBDAIAAgABEAIIAgQCAAIMAKgCBAIMARgAqAIMAgwCAAIQAgACCAIQARgCDAEUARgBFAIUAhgBGAIUARQCDAEoAgwCEAEoALwCGAIUAhACCAEcAggBIAEcARwBIAIcAiACHAEgAiQCHAIgAhABHAIoASgCEAIoAigBHAIsAigCLAIwAjQBKAIoARQBKAI0AhQBFAI0AjgCKAIwAjQCKAI4AjgCMAI8ATACOAI8ASwCNAI4ASwCOAEwAhQCNAEsAkABLAEwATQBLAJAASQCFAEsATQBJAEsALwCFAEkALwBJAE0ATgAvAE0A"), 0.029816525, PackedByteArray("AAAWAAIAAAABABYAMQAAAAIAAQAEABYAAwAxAAIAAQAGAAQAAwACAAUABgAIAAQABwADAAUABgAJAAgABwAFABcACQAXAAgACQAHABcACgAyADMACgAzAAwANAAzADIADAAzADUADAA1ABgANgAzADQANgA1ADMACwA2ADQACwA0AA0ADwA2AAsADwA1ADYAGAA1ADcADwA3ADUAGAA3AA4AOAA3AA8AEAA4AA8AOQA4ABAAOAA6ADcADgA3ADoAOQA6ADgADgA6ABIAOwA6ADkAEQA7ADkAEwA7ABEAOwA8ADoAEgA6ADwAEwA9ADsAPQA8ADsAEgA8AD4APQA+ADwAEgA+ABkAEwA/AD0APwA+AD0AFQA/ABMAFQBAAD8AQABBAD8APwBBAD4AGQA+AEEAGQBBABQAGgAbABwAGwAdABwAHQAeABwAHwAaABwAHgAgABwAHwAcACEAIgAfACEAIABCABwAIAAkAEIAJAAlAEIAJQAmAEIAJgAjAEIAJgAnACMAJwAoACMAKABDACMAKAApAEMAKQArAEMAKwAsAEMALAAtAEMALQAuAEMALQAwAC4AQwAuAEQAQwBEAEUAKgBDAEUARgAqAEUARQBEAEcARABIAEcARgBFAEkARQBHAEoASQBFAEoALwBGAEkASwBKAEcASQBKAEsASwBHAEwATQBLAEwATQBJAEsALwBJAE0ATgAvAE0A"), 0.093039304, PackedByteArray("AAAWAAIAAAABABYAAwAAAAIAAQAEABYAAwACAAUAAQAGAAQABwADAAUABgAIAAQABwAFABcABgAJAAgACQAHABcACQAXAAgACgALAAwADQALAAoADAALABgADwAYAAsAEAAYAA8AEAAOABgAEQAOABAAEQASAA4AEwASABEAEwAZABIAFQAZABMAFQAUABkAGgAbABwAGwAdABwAHQAeABwAHwAaABwAHgAgABwAHwAcACEAIgAfACEAIAAjABwAIAAkACMAJAAlACMAJQAmACMAJgAnACMAJwAoACMAKAApACoAKQArACoAKwAsACoALAAtACoALQAuACoALwAqAC4ALQAwAC4A"), 0.149667, PackedByteArray("AAABAAIAAwAAAAIAAQAEAAIAAwACAAUAAQAGAAQABwADAAUABgAIAAQABwAFAAgABgAJAAgACQAHAAgACgALAAwADQALAAoADAALAA4ADwAOAAsAEAAOAA8AEQAOABAAEQASAA4AEwASABEAEwAUABIAFQAUABMA")],
"material": SubResource("StandardMaterial3D_vkyjj"),
"name": "RustedMetal",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 263,
"vertex_data": PackedByteArray("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")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_cm8yl")
[sub_resource type="ArrayMesh" id="ArrayMesh_p7mtt"]
_surfaces = [{
"aabb": AABB(-0.008764982, 0.084730506, 0.0045645237, 1.1378667, 2.0683517, 0.050001144),
"format": 34896613377,
"index_count": 36,
"index_data": PackedByteArray("AAABAAIAAAACAAMAAAAEAAEAAgAFAAMAAgABAAUAAAADAAYABAAAAAYABgADAAUAAQAEAAcABAAGAAcAAQAHAAUABgAFAAcA"),
"name": "DoorType1_2",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 8,
"vertex_data": PackedByteArray("AAAAAP7/AAD+//////8AAP//AAD+/wAA//8AAAAAAAAAAP////8AAP7///8AAAAAAAAAAAAAAAAAAP//AAAAAA==")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_y6mlo"]
resource_name = "medievaldoors11_Cube_017"
_surfaces = [{
"aabb": AABB(-0.008764982, 0.084730506, 0.0045645237, 1.1378667, 2.0683517, 0.050001144),
"attribute_data": PackedByteArray("AID8//7/AID///z/AIAAgACA/P/+/wCAAIAAgP///P/9/xeD/3//f/3//3//fxeDUfr///H/AoDx////UfoCgP9/F4P9//9//3//f/3/F4NR+gKA8f////H/AoBR+v//"),
"format": 34896613399,
"index_count": 36,
"index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADAAPAA0AEAARABIAEAATABEAFAAVABYAFAAXABUA"),
"material": SubResource("StandardMaterial3D_ow5aw"),
"name": "DoorType1_2",
"primitive": 3,
"uv_scale": Vector4(1.1002946, 2.0001838, 0, 0),
"vertex_count": 24,
"vertex_data": PackedByteArray("AAAAAP7/AID+//////8AgP//AAD+/wCAAAD/////AIAAAAAAAAAAAP7///8AAAAAAAD//wAAAAD//wAAAAAAAP7///////+/AAD//wAA/7/+////AAD/vwAA//////+///8AAP7//7/+////AAD/v///AAAAAP+//v///////78AAAAA/v//P///AAAAAP8/AAAAAAAA/z///wAA/v//PwAA/////wAAAAAAAAAAAAAAAP//AAAAAAAAAAD+/wAA/3////9/////f////3///////3////9/////f////3////9/////f////3////9//38AAP9/AAD/fwAA/38AAAAA/38AAP9/AAD/fwAA/3//P/9//z//f/8//3//P/9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_p7mtt")
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_kufgt"]
points = PackedVector3Array(-0.008764982, 0.084730506, 0.0045645237, -0.008764982, 0.084730506, 0.054560777, -0.008764982, 2.1530824, 0.0045645237, 1.1291018, 0.084730506, 0.0045645237, 1.1291018, 0.084730506, 0.054560777, -0.008764982, 2.1530824, 0.054560777, 1.1289904, 2.1530824, 0.0045645237, 1.1289904, 2.1530824, 0.054560777)
[sub_resource type="ArrayMesh" id="ArrayMesh_1fp46"]
_surfaces = [{
"aabb": AABB(0.028411865, 0.91522706, 0.06941259, 0.122282505, 0.15972829, 0.053642333),
"format": 34896613377,
"index_count": 1098,
"index_data": PackedByteArray("AAAKADYACgAiADYAPQAAADYAAAA3AAoAPQA2AAIAPQAfAAAANgAiAGQANgBkAAIACgBlACIAAAAfADgAAAA4ADcANwBmAAoAZgBlAAoANwA4ADkANwABAGYANwA5AAEAOABnADkAHwBoADgAOABoAGcAHwBpAGgAAQA6AGYAZgAjAGUAOgAjAGYAIwA7AGUAaQA7AGgAOgBqACMAPgBpAB8APQA+AB8AaAA7AGsAIwBrADsAaABrAGcAagBrACMAIAA+AD0AIAA9AAIAZQA7AGwAaQBsADsAZQBsACIAPgBtAGkAbQBsAGkAIABAAD4AQABtAD4AIgBsAD8AbQA/AGwAIgA/AGQAQABuAG0AbgA/AG0AAwBAACAAbgBvAD8AZAA/AG8ALABuAEAAAwAsAEAAcABvAG4ALABwAG4AZABvACEAAgBkACEAIAACAEEAAwAgAEEAAgAhAEEAcABxAG8AIQBvAHEAIQBxAEIAQQAhAEIAAwBBAHIAQQBCAHIAQwADAHIAQwAsAAMARABwACwAQwBEACwAcwBxAHAARABzAHAAQgBxAEUAcwBFAHEAcgBCAHQAQgBFAHQAQwByAAYAcgB0AAYARgBEAEMARgBDAAYAKgBzAEQARgAqAEQAdQBFAHMAKgB1AHMAdABFAHYAdQB2AEUABgB0ACsAdAB2ACsARgAGAEcABgArAEcACAAqAEYACABGAEcASAB1ACoACABIACoAdwB2AHUASAB3AHUAKwB2AEkAdwBJAHYARwArAHgAKwBJAHgACABHAHkARwB4AHkASgBIAAgASgAIAHkAKAB3AEgASgAoAEgAegBJAHcAKAB6AHcAeABJAHsAegB7AEkAeQB4ACkAeAB7ACkASgB5AAsAeQApAAsASwAoAEoASwBKAAsATAB6ACgASwBMACgAfAB7AHoATAB8AHoAKQB7AE0AfABNAHsACwApAH0AKQBNAH0ASwALAH4ACwB9AH4ACQBMAEsACQBLAH4AJgB8AEwACQAmAEwAfwBNAHwAJgB/AHwAfQBNAIAAfwCAAE0AfgB9ACcAfQCAACcACQB+AAcAfgAnAAcATgAmAAkATgAJAAcATwB/ACYATgBPACYAgQCAAH8ATwCBAH8AJwCAAFAAgQBQAIAABwAnAIIAJwBQAIIATgAHAFIABwCCAFIABABPAE4ABABOAFIAUQCBAE8ABABRAE8AgwBQAIEAUQCDAIEAggBQAIQAgwCEAFAAUgCCACUAggCEACUABABSAIUAUgAlAIUAUwBRAAQAUwAEAIUAJACDAFEAUwAkAFEAhgCEAIMAJACGAIMAJQCEAIcAhgCHAIQAhQAlAFQAJQCHAFQAUwCFAAUAhQBUAAUAPAAkAFMAPABTAAUAVgCGACQAPABWACQAiACHAIYAVgCIAIYAAQBWADwAAQA5AFYAOQCIAFYAAQA8ADoAPAAFADoABQBqADoABQBUAGoAOQBnAIgAVABVAGoAVACHAFUAiABVAIcAZwBVAIgAagBVAGsAZwBrAFUADAAOAIkADAANAA4AEQAMAIkADQCKAA4ADQAPAIoAEQCJAIsAFAARAIsAiQAOAIwAFACLABMAFQAUABMAiwCJAI0AiQCMAI0AEwCLAI4AiwCNAI4AFQATAI8AFwAVAI8AEwCOADAAjwATADAAFwCPAC4AGQAXAC4AjwAwAJAALgCPAJAAGQAuAJEAGgAZAJEALgCQAFgAkQAuAFgAGgCRAFcAHAAaAFcAkQBYAJIAVwCRAJIAHABXAJMAHgAcAJMAVwCSAJQAkwBXAJQAHgCTABYAHQAeABYAkwCUAFkAFgCTAFkAHQAWAJUAGwAdAJUAFgBZAJYAlQAWAJYAGwCVAC0AGAAbAC0AlQCWAC8ALQCVAC8AGAAtAJcAEgAYAJcALQAvAJgAlwAtAJgAEgCXAJkAEAASAJkAlwCYAJoAmQCXAJoAEACZAFoADwAQAFoADwBaAIoAWgCZAFsAmQCaAFsAigBaAJsAWgBbAJsAigCbADEADgCKADEADgAxAIwAMQCbAJwAmwBbAJ0AmwCdAJwAWwBcAJ0AWwCaAFwAjAAxADQAMQCcADQAjAA0AJ4AjQCMAJ4AmgCfAFwAmgCYAJ8AjQCeAKAAjgCNAKAAngA0AKEAjgCgAKIAMACOAKIAoACeAKMAngChAKMAogCgAKQAoACjAKQAMACiAGAAkAAwAGAAogCkAKUAYACiAKUApQCkAKYAkABgAKcAWACQAKcAYAClADUApwBgADUApQCmAKgANQClAKgApACpAKYAqQCoAKYApACjAKkANQCoAKoAWACnAKsApwA1AKwArAA1AKoAqwCnAKwAkgBYAKsAqACtAKoArACqAK0AqQCtAKgAqwCsAK4ArgCsAK0AkgCrAK8ArwCrAK4AlACSAK8AowBiAKkAowChAGIAsACpAGIAoQCwAGIAsQCpALAAsQCtAKkAoQCyALAANACyAKEANACcALIAsgCzALAAsQCwALMAnABfALIAsgBfALMAXwCxALMAnACdAF8AnQC0AF8AXwC0ALEAnQBcALQAtABhALEAXAC1ALQAtAC1AGEAXACfALUAtgCxAGEAtQC2AGEAtwCxALYArQCxALcAtQC4ALYAnwC4ALUAuAC5ALYAtwC2ALkAnwAyALgAmAAyAJ8AmAAvADIAuAC6ALkAMgC6ALgAugC3ALkALwC7ADIAMgC7ALoALwCWALsAugBeALcAuwBeALoAlgC8ALsAuwC8AF4AlgBZALwAXgBjALcAWQBdALwAWQCUAF0AlACvAF0AvAC9AF4AXgC9AGMAvABdAL0AvgC3AGMAvQC+AGMArQC3AL4AXQAzAL0AXQCvADMAvQAzAL4ArwCuADMArQC+AL8ArgCtAL8AMwC/AL4AMwCuAL8A"),
"lods": [0.012256797, PackedByteArray("AAAKADYAAAA3AAoAAAA4ADcANwABAAoANwA4ADkANwA5AAEAOAAjADkAAQA6AAoAOgAjAAoAOAA7ACMAAQA8ADoAAAAfADgAHwA7ADgAPQAfAAAAPQAAADYAHwAiADsAIwA7ACIACgAiADYACgAjACIAPQA2AAIAPQA+AB8APgAiAB8AIAA9AAIAIAA+AD0ANgAhAAIANgAiACEAPgA/ACIAIgA/ACEAQAA/AD4AIABAAD4AQAAhAD8AIAACAEEAAgAhAEEAAwBAACAAAwAgAEEALAAhAEAAAwAsAEAALABCACEAQQAhAEIAAwBBAAYAQQBCAAYAQwAsAAMAQwADAAYARABCACwAQwBEACwARABFAEIARgBDAAYARgBEAEMABgBCACsAQgBFACsARgAGAEcABgArAEcAKgBFAEQARgAqAEQAKgArAEUACABGAEcACAAqAEYACABHAAsASAArACoACABIACoASABJACsARwArACkAKwBJACkARwApAAsAKABJAEgAKAApAEkASgBIAAgASgAoAEgASgAIAAsASwAoAEoASwBKAAsATAApACgASwBMACgATABNACkASwALAAcACwApACcAKQBNACcACwAnAAcAJgBNAEwAJgAnAE0ACQBMAEsACQAmAEwACQBLAAcATgAmAAkATgAJAAcATwAnACYATgBPACYATwBQACcABwAnACUAJwBQACUAUQBQAE8AUQAlAFAABABPAE4ABABRAE8ATgAHAFIABABOAFIABwAlAFIABABSAAUAUgAlAAUAUwBRAAQAUwAEAAUAJAAlAFEAUwAkAFEAJABUACUABQAlAFQAPAAkAFMAPABTAAUAPAAFADoABQAjADoABQBUACMAVABVACMAOQAjAFUAVgBUACQAPABWACQAVgBVAFQAOQBVAFYAAQBWADwAAQA5AFYADAANAA4ADQAPAA4AEQAMAA4AEQAOABMAFAARABMAFQAUABMAFQATAC4AFwAVAC4AGQAXAC4ALgATADAAEwAOADAAGQAuAFcAGgAZAFcAHAAaAFcAVwAuAFgALgAwAFgAHABXABYAHgAcABYAHQAeABYAFgBXAFkAVwBYAFkAHQAWAC0ALQAWAFkAGwAdAC0AGAAbAC0AEgAYAC0AEgAtAFoAEAASAFoADwAQAFoADwBaAA4AWgAtAFsADgBaAFsALQBZAC8ALQAvAFsADgBbADEADgAxADAAMQBbADQAMAAxADQAWwAvAFwAWwBcADQALwBZADIALwAyAFwAWQBdADIAWQBYAF0AXAAyAF4AMgBdAF4ANABcAF8AXABeAF8AWAAwAGAAMAA0AGAAWABgAF0AXwBeAGEAYAA0ADUANABfADUAXQBgADMAXQAzAF4AYAA1ADMAXwBhAGIANQBfAGIAXgBjAGEAXgAzAGMAYQBjAGIAMwA1AGMAYgBjADUA"), 0.029816525, PackedByteArray("AAAKAAIAAAABAAoAAAAfAAEAIAAfAAAAIAAAAAIAIAAhAB8AHwAiAAEAHwAhACIACgAiAAIAAgAiACEACgAjACIAAQAiACMABQAjAAoAAQAFAAoAAQAjACQABQAlACMAJAAjACUAAQAEAAUAAQAkAAQABAAHAAUABwAlAAUABAAkACYAJAAlACYABAAJAAcABAAmAAkABwAnACUAJgAlACcACwAnAAcACQALAAcAJgAnACgACQAmACgACwApACcAKAAnACkACQAIAAsACQAoAAgABgApAAsACAAGAAsAKAApACoACAAoACoAKgApACsABgArACkACAAqACwAKgArACwABgAhACsALAArACEAAgAhAAYALAAhACAAAwACAAYACAADAAYAAwAgAAIACAAsAAMAAwAsACAADAANAA4ADQAPAA4ADwAQAA4AEQAMAA4AEAASAA4AEQAOABMAFAARABMAFQAUABMAEgAtAA4AEgAYAC0AGAAbAC0AGwAdAC0AFQATAC4AFwAVAC4AGQAXAC4AGgAZAC4AHAAaAC4AHQAWAC0AHAAuABYAHQAeABYAHgAcABYAFgAuAC8ALQAWAC8ALgATADAALgAwAC8AEwAOADAADgAtADEALQAvADEADgAxADAAMQAvADIALwAwADMALwAzADIAMQAyADQAMAAxADQANAAyADMAMAA1ADMANAAzADUAMAA0ADUA"), 0.093039304, PackedByteArray("AAAKAAIAAAACAAoAAwAAAAIAAwACAAAAAwAGAAIAAwACAAYACAADAAYACAAGAAMACAALAAYACAAGAAsACQAIAAsACQALAAgACQAHAAsACQALAAcABAAJAAcACQAEAAcAAAAKAAEAAAABAAoAAQAKAAQAAQAFAAoABQAEAAoAAQAEAAUABAAHAAUABwAEAAUADAANAA4ADQAPAA4ADwAQAA4AEQAMAA4AEAASAA4AEQAOABMAFAARABMAFQAUABMADgAWABMAFQATABYAEgAWAA4AFwAVABYAEgAYABYAGQAXABYAGgAZABYAGAAbABYAHAAaABYAGwAdABYAHgAcABYAHQAeABYA"), 0.149667, PackedByteArray("AAABAAIAAAACAAEAAwAAAAIAAwACAAAAAQACAAQAAQAFAAIAAQAEAAUABQAEAAIAAwACAAYAAwAGAAIABAAHAAUABwAEAAUACAADAAYACAAGAAMACAAHAAYACAAGAAcACQAEAAcABAAJAAcACQAIAAcACQAHAAgA")],
"name": "RustedMetal",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 192,
"vertex_data": PackedByteArray("+7B1B1SiAABA9n08VKIAAP9/FRRUogAAfSWzHFSiAACB2kenVKIAAATezn9UogAA+iEtRFSiAAD/f+WvVKIAAL4JfYdUogAA/3/7w1SiAAD0x+YqVKIAAAo4FJlUogAAzCq+mgAAAACEI8S2AAAAAIQjxLa2RwAAzCrK0gAAAACIP4zqAAAAAIg//IIAAAAAkF5r+gAAAACQXhxztkcAAJBeHHMAAAAAK4OJbQAAAACL28rStkcAAManHHMAAAAAK4P//wAAAADOxvyCAAAAAIvbvpoAAAAAxqdr+gAAAADT4sS2AAAAAM7GjOoAAAAAi9vK0gAAAAD7sHUHHNEAAANPdQdUogAADVkDGhzRAADwpgMaHNEAAATeLUQb0QAAQPZ9hxvRAAD0xxSZG9EAAP9/+8Mb0QAA/3/lrxvRAAB9JUenG9EAAAo4FJkb0QAAAAD9YRvRAAA7Gv1hG9EAAH0lsxwb0QAAxqdr+rZHAADGpxxztkcAAHau6NeifQAAvWt2i6J9AACbSrTIon0AAP2ZPMgemgAA/ZlLpb3mAABaZTjAHpoAANF28J+95gAA8KYDGlSiAACB2rMcVKIAAIHasxwb0QAAQPZ9PBvRAADD5f1hVKIAAEjN0ibZ5QAA///9YVSiAAD/fwAAVKIAAP9/AAAc0QAA/39QDtnlAAADT3UHHNEAAA1ZAxpUogAACjjmKhvRAAC+CX08VKIAAL4JfTwb0QAABRv4QdnlAAAAAP1hVKIAADsa/WFUogAAvgl9hxvRAAAFGwOC2eUAAH0lR6dUogAAA0+FvFSiAAADT4W8G9EAACtWS6/Z5QAA+7CFvFSiAAD7sIW8G9EAANKpS6/Z5QAAgdpHpxvRAADwpvepVKIAAED2fYdUogAABN7OfxvRAABL7f1h2eUAAP///WEb0QAAi9u+mrZHAACZmnaLon0AAGTAxLaifQAAiD+M6rZHAAC9axHion0AACuDec8emgAA/KBPrR2aAABxo8S2veYAANF2l8295gAA0Xbwnx2aAADyiHLB//8AADh1MLv+/wAAHpFXsv7/AAD/fxUUHNEAAPTH5iob0QAABN4tRFSiAABZ7v8+nucAAHTUVCGe5wAAtK2CDZ7nAADD5f1hG9EAAPnk+EHZ5QAA0qmvFNnlAAD/f4wGnucAAElSgg2e5wAAK1avFNnlAACJK1QhnucAALYy0ibZ5QAACjjmKlSiAAClEf8+nucAAPohLUQb0QAAjQj9YZ7nAACyEv1h2eUAAKUR+4Se5wAA+iHOfxvRAAD6Ic5/VKIAAIkrpqKe5wAAtjIondnlAABJUni2nucAAA1Z96kb0QAADVn3qVSiAAD/f269nucAAP9/qrXZ5QAAtK14tp7nAADwpvepG9EAAHTUpqKe5wAASM0ondnlAAD0xxSZVKIAAFnu+4Se5wAA+eQDgtnlAABw9/1hnucAAMwqvpq2RwAAzCrK0rZHAACIP/yCtkcAAPJFxLaifQAAm0rUpKJ9AADgV5+Von0AACuDiW22RwAAK4Plh6J9AADOxvyCtkcAAHaun5WifQAA0+LEtrZHAAC7u9Skon0AAM7GjOq2RwAAu7u0yKJ9AAArg///tkcAAJmaEeKifQAAkF5r+rZHAAArg6Plon0AAOBX6NeifQAAWWw8yB6aAADRdpfNHpoAAOVixLYemgAAhY+XzR6aAABaZU+tHZoAAFplOMC95gAAWWxLpR2aAADlYsS2veYAAFplT6295gAAWWxLpb3mAAA4dVey/v8AACuDD54dmgAAfniXrv7/AAASdMS2/v8AAGR9Fqz+/wAAhY/wnx2aAAArgw+eveYAACuDNKv+/wAAhY/wn73mAAD9mUulHZoAAH548L7//wAAK4NTwv//AABZbDzIveYAAGR9csH//wAAK4N5z73mAACFj5fNveYAANiN8L7//wAARZLEtv7/AAD9mTzIveYAAB6RMLv+/wAA/KA4wL3mAAD8oDjAHpoAAHGjxLYemgAA/KBPrb3mAADYjZeu/v8AAPKIFqz+/wAA")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_j0nlc"]
resource_name = "medievaldoors11_Cube_013"
_surfaces = [{
"aabb": AABB(0.028411865, 0.91522706, 0.06941259, 0.122282505, 0.15972829, 0.053642333),
"attribute_data": PackedByteArray("AaUQdOa4/ItFkrhyBXGra/CpS54VbI53AaUuqiBd3onBgyKj4oFfqezqV7ZS8G3icNcz3vb/XLzwnzbrNM+//RCv9v/HetTy3Xz53Otg2te5beat811irPCpi4EVbE+UMLuC7I1uZMWSAV5baAHLZCsJ7GRAATluEQEZecIBgVDcAL6FuwkGRPkB5EPqB/64pQCCk28ASaE9APmtGgDsuAgAccIIAPrLQRvZwiEA+tZkAMPj3ACs8UgKLv/VXKTeGgL2/+KBiGly8D242OPi1jH6bLokyPfuhuLq6+St2vFcr9H6kYoK+bSQcOwOfVbudXJ42fFp0N88ak/GcWJryk9inKyQabytOQhnoTkIjOORFNf5gygTzw4xkMWRJrzowCXC9V9OYN2BLCja70O04s8+b/AeTATzDFTs9q2fv3jpsSB/JJR7bH6v3ZXluK+YwYNgcOmxSaMcZJByRJJ5pSBdK30jlFGsh2b9fwVxyqEcZLqWceVGxtrtccp8837O8/jG0Fnrad+X5srvyNu8+LfbEeIW2Rn0v9Qx7d3NtvhPwPb/Ys825e2/7fodvaf0i5ya/Rmu2OyCnXv4i57v8iaMMvQ+ktHnjW5D6/GDVuencXvnFmZ04iR3KOM+dmzWNmVd1gZeC8uiapbSIF0yvHhhLrx9ZuS61gg5edsH8MtcE7jm1gw0zXEcdfVEG97R3iCR4D9C29XdUVTSPS2p6uUwXfbpMuvtTylw5CosQOorMsDndDcQ2/w4cuSMOSzqZUUV8X6vxItZdhNyrZ/Go4dmFYpYdhqdEJ8d8EGPDu/bu5HxRcb26U+u1vSL0s7p/8ku8tne6tMI3kLl6+qFyGXmmdmn8wW5SPBmzHz2jbmM6HzcGuCV6OnWl/AFzEb1o76B9+6ufPcYnlb1vY1H8Wd/u+vBgbHpY3Qr5UuGy+LDefLg2Gyz3ahvmtsUaIvUTmUYyUVkmbsUZQOtqWeYxypnaK1NbcXQhHHRzglpVbpYbSe6VAl/WwMJWm6DCaNQowjdhW4IoJMKCBSu2gd3wvYH3Na1CDPxPBNi8IkJMdcpHB3wkhTY3dYcVOqLJdDwPCsU8xMXwNbIEjbGaR7y5NMlXezjKqfwOSwg9RIrNe5+K//r6isZ7LUnHebbI07dJCFZz5Ql9MIiLQrpuCc020srUONoLjvoAjFv0PI8Ucn4LbjiHDDS5+gxJNrlObbSSEiizW8xu+JTNV3jWjT25408D91NSWDZ8Vjc12g2i+jUQKzf4TvM5TQ4TekeURPiD11j5tI9SOe+RfPld1Fo5+RZne76PuToYDou649Gb+mbTy/thj/K6sk6YexcRkftgz827bw63e0xOobvUjNa8Doy7vQVM9PySS/n9qUtePbYLh7q6jHh63wwi+o="),
"format": 34896613399,
"index_count": 1098,
"index_data": PackedByteArray("AAAWAE8AAABQABYAUQAAAE8AUACRABYAUQBPAAIAUAABAJEAMQBRAAIAAQBSAJEAMQACAFQAAQBTAFIAAwAxAFQAUwAEAFIAAwBUAJIAUwBVAAQAVgADAJIAVQCTAAQAVgCSAAUAVQAGAJMAWABWAAUABgBXAJMAWAAFAFoABgBZAFcABwBYAFoAWQAIAFcABwBaAJQAWQAJAAgAXAAHAJQACQCVAAgAXACUABcACQBbAJUAWwBcABcAWwAXAJUAlgCXADoADgCWADoAbQCWAA4ADgA6AHEAbQA3AJYAGAA3AG0ANwBvAJYAlgBvAJcAGACYADcAmQCYABgANwCaAG8AmACaADcAmQA1AJgAaQA1AJkAmABrAJoANQBrAJgAaQCbADUADACbAGkANQCcAGsAmwCcADUADABkAJsAnQBkAAwAmwBmAJwAZABmAJsAnQAzAGQAXQAzAJ0AZACeAGYAMwCeAGQAXQCfADMACgCfAF0ACgAyAJ8AnwCgADMAMwCgAJ4AMgBeAJ8AnwBeAKAAMgChAF4AogBeAKEAogChAKMApACgAF4ApABeAKIApQCeAKAApQCgAKQApgCeAKUApgBmAJ4AXwCiAKMAXwCjADQAYABfADQAYAA0AA0ACwBfAGAAYQCiAF8ACwBhAF8AYQCkAKIAYgBhAAsANgCkAGEAYgA2AGEANgClAKQAYwA2AGIAZQClADYAYwBlADYAZQCmAKUADwBlAGMADwBnAGUAZwCmAGUAaABnAA8AZwCnAKYApwBmAKYApwCcAGYAaABqAGcAagCnAGcAEABqAGgAqACcAKcAagCoAKcAqABrAJwAEAA4AGoAOACoAGoAbAA4ABAAqQBrAKgAOACpAKgAqQCaAGsAbABuADgAbgCpADgAOQBuAGwAqgCaAKkAbgCqAKkAqgBvAJoAOQBwAG4AcACqAG4AEQBwADkAqwBvAKoAcACrAKoAqwCXAG8AEQA7AHAAOwCrAHAAcgA7ABEArACXAKsAOwCsAKsAcgB0ADsAdACsADsAdQB0AHIArACtAJcAOgCXAK0AdACuAKwArgCtAKwAdQA9AHQAPQCuAHQAEwA9AHUAOgCtAHMAcQA6AHMAcQBzAK8AcwCtAHYArgB2AK0ArwBzALAAcwB2ALAArwCwABIAsQB2AK4APQCxAK4AsAB2ALIAsQCyAHYAEgCwADwAsACyADwAEgA8AHcAEwB4AD0AeACxAD0AeQB4ABMAswCyALEAeACzALEAeQA/AHgAPwCzAHgAewA/AHkAswB6ALIAPACyAHoAPwC0ALMAtAB6ALMAewB8AD8AfAC0AD8AFQB8AHsAFQBAAHwAQAC1AHwAfAC1ALQAQAC2ALUAtAC3AHoAtQC3ALQAtgB9ALUAtQB9ALcAtgC4AH0APAB6ALkAuQB6ALcAdwA8ALkAdwC5ALoAuQC3AD4AugC5AD4APgC3AH0AugA+ABkAuwB9ALgAPgB9ALsAGQA+ALsAuwC4AEEAGQC7ALwAvAC7AEEAvABBABQAGgAcAL0AGgAbABwAHwAaAL0AGwC+ABwAHwC9AL8AIgAfAL8AIgC/ACEAGwAdAL4AHQB+AL4AHQAeAH4AHgDAAH4AHgAgAMAAIADBAMAAIAAkAMEAJABCAMEAJAAlAEIAJQDCAEIAJQAmAMIAJgAjAMIAJgAnACMAJwDDACMAJwAoAMMAKAB/AMMAKAApAH8AKQDEAH8AKQArAMQAKwBDAMQAKwAsAEMALADFAEMALAAtAMUALQAuAMUALQAwAC4AxQAuAEQAxQBEAMYAQwDFAMYAxgBEAIIAQwDGAIAAxwBDAIAAxgCCAMgAgADGAMgAyACCAEgAxwCAAMkAgQDHAMkAgADIAMoAyQCAAMoAyABIAMsAygDIAMsAywBIAMwAgQDJAM0AzgCBAM0AyQDKAM8AzQDJAM8AygDLANAAzwDKANAAywDMANEA0ADLANEA0gDRAMwAzgDNAIMAKgDOAIMAzQDPAIQAgwDNAIQAzwDQAEcAhADPAEcARwDQANMA0ADRANMARwDTANQA0QDVANMA1gBHANQAhABHANYA1gDUAIsAgwCEANcA1wCEANYAKgCDANgA2ACDANcA2QAqANgAigDWAIsA1wDWAIoAigCLANoA2ADXANsA2wDXAIoA2QDYAEUARQDYANsARgDZAEUA3ACKANoA2wCKANwA3ADaAN0ARQDbAEoASgDbANwARgBFAN4A3gBFAEoA3wBGAN4A4ADcAN0ASgDcAOAA4ADdAOEA3gBKAOIA4gBKAOAA3wDeAOMA4wDeAOIA5ADfAOMA5QDgAOEA4gDgAOUA5QDhAIwA4wDiAI0AjQDiAOUA5ADjAIUAhQDjAI0AhgDkAIUA5gDlAIwAjQDlAOYA5gCMAOcAhQCNAOgA6ACNAOYAhgCFAOkA6QCFAOgA6gCGAOkAjgDmAOcA6ADmAI4AjgDnAOsA6QDoAOwA7ADoAI4A6gDpAEkASQDpAOwALwDqAEkA7QCOAOsA7ACOAO0A7QDrAO4ASQDsAEsASwDsAO0ALwBJAO8A7wBJAEsA8AAvAO8A8QDtAO4ASwDtAPEA8QDuAI8A7wBLAPIA8gBLAPEA8ADvAPMA8wDvAPIA9ADwAPMA9QDxAI8A8gDxAPUA9QCPAPYA8wDyAPcA9wDyAPUA9ADzAPgA+ADzAPcATgD0APgATgD4AE0A+QD1APYA9wD1APkA+QD2APoA+AD3APsATQD4APsA+wD3APkATQD7AJAA/AD5APoA+wD5APwAkAD7APwA/AD6AP0AkAD8AEwATAD8AP0ATAD9AP4A/wAAAQEBAAECAYgA/wACAQABAgHSAAMBAgHRANIA/wDRAAIB0QD/AAQB0QAEAdUA1QAEAYcABAH/AAUBBQH/AIkABAEFAQYB"),
"lods": [0.012256797, PackedByteArray("AAAWAE8AAABQABYAUQAAAE8AUAABABYAUQBPAAIAAQBSABYAMQBRAAIAAQBTAFIAMQACAFQAUwAEAFIAAwAxAFQAUwBVAAQAAwBUAAUAVQAGAAQAVgADAAUABgBXAAQAWABWAAUABgBZAFcAWAAFAFoAWQAIAFcABwBYAFoAWQAJAAgABwBaABcACQBbAAgAWwAXAAgAXAAHABcAWwBcABcACgAzAF0AXQAzAAwACgAyADMAMgBeADMAXwBeADIAXwAyADQAYABfADQAYAA0AA0ACwBfAGAAYQBeAF8ACwBhAF8AYQAzAF4AYgBhAAsAYgA2AGEANgAzAGEAYwA2AGIANgBkADMADAAzAGQAYwBlADYAZQBkADYADwBlAGMAZQBmAGQADwBnAGUAZwBmAGUAaABnAA8AZABmADUADABkADUAZwA1AGYADAA1AGkAaABqAGcAagA1AGcAEABqAGgAaQA1ABgAEAA4AGoAagBrADUAOABrAGoAbAA4ABAANQBrADcAGAA1ADcAOAA3AGsAGAA3AG0AbABuADgAbgA3ADgAOQBuAGwAbgBvADcAOQBwAG4AcABvAG4AEQBwADkANwBvADoAbQA3ADoAcAA6AG8AbQA6AA4ADgA6AHEAEQA7AHAAOwA6AHAAcgA7ABEAcQA6AHMAOwBzADoAcQBzABIAcgB0ADsAdABzADsAdQB0AHIAdAB2AHMAdQA9AHQAPQB2AHQAEwA9AHUAcwB2ADwAEgBzADwAPQA8AHYAEgA8AHcAEwB4AD0AeAA8AD0AeQB4ABMAeAB6ADwAeQA/AHgAPwB6AHgAewA/AHkAPAB6AD4AdwA8AD4APwA+AHoAdwA+ABkAewB8AD8AfAA+AD8AFQB8AHsAFQBAAHwAQAB9AHwAfAB9AD4AQABBAH0APgB9AEEAGQA+AEEAGQBBABQAGgAbABwAGwAdABwAHwAaABwAHwAcACEAIgAfACEAHQB+ABwAHQAeAH4AHgAgAH4AIABCAH4AIAAkAEIAJAAlAEIAJQAmAEIAJgAjAEIAJgAnACMAJwAoACMAKAB/ACMAKAApAH8AKQArAH8AKwBDAH8AKwAsAEMALAAtAEMALQAuAEMALQAwAC4AQwAuAEQAQwBEAIAAgQBDAIAAgABEAIIAgQCAAIMAKgCBAIMARgAqAIMAgwCAAIQAgACCAIQARgCDAEUARgBFAIUAhgBGAIUARQCDAEoAgwCEAEoALwCGAIUAhACCAEcAggBIAEcARwBIAIcAiACHAEgAiQCHAIgAhABHAIoASgCEAIoAigBHAIsAigCLAIwAjQBKAIoARQBKAI0AhQBFAI0AjgCKAIwAjQCKAI4AjgCMAI8ATACOAI8ASwCNAI4ASwCOAEwAhQCNAEsAkABLAEwATQBLAJAASQCFAEsATQBJAEsALwCFAEkALwBJAE0ATgAvAE0A"), 0.029816525, PackedByteArray("AAAWAAIAAAABABYAMQAAAAIAAQAEABYAAwAxAAIAAQAGAAQAAwACAAUABgAIAAQABwADAAUABgAJAAgABwAFABcACQAXAAgACQAHABcACgAyADMACgAzAAwANAAzADIADAAzADUADAA1ABgANgAzADQANgA1ADMACwA2ADQACwA0AA0ADwA2AAsADwA1ADYAGAA1ADcADwA3ADUAGAA3AA4AOAA3AA8AEAA4AA8AOQA4ABAAOAA6ADcADgA3ADoAOQA6ADgADgA6ABIAOwA6ADkAEQA7ADkAEwA7ABEAOwA8ADoAEgA6ADwAEwA9ADsAPQA8ADsAEgA8AD4APQA+ADwAEgA+ABkAEwA/AD0APwA+AD0AFQA/ABMAFQBAAD8AQABBAD8APwBBAD4AGQA+AEEAGQBBABQAGgAbABwAGwAdABwAHQAeABwAHwAaABwAHgAgABwAHwAcACEAIgAfACEAIABCABwAIAAkAEIAJAAlAEIAJQAmAEIAJgAjAEIAJgAnACMAJwAoACMAKABDACMAKAApAEMAKQArAEMAKwAsAEMALAAtAEMALQAuAEMALQAwAC4AQwAuAEQAQwBEAEUAKgBDAEUARgAqAEUARQBEAEcARABIAEcARgBFAEkARQBHAEoASQBFAEoALwBGAEkASwBKAEcASQBKAEsASwBHAEwATQBLAEwATQBJAEsALwBJAE0ATgAvAE0A"), 0.093039304, PackedByteArray("AAAWAAIAAAABABYAAwAAAAIAAQAEABYAAwACAAUAAQAGAAQABwADAAUABgAIAAQABwAFABcABgAJAAgACQAHABcACQAXAAgACgALAAwADQALAAoADAALABgADwAYAAsAEAAYAA8AEAAOABgAEQAOABAAEQASAA4AEwASABEAEwAZABIAFQAZABMAFQAUABkAGgAbABwAGwAdABwAHQAeABwAHwAaABwAHgAgABwAHwAcACEAIgAfACEAIAAjABwAIAAkACMAJAAlACMAJQAmACMAJgAnACMAJwAoACMAKAApACoAKQArACoAKwAsACoALAAtACoALQAuACoALwAqAC4ALQAwAC4A"), 0.149667, PackedByteArray("AAABAAIAAwAAAAIAAQAEAAIAAwACAAUAAQAGAAQABwADAAUABgAIAAQABwAFAAgABgAJAAgACQAHAAgACgALAAwADQALAAoADAALAA4ADwAOAAsAEAAOAA8AEQAOABAAEQASAA4AEwASABEAEwAUABIAFQAUABMA")],
"material": SubResource("StandardMaterial3D_vkyjj"),
"name": "RustedMetal",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 263,
"vertex_data": PackedByteArray("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")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_1fp46")
[node name="MedievalDoor" type="Node3D" unique_id=1143822269]
[node name="Doorframe" type="StaticBody3D" parent="." unique_id=320444502]
[node name="DoorframeMesh" type="MeshInstance3D" parent="Doorframe" unique_id=221649147]
mesh = SubResource("ArrayMesh_22684")
[node name="DoorframeCollider" type="CollisionShape3D" parent="Doorframe" unique_id=1492557825]
shape = SubResource("ConcavePolygonShape3D_kufgt")
[node name="DoorStepMesh" type="MeshInstance3D" parent="Doorframe" unique_id=720005179]
mesh = SubResource("ArrayMesh_ci6nf")
[node name="DoorStepCollider" type="CollisionShape3D" parent="Doorframe" unique_id=1147755680]
shape = SubResource("ConcavePolygonShape3D_3u0t0")
[node name="DoorLeft" type="Node3D" parent="." unique_id=173219782 node_paths=PackedStringArray("body", "hinge")]
script = ExtResource("5_3u0t0")
body = NodePath("DoorBody")
maxGrabDistance = 3.0
hinge = NodePath("../HingeLeft")
hingeAngularUpperLimit = 0.001
snapAngleThreshold = 10.0
snapVelocityThreshold = 1.0
mouseHorizontalFactor = 0.5
mouseVerticalFactor = 0.5
metadata/_custom_type_script = "uid://cyw8ng7alo12e"
[node name="DoorBody" type="RigidBody3D" parent="DoorLeft" unique_id=1047666100]
collision_layer = 4
collision_mask = 9
axis_lock_angular_x = true
axis_lock_angular_z = true
mass = 10.0
angular_damp = 5.0
[node name="DoorLeftMesh" type="MeshInstance3D" parent="DoorLeft/DoorBody" unique_id=1467497491]
mesh = SubResource("ArrayMesh_qpqq3")
[node name="DoorLeftCollider" type="CollisionShape3D" parent="DoorLeft/DoorBody" unique_id=1292801504]
shape = SubResource("ConvexPolygonShape3D_3u0t0")
[node name="DoorHandle" type="MeshInstance3D" parent="DoorLeft/DoorBody" unique_id=530285053]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.015)
mesh = SubResource("ArrayMesh_ju5ts")
[node name="DoorRight" type="Node3D" parent="." unique_id=1328179091 node_paths=PackedStringArray("body", "hinge")]
script = ExtResource("5_3u0t0")
body = NodePath("DoorBody")
maxGrabDistance = 3.0
hinge = NodePath("../HingeRight")
hingeAngularLowerLimit = 0.001
snapAngleThreshold = 0.001
snapVelocityThreshold = 444.0
mouseHorizontalFactor = 0.5
mouseVerticalFactor = 0.5
metadata/_custom_type_script = "uid://cyw8ng7alo12e"
[node name="DoorBody" type="RigidBody3D" parent="DoorRight" unique_id=1795020957]
collision_layer = 4
collision_mask = 9
axis_lock_angular_x = true
axis_lock_angular_z = true
mass = 10.0
angular_damp = 5.0
[node name="DoorRightMesh" type="MeshInstance3D" parent="DoorRight/DoorBody" unique_id=790254688]
mesh = SubResource("ArrayMesh_y6mlo")
[node name="CollisionShape3D" type="CollisionShape3D" parent="DoorRight/DoorBody" unique_id=126846253]
shape = SubResource("ConvexPolygonShape3D_kufgt")
[node name="DoorHandle" type="MeshInstance3D" parent="DoorRight/DoorBody" unique_id=572399259]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.015)
mesh = SubResource("ArrayMesh_j0nlc")
[node name="HingeLeft" type="HingeJoint3D" parent="." unique_id=1531839944]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -1.2, 1, 0)
node_a = NodePath("../Doorframe")
node_b = NodePath("../DoorLeft/DoorBody")
angular_limit/enable = true
[node name="HingeRight" type="HingeJoint3D" parent="." unique_id=1980419171]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 1.2, 1, 0)
node_a = NodePath("../Doorframe")
node_b = NodePath("../DoorRight/DoorBody")
angular_limit/enable = true
+43
View File
@@ -0,0 +1,43 @@
[gd_scene format=3 uid="uid://cpog4xqme7wqj"]
[ext_resource type="Script" uid="uid://c1r1jpfh3vsn2" path="res://Scripts/PlayerController.gd" id="1_xhfnw"]
[ext_resource type="PackedScene" uid="uid://8xgne2anpltj" path="res://Scenes/Crosshair.tscn" id="2_kpjcp"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_rpqav"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_qbkls"]
[node name="Player" type="CharacterBody3D" unique_id=1270645855 node_paths=PackedStringArray("head", "camera", "raycast", "hand", "crosshair")]
collision_layer = 17
collision_mask = 13
script = ExtResource("1_xhfnw")
speed = 3.0
head = NodePath("Head")
camera = NodePath("Head/Camera3D")
raycast = NodePath("Head/Camera3D/RayCast3D")
hand = NodePath("Head/Camera3D/Hand")
crosshair = NodePath("Crosshair")
mouseFactorLerpSpeed = 5.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1346737595]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CapsuleShape3D_rpqav")
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=58443605]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
mesh = SubResource("CapsuleMesh_qbkls")
[node name="Head" type="Node3D" parent="." unique_id=1111037465]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7, 0)
[node name="Camera3D" type="Camera3D" parent="Head" unique_id=2013197953]
[node name="RayCast3D" type="RayCast3D" parent="Head/Camera3D" unique_id=176888250]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0)
target_position = Vector3(0, -2, 0)
collision_mask = 13
[node name="Hand" type="Marker3D" parent="Head/Camera3D" unique_id=1759533778]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -2)
[node name="Crosshair" parent="." unique_id=577244800 instance=ExtResource("2_kpjcp")]
+42
View File
@@ -0,0 +1,42 @@
[gd_scene format=3 uid="uid://cfheqck1xs2bs"]
[ext_resource type="Script" uid="uid://diphc7baic3px" path="res://Scripts/Button.gd" id="1_2ptq0"]
[sub_resource type="BoxShape3D" id="BoxShape3D_1blfk"]
size = Vector3(0.6, 0.6, 0.2640503)
[sub_resource type="BoxMesh" id="BoxMesh_1blfk"]
size = Vector3(0.6, 0.6, 0.2)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_va8t4"]
albedo_color = Color(0, 0, 0, 1)
[sub_resource type="CylinderMesh" id="CylinderMesh_1blfk"]
top_radius = 0.15
bottom_radius = 0.15
height = 0.1
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_476pq"]
albedo_color = Color(1, 0, 0, 1)
[node name="SimpleButton" type="Node3D" unique_id=1810741910 node_paths=PackedStringArray("buttonMesh")]
script = ExtResource("1_2ptq0")
buttonMesh = NodePath("Mesh")
metadata/_custom_type_script = "uid://diphc7baic3px"
[node name="StaticBody3D" type="StaticBody3D" parent="." unique_id=1106731310]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.12462454)
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" unique_id=756448224]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.032025155)
shape = SubResource("BoxShape3D_1blfk")
[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D" unique_id=1694245576]
transform = Transform3D(1, 0, 0, 0, 0.99999994, 0, 0, 0, 0.99999994, 0, 0, 7.450581e-09)
mesh = SubResource("BoxMesh_1blfk")
surface_material_override/0 = SubResource("StandardMaterial3D_va8t4")
[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1579829234]
transform = Transform3D(1, 0, 0, 0, -4.3711385e-08, -0.99999994, 0, 0.99999994, -4.3711385e-08, 0, 0, 0)
mesh = SubResource("CylinderMesh_1blfk")
surface_material_override/0 = SubResource("StandardMaterial3D_476pq")
+32
View File
@@ -0,0 +1,32 @@
[gd_scene format=3 uid="uid://dknge5384ijcx"]
[ext_resource type="Script" uid="uid://b143brnl7gf4f" path="res://Scripts/Pickupable.gd" id="1_rsor3"]
[sub_resource type="BoxShape3D" id="BoxShape3D_1blfk"]
size = Vector3(0.1, 0.1, 0.2)
[sub_resource type="BoxMesh" id="BoxMesh_va8t4"]
size = Vector3(0.1, 0.1, 0.3)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w4i4f"]
albedo_color = Color(1, 1, 0, 1)
[node name="SimpleKey" type="Node3D" unique_id=650555678 node_paths=PackedStringArray("body", "snapAnchor")]
script = ExtResource("1_rsor3")
body = NodePath("RigidBody3D")
snapAnchor = NodePath("SnapAnchor")
metadata/_custom_type_script = "uid://b143brnl7gf4f"
[node name="RigidBody3D" type="RigidBody3D" parent="." unique_id=1946674219]
collision_layer = 9
collision_mask = 13
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D" unique_id=1252834786]
shape = SubResource("BoxShape3D_1blfk")
[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D" unique_id=2082673006]
mesh = SubResource("BoxMesh_va8t4")
surface_material_override/0 = SubResource("StandardMaterial3D_w4i4f")
[node name="SnapAnchor" type="Marker3D" parent="." unique_id=389082687]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.15)
+49
View File
@@ -0,0 +1,49 @@
[gd_scene format=3 uid="uid://b0fqh430x23kp"]
[ext_resource type="Script" uid="uid://2vyt44um2tty" path="res://Scripts/Lever.gd" id="1_f25qh"]
[sub_resource type="BoxShape3D" id="BoxShape3D_476pq"]
size = Vector3(0.1, 0.1, 0.4)
[sub_resource type="BoxMesh" id="BoxMesh_va8t4"]
size = Vector3(0.1, 0.1, 0.4)
[sub_resource type="BoxMesh" id="BoxMesh_1blfk"]
size = Vector3(0.4, 0.6, 0.2)
[sub_resource type="BoxShape3D" id="BoxShape3D_1blfk"]
size = Vector3(0.4, 0.6, 0.2)
[node name="SimpleLever" type="Node3D" unique_id=2031608942 node_paths=PackedStringArray("body", "hinge")]
script = ExtResource("1_f25qh")
body = NodePath("Lever")
hinge = NodePath("HingeJoint3D")
metadata/_custom_type_script = "uid://2vyt44um2tty"
[node name="Lever" type="RigidBody3D" parent="." unique_id=1993131115]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.35175258)
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Lever" unique_id=2040680943]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.15)
shape = SubResource("BoxShape3D_476pq")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Lever" unique_id=252238333]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.15)
mesh = SubResource("BoxMesh_va8t4")
[node name="Base" type="StaticBody3D" parent="." unique_id=824081649]
[node name="MeshInstance3D" type="MeshInstance3D" parent="Base" unique_id=703826231]
mesh = SubResource("BoxMesh_1blfk")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Base" unique_id=954919913]
shape = SubResource("BoxShape3D_1blfk")
[node name="HingeJoint3D" type="HingeJoint3D" parent="." unique_id=1859101471]
transform = Transform3D(-0.029536895, 0.001207204, -0.99956304, 0.18270016, -0.9831466, -0.0065861586, -0.98272485, -0.18281487, 0.02881853, 0, 0, -0.05022694)
node_a = NodePath("../Base")
node_b = NodePath("../Lever")
angular_limit/enable = true
angular_limit/upper = 0.7853982
angular_limit/lower = -0.7853982
+24
View File
@@ -0,0 +1,24 @@
[gd_scene format=3 uid="uid://cjqsmugd22cdh"]
[ext_resource type="Script" uid="uid://b143brnl7gf4f" path="res://Scripts/Pickupable.gd" id="1_kaux8"]
[sub_resource type="BoxShape3D" id="BoxShape3D_1blfk"]
size = Vector3(2, 0.1, 1)
[sub_resource type="BoxMesh" id="BoxMesh_va8t4"]
size = Vector3(2, 0.1, 1)
[node name="SimplePickupable" type="Node3D" unique_id=650555678 node_paths=PackedStringArray("body")]
script = ExtResource("1_kaux8")
body = NodePath("RigidBody3D")
metadata/_custom_type_script = "uid://b143brnl7gf4f"
[node name="RigidBody3D" type="RigidBody3D" parent="." unique_id=1946674219]
collision_layer = 9
collision_mask = 13
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D" unique_id=1252834786]
shape = SubResource("BoxShape3D_1blfk")
[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D" unique_id=2082673006]
mesh = SubResource("BoxMesh_va8t4")
+27
View File
@@ -0,0 +1,27 @@
[gd_scene format=3 uid="uid://cjqsmugd22cdh"]
[ext_resource type="Script" uid="uid://b143brnl7gf4f" path="res://Scripts/Pickupable.gd" id="1_kaux8"]
[sub_resource type="BoxShape3D" id="BoxShape3D_1blfk"]
[sub_resource type="BoxMesh" id="BoxMesh_va8t4"]
[node name="SimplePickupable" type="Node3D" unique_id=650555678 node_paths=PackedStringArray("body")]
script = ExtResource("1_kaux8")
body = NodePath("RigidBody3D")
springStrength = null
springDamping = null
rotateStrength = null
rotateDamping = null
maxDistance = null
metadata/_custom_type_script = "uid://b143brnl7gf4f"
[node name="RigidBody3D" type="RigidBody3D" parent="." unique_id=1946674219]
collision_layer = 8
collision_mask = 5
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D" unique_id=1252834786]
shape = SubResource("BoxShape3D_1blfk")
[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D" unique_id=2082673006]
mesh = SubResource("BoxMesh_va8t4")
@@ -0,0 +1,22 @@
[gd_scene format=3 uid="uid://cjqsmugd22cdh"]
[ext_resource type="Script" uid="uid://b143brnl7gf4f" path="res://Scripts/Pickupable.gd" id="1_kaux8"]
[sub_resource type="BoxShape3D" id="BoxShape3D_1blfk"]
[sub_resource type="BoxMesh" id="BoxMesh_va8t4"]
[node name="SimplePickupable" type="Node3D" unique_id=650555678 node_paths=PackedStringArray("body")]
script = ExtResource("1_kaux8")
body = NodePath("RigidBody3D")
metadata/_custom_type_script = "uid://b143brnl7gf4f"
[node name="RigidBody3D" type="RigidBody3D" parent="." unique_id=1946674219]
collision_layer = 8
collision_mask = 5
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D" unique_id=1252834786]
shape = SubResource("BoxShape3D_1blfk")
[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D" unique_id=2082673006]
mesh = SubResource("BoxMesh_va8t4")
@@ -0,0 +1,22 @@
[gd_scene format=3 uid="uid://cjqsmugd22cdh"]
[ext_resource type="Script" uid="uid://b143brnl7gf4f" path="res://Scripts/Pickupable.gd" id="1_kaux8"]
[sub_resource type="BoxShape3D" id="BoxShape3D_1blfk"]
[sub_resource type="BoxMesh" id="BoxMesh_va8t4"]
[node name="SimplePickupable" type="Node3D" unique_id=650555678 node_paths=PackedStringArray("body")]
script = ExtResource("1_kaux8")
body = NodePath("RigidBody3D")
metadata/_custom_type_script = "uid://b143brnl7gf4f"
[node name="RigidBody3D" type="RigidBody3D" parent="." unique_id=1946674219]
collision_layer = 8
collision_mask = 5
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D" unique_id=1252834786]
shape = SubResource("BoxShape3D_1blfk")
[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D" unique_id=2082673006]
mesh = SubResource("BoxMesh_va8t4")
+52
View File
@@ -0,0 +1,52 @@
[gd_scene format=3 uid="uid://cyn6cmirqiiya"]
[ext_resource type="Script" uid="uid://d07hgc6eewoup" path="res://Scripts/SpatialAudioPlayer.gd" id="1_g20va"]
[node name="SpatialAudioPlayer" type="AudioStreamPlayer3D" unique_id=708850804]
script = ExtResource("1_g20va")
[node name="RayCastDown" type="RayCast3D" parent="." unique_id=1303526792]
target_position = Vector3(0, -100, 0)
collision_mask = 16
[node name="RayCastLeft" type="RayCast3D" parent="." unique_id=1754784517]
target_position = Vector3(100, 0, 0)
collision_mask = 16
[node name="RayCastRight" type="RayCast3D" parent="." unique_id=1209057136]
target_position = Vector3(-100, 0, 0)
collision_mask = 16
[node name="RayCastForward" type="RayCast3D" parent="." unique_id=1455084224]
target_position = Vector3(0, 0, 100)
collision_mask = 16
[node name="RayCastForwardLeft" type="RayCast3D" parent="." unique_id=2054830461]
transform = Transform3D(0.70710677, 0, 0.70710677, 0, 1, 0, -0.70710677, 0, 0.70710677, 0, 0, 0)
target_position = Vector3(0, 0, 100)
collision_mask = 16
[node name="RayCastForwardRight" type="RayCast3D" parent="." unique_id=885518827]
transform = Transform3D(0.7071067, 0, -0.7071067, 0, 1, 0, 0.7071067, 0, 0.7071067, 0, 0, 0)
target_position = Vector3(0, 0, 100)
collision_mask = 16
[node name="RayCastBackwardRight" type="RayCast3D" parent="." unique_id=1491942105]
transform = Transform3D(0.70710677, 0, 0.70710677, 0, 1, 0, -0.70710677, 0, 0.70710677, 0, 0, 0)
target_position = Vector3(0, 0, -100)
collision_mask = 16
[node name="RayCastBackwardLeft" type="RayCast3D" parent="." unique_id=1082500589]
transform = Transform3D(0.70710677, 0, -0.70710677, 0, 1, 0, 0.70710677, 0, 0.70710677, 0, 0, 0)
target_position = Vector3(0, 0, -100)
collision_mask = 16
[node name="RayCastBackward" type="RayCast3D" parent="." unique_id=441456695]
target_position = Vector3(0, 0, -100)
collision_mask = 16
[node name="RayCastUp" type="RayCast3D" parent="." unique_id=956781195]
target_position = Vector3(0, 100, 0)
collision_mask = 16
[node name="RayCastPlayer" type="RayCast3D" parent="." unique_id=1933512558]
+88
View File
@@ -0,0 +1,88 @@
extends Interactable
class_name Button3D
signal pressed(button: Button3D)
signal held(button: Button3D)
signal released(button: Button3D)
@export var pressDepth: float = 0.05
@export var pressSpeed: float = 10.0
@export var autoReset: bool = true
@export var buttonMesh: MeshInstance3D
@export var holdMode: bool = false
@export var pressArea: Area3D
var isPressed: bool = false
var offset: float = 0.0
var pressing_body: Node3D = null
func _ready() -> void:
if pressArea:
pressArea.monitoring = true
pressArea.monitorable = true
func beginInteract(player, hitPosition: Vector3):
if holdMode:
isPressed = true
offset = pressDepth
emit_signal("pressed", self)
else:
if isPressed:
return
isPressed = true
offset = pressDepth
emit_signal("pressed", self)
func updateInteract(player):
if holdMode and isPressed:
emit_signal("held", self)
func endInteract(player):
if holdMode:
isPressed = false
offset = 0.0
emit_signal("released", self)
else:
if autoReset:
offset = 0.0
func _physics_process(delta):
var target = offset
var current = buttonMesh.position.z
var newZ = lerp(current, -target, delta * pressSpeed)
buttonMesh.position.z = newZ
if autoReset and isPressed and abs(newZ) < 0.001:
isPressed = false
#func _physics_process(delta):
## Detect rigidbody overlap
#var bodies = pressArea.get_overlapping_bodies()
#
#if bodies.size() > 0:
#var body = bodies[0]
#
#if pressing_body == null:
#pressing_body = body
#isPressed = true
#offset = pressDepth
#emit_signal("pressed", self)
#else:
#if holdMode:
#emit_signal("held", self)
#else:
#if pressing_body != null:
#pressing_body = null
#if autoReset:
#offset = 0.0
#isPressed = false
#emit_signal("released", self)
#
## Animate button
#var target = offset
#var current = buttonMesh.position.z
#var newZ = lerp(current, -target, delta * pressSpeed)
#buttonMesh.position.z = newZ
#
#if autoReset and isPressed and abs(newZ) < 0.001:
#isPressed = false
+1
View File
@@ -0,0 +1 @@
uid://diphc7baic3px
+17
View File
@@ -0,0 +1,17 @@
extends CanvasLayer
class_name Crosshair
@export var normalTexture: Texture2D
@export var hoverTexture: Texture2D
@onready var normal = $NormalCrosshair
@onready var hover = $HoverCrosshair
func _ready():
normal.texture = normalTexture
hover.texture = hoverTexture
hover.visible = false
func setHover(active: bool):
normal.visible = !active
hover.visible = active
+1
View File
@@ -0,0 +1 @@
uid://dd8ys8xg3q3sw
+135
View File
@@ -0,0 +1,135 @@
extends Interactable
class_name Door
@export var body: RigidBody3D
@export var springStrength: float = 200.0
@export var springDamping: float= 50.0
@export var maxGrabDistance: float = 6.0
@export var mouseForce: float = 0.02
@export var hinge: HingeJoint3D
@export var hingeAngularUpperLimit: float = 120
@export var hingeAngularLowerLimit: float = -120
@export var snapAngleThreshold: float = 1
@export var snapVelocityThreshold: float = 5.0
@export var mouseHorizontalFactor: float = 1.0
@export var mouseVerticalFactor: float = 1.0
var dragging: bool = false
var grabLocal: Vector3 = Vector3.ZERO
var handOffset: Vector3 = Vector3.ZERO
func _ready() -> void:
hinge.set_param(HingeJoint3D.PARAM_LIMIT_LOWER, deg_to_rad(hingeAngularLowerLimit))
hinge.set_param(HingeJoint3D.PARAM_LIMIT_UPPER, deg_to_rad(hingeAngularUpperLimit))
func _physics_process(_delta):
if dragging:
return
var angle = get_hinge_angle()
var ang_vel = get_hinge_ang_vel()
if abs(rad_to_deg(angle)) > snapAngleThreshold:
return
if abs(ang_vel) > snapVelocityThreshold:
return
# Strong damping near closed position
var damping = springDamping * 4.0
# PD controller torque toward angle 0
var torque = -angle * springStrength - ang_vel * damping
var axis = hinge.global_transform.basis.y
body.apply_torque(axis * torque)
func beginInteract(player, hitPosition: Vector3):
dragging = true
handOffset = Vector3.ZERO
grabLocal = body.to_local(hitPosition)
player.setMouseFactors(mouseHorizontalFactor, mouseVerticalFactor)
func updateInteract(player):
if !dragging:
return
var worldGrab = body.to_global(grabLocal)
handOffset += player.camera.global_basis.x * player.interactionMouseDelta.x * mouseForce
handOffset += -player.camera.global_basis.y * player.interactionMouseDelta.y * mouseForce
handOffset = handOffset.limit_length(0.3)
var targetHand = player.hand.global_position + handOffset
var error = targetHand - worldGrab
var handDistance = player.hand.global_position.distance_to(worldGrab)
if handDistance > maxGrabDistance:
player.stopInteraction()
return
var offset = worldGrab - body.global_position
var pointVelocity = body.linear_velocity + body.angular_velocity.cross(offset)
var hingeAxis = body.global_basis.y
var tangent = hingeAxis.cross(offset)
if tangent.length_squared() < 0.0001:
return
tangent = tangent.normalized()
var tangentError = tangent * error.dot(tangent)
var tangentVelocity = tangent * pointVelocity.dot(tangent)
var force = tangentError * springStrength - tangentVelocity * springDamping
body.apply_force(force, offset)
func endInteract(player):
dragging = false
handOffset = Vector3.ZERO
player.setMouseFactors(1.0, 1.0)
#func get_hinge_angle() -> float:
#var body_basis = body.global_transform.basis
#var hinge_basis = hinge.global_transform.basis
#
## Body forward vector in world space
#var forward = body_basis.z
#
## Convert forward vector into hinge local space
#var local_forward = hinge_basis.inverse() * forward
#
## Angle around hinge axis (Y)
#return atan2(local_forward.x, local_forward.z)
func get_hinge_angle() -> float:
var hinge_axis = hinge.global_transform.basis.y.normalized()
# Door forward direction
var fwd = body.global_transform.basis.z.normalized()
# Reference forward direction (door closed direction)
var ref = hinge.global_transform.basis.z.normalized()
# Remove hinge axis component (project onto hinge plane)
var fwd_proj = (fwd - hinge_axis * fwd.dot(hinge_axis)).normalized()
var ref_proj = (ref - hinge_axis * ref.dot(hinge_axis)).normalized()
# Signed angle
var angle = atan2(
hinge_axis.dot(ref_proj.cross(fwd_proj)),
ref_proj.dot(fwd_proj)
)
return angle
func get_hinge_ang_vel() -> float:
var axis = hinge.global_transform.basis.y.normalized()
return body.angular_velocity.dot(axis)
+1
View File
@@ -0,0 +1 @@
uid://cyw8ng7alo12e
+19
View File
@@ -0,0 +1,19 @@
extends Node3D
class_name Interactable
static func find(node: Node) -> Interactable:
while node:
if node is Interactable:
return node
node = node.get_parent()
return null
func beginInteract(player, hitPosition: Vector3):
pass
func updateInteract(player):
pass
func endInteract(player):
pass
+1
View File
@@ -0,0 +1 @@
uid://boc1b3v02ssn5
+107
View File
@@ -0,0 +1,107 @@
extends Interactable
class_name Lever
@export var body: RigidBody3D
@export var hinge: HingeJoint3D
@export var angleOn: float = -45.0
@export var angleOff: float = 0.0
@export var snapStrength: float = 200.0
@export var maxGrabDistance: float = 4.0
@export var mouseForce: float = 0.015
var dragging := false
var grabLocal := Vector3.ZERO
var handOffset := Vector3.ZERO
var targetAngle := 0.0
func _ready():
hinge.set_param(HingeJoint3D.PARAM_LIMIT_LOWER, deg_to_rad(angleOn))
hinge.set_param(HingeJoint3D.PARAM_LIMIT_UPPER, deg_to_rad(angleOff))
targetAngle = angleOff
func _physics_process(delta):
if dragging:
return
var angle = rad_to_deg(get_hinge_angle())
# Snap to nearest end
var mid = (angleOn + angleOff) * 0.5
if angle < mid:
targetAngle = angleOn
else:
targetAngle = angleOff
var angleError = deg_to_rad(targetAngle) - get_hinge_angle()
# HARD SNAP — no spring
var axis = hinge.global_transform.basis.x
var torque = snapStrength * sign(angleError)
body.apply_torque(axis * torque)
func beginInteract(player, hitPosition: Vector3):
dragging = true
handOffset = Vector3.ZERO
grabLocal = body.to_local(hitPosition)
func updateInteract(player):
if !dragging:
return
var worldGrab = body.to_global(grabLocal)
# Only vertical mouse movement (Y)
handOffset += -player.camera.global_basis.y * player.interactionMouseDelta.y * mouseForce
handOffset = handOffset.limit_length(0.25)
var targetHand = player.hand.global_position + handOffset
var error = targetHand - worldGrab
var handDistance = player.hand.global_position.distance_to(worldGrab)
if handDistance > maxGrabDistance:
endInteract(player)
player.dragging = false
return
var offset = worldGrab - body.global_position
var pointVelocity = body.linear_velocity + body.angular_velocity.cross(offset)
# Correct hinge axis (X)
var hingeAxis = body.global_basis.x
var tangent = hingeAxis.cross(offset)
if tangent.length_squared() < 0.0001:
return
tangent = tangent.normalized()
var tangentError = tangent * error.dot(tangent)
var tangentVelocity = tangent * pointVelocity.dot(tangent)
var force = tangentError * snapStrength
body.apply_force(force, offset)
func endInteract(player):
dragging = false
handOffset = Vector3.ZERO
func get_hinge_angle() -> float:
var body_basis = body.global_transform.basis
var hinge_basis = hinge.global_transform.basis
# X-axis rotation → use UP vector
var up = body_basis.y
var local_up = hinge_basis.inverse() * up
return atan2(local_up.z, local_up.y)
func get_hinge_ang_vel() -> float:
var axis = hinge.global_transform.basis.x
return body.angular_velocity.dot(axis)
+1
View File
@@ -0,0 +1 @@
uid://2vyt44um2tty
+97
View File
@@ -0,0 +1,97 @@
extends Interactable
class_name Pickupable
@export var springStrength: float = 150.0
@export var springDamping: float = 50.0
@export var rotateStrength: float = 5.0
@export var rotateDamping: float = 5.0
@export var throwForce: float = 10.0
@export var maxDistance: float = 4.0
@export var body: RigidBody3D
@export var snapAnchor: Marker3D
@export_range(0.01, 1000.0, 0.01) var bodyMass: float = 1.0
var dragging: bool = false
var rotating: bool = false
var playerRef
var grabLocal: Vector3
var holdDistance: float
var rotationOffset: Basis
func _ready():
if body:
body.mass = bodyMass
func beginInteract(player, hitPosition: Vector3):
playerRef = player
dragging = true
grabLocal = body.to_local(hitPosition)
var holdPoint = player.hand
holdDistance = holdPoint.global_position.distance_to(hitPosition)
rotationOffset = holdPoint.global_basis.inverse() * body.global_basis
func updateInteract(player):
if !dragging:
return
# Toggle rotation mode
if Input.is_action_just_pressed("rotate"):
rotating = true
playerRef.setMouseFactors(0.0, 0.0)
if Input.is_action_just_released("rotate"):
rotating = false
playerRef.setMouseFactors(1.0, 1.0)
var holdPoint = player.hand
# Release if too far away
if body.global_position.distance_to(player.global_position) > maxDistance:
endInteract(player)
return
# Target position
var targetPosition = holdPoint.global_position + (-holdPoint.global_basis.z * holdDistance)
var offset = targetPosition - body.global_position
# Linear spring
body.apply_force(offset * springStrength - body.linear_velocity * springDamping, body.to_global(grabLocal) - body.global_position)
if rotating:
var delta = player.interactionMouseDelta
rotationOffset = Basis(Vector3.UP, deg_to_rad(-delta.x * 0.35)) * rotationOffset
rotationOffset = Basis(Vector3.RIGHT, deg_to_rad(delta.y * 0.35)) * rotationOffset
# Angular spring
var targetBasis = holdPoint.global_basis * rotationOffset
var currentQuat = body.global_basis.get_rotation_quaternion()
var targetQuat = targetBasis.get_rotation_quaternion()
var diff = targetQuat * currentQuat.inverse()
if diff.dot(Quaternion.IDENTITY) < 0:
diff = -diff
var angle = diff.get_angle()
if angle > 0.001:
body.apply_torque(diff.get_axis() * angle * rotateStrength - body.angular_velocity * rotateDamping)
func endInteract(player):
dragging = false
rotating = false
player.setMouseFactors(1.0, 1.0)
playerRef = null
func throw():
if !dragging:
return
var direction = -playerRef.camera.global_basis.z
body.apply_impulse(direction * throwForce)
+1
View File
@@ -0,0 +1 @@
uid://b143brnl7gf4f
+143
View File
@@ -0,0 +1,143 @@
extends CharacterBody3D
@export var speed: float = 6.0
@export var jumpVelocity: float = 5.0
@export var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity") as float
@export var acceleration: float = 20.0
@export var airAcceleration: float = 4.0
@export var friction: float = 10.0
var mouseBaseSensitivity: float = 0.004
var mouseSensitivity: float = 0.0
@export var mouseSensitivityMultiplier: float = 0.2
@export var head: Node3D
@export var camera: Camera3D
@export var raycast: RayCast3D
@export var hand: Marker3D
@export var crosshair: CanvasLayer
var lateJumpTime: float = 0.15
var lateJumpTimer: float = 0.0
var currentInteractable: Interactable
var dragging: bool = false
var pitch: float = 0.0
var playerId: String
var displayName: String
var mouseDelta: Vector2 = Vector2.ZERO
var interactionMouseDelta: Vector2 = Vector2.ZERO
var mouseHorizontalFactor: float = 1.0
var mouseVerticalFactor: float = 1.0
var targetMouseHorizontalFactor: float = 1.0
var targetMouseVerticalFactor: float = 1.0
@export var mouseFactorLerpSpeed: float = 2.0
func _ready():
mouseSensitivity = mouseBaseSensitivity * mouseSensitivityMultiplier
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
func _input(event: InputEvent) -> void:
if event.is_action_pressed("ui_cancel"):
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
func _unhandled_input(event: InputEvent) -> void:
if Input.mouse_mode != Input.MOUSE_MODE_CAPTURED:
return
if event is InputEventMouseMotion:
if dragging and currentInteractable:
interactionMouseDelta += event.relative
mouseDelta += event.relative
func _physics_process(delta):
mouseHorizontalFactor = lerp(mouseHorizontalFactor, targetMouseHorizontalFactor, delta * mouseFactorLerpSpeed)
mouseVerticalFactor = lerp(mouseVerticalFactor, targetMouseVerticalFactor, delta * mouseFactorLerpSpeed)
if mouseDelta != Vector2.ZERO:
rotate_y(-mouseDelta.x * mouseSensitivity * mouseHorizontalFactor)
pitch -= mouseDelta.y * mouseSensitivity * mouseVerticalFactor
pitch = clamp(pitch, deg_to_rad(-90), deg_to_rad(90))
head.rotation.x = pitch
mouseDelta = Vector2.ZERO
if !is_on_floor():
velocity.y -= gravity * delta
lateJumpTimer -= delta
else:
lateJumpTimer = lateJumpTime
# Interaction search
if !dragging:
if raycast.is_colliding():
currentInteractable = Interactable.find(raycast.get_collider())
crosshair.setHover(true)
else:
currentInteractable = null
crosshair.setHover(false)
# Start interaction
if !dragging and currentInteractable:
if Input.is_action_just_pressed("interact"):
dragging = true
currentInteractable.beginInteract(self, raycast.get_collision_point())
# Update interaction
if dragging and currentInteractable:
if Input.is_action_just_pressed("throw"):
if currentInteractable is Pickupable:
currentInteractable.throw()
stopInteraction()
return
currentInteractable.updateInteract(self)
interactionMouseDelta = Vector2.ZERO
# End interaction
if dragging and currentInteractable:
if Input.is_action_just_released("interact"):
stopInteraction()
# Late jump buffering
if Input.is_action_just_pressed("jump") and lateJumpTimer > 0.0:
velocity.y = jumpVelocity
# Movement
var inputDir := Input.get_vector("left", "right", "forward", "backward")
var direction := (transform.basis * Vector3(inputDir.x, 0, inputDir.y)).normalized()
if is_on_floor():
if direction != Vector3.ZERO:
velocity.x = direction.x * speed
velocity.z = direction.z * speed
else:
velocity.x = lerp(velocity.x, 0.0, delta * friction)
velocity.z = lerp(velocity.z, 0.0, delta * friction)
else:
velocity.x = lerp(velocity.x, direction.x * speed, delta * airAcceleration)
velocity.z = lerp(velocity.z, direction.z * speed, delta * airAcceleration)
move_and_slide()
func setMouseFactors(horizontal: float, vertical: float):
targetMouseHorizontalFactor = clamp(horizontal, 0.0, 1.0)
targetMouseVerticalFactor = clamp(vertical, 0.0, 1.0)
func stopInteraction():
if currentInteractable:
currentInteractable.endInteract(self)
currentInteractable = null
dragging = false
interactionMouseDelta = Vector2.ZERO
+1
View File
@@ -0,0 +1 @@
uid://c1r1jpfh3vsn2
+52
View File
@@ -0,0 +1,52 @@
class_name Socket
extends Node3D
@export var snapPoint: Marker3D
@export var snapDistance: float = 0.5
@export var lockOnSnap: bool = true
var candidate: Pickupable = null
var snappedObject: Pickupable = null
func is_in_range(object: Pickupable) -> bool:
if object == null:
return false
if object.snapAnchor == null:
return false
var distance := object.snapAnchor.global_position.distance_to(
snapPoint.global_position
)
return distance <= snapDistance
func getSnapTransform(object: Pickupable) -> Transform3D:
var objectTransform := object.body.global_transform
var anchorTransform := object.snapAnchor.global_transform
# Where is the SnapAnchor relative to the Rigidbody?
var anchorOffset := objectTransform.affine_inverse() * anchorTransform
# We want the SnapAnchor to have exactly the same
# transform as the Socket's SnapPoint.
return snapPoint.global_transform * anchorOffset.affine_inverse()
func snapObject(object: Pickupable):
if not is_in_range(object):
return
var targetTransform := getSnapTransform(object)
var body := object.body
body.linear_velocity = Vector3.ZERO
body.angular_velocity = Vector3.ZERO
body.global_transform = targetTransform
if lockOnSnap:
body.freeze = true
snappedObject = object
candidate = null
+1
View File
@@ -0,0 +1 @@
uid://xd03vepkva1l
+132
View File
@@ -0,0 +1,132 @@
extends AudioStreamPlayer3D
class_name SpatialAudioPlayer
@export var maxRaycastDistance: float = 30.0
@export var updateFrequencySeconds: float = 0.5
@export var maxReverbWetness: float = 0.5
@export var wallLowpassCutoffAmount: int = 600
var raycastArray: Array = []
var distanceArray: Array = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
var lastUpdateTime: float = 0.0
var updateDistances: bool = true
var currentRaycastIndex: int = 0
var audioBusIndex = null
var audioBusName: String = ""
var reverbEffect: AudioEffectReverb
var lowpassFilterEffect: AudioEffectLowPassFilter
var targetLowpassCutoff: float = 20000
var targetReverbRoomSize: float = 0.0
var targetReverbWetness: float = 0.0
var targetVolumeDb: float = 0.0
func _ready() -> void:
audioBusIndex = AudioServer.bus_count
audioBusName = "SpatialBus#"+str(audioBusIndex)
AudioServer.add_bus(audioBusIndex)
AudioServer.set_bus_name(audioBusIndex, audioBusName)
AudioServer.set_bus_send(audioBusIndex, bus)
self.bus = audioBusName
AudioServer.add_bus_effect(audioBusIndex, AudioEffectReverb.new(), 0)
reverbEffect = AudioServer.get_bus_effect(audioBusIndex, 0)
AudioServer.add_bus_effect(audioBusIndex, AudioEffectLowPassFilter.new(), 1)
lowpassFilterEffect = AudioServer.get_bus_effect(audioBusIndex, 1)
targetVolumeDb = volume_db
volume_db = -60
$RayCastDown.target_position = Vector3(0, -maxRaycastDistance, 0)
$RayCastLeft.target_position = Vector3(maxRaycastDistance, 0, 0)
$RayCastRight.target_position = Vector3(-maxRaycastDistance, 0, 0)
$RayCastForward.target_position = Vector3(0, 0, maxRaycastDistance)
$RayCastForwardLeft.target_position = Vector3(0, 0, maxRaycastDistance)
$RayCastForwardRight.target_position = Vector3(0, 0, maxRaycastDistance)
$RayCastBackwardRight.target_position = Vector3(0, 0, -maxRaycastDistance)
$RayCastBackwardLeft.target_position = Vector3(0, 0, -maxRaycastDistance)
$RayCastBackward.target_position = Vector3(0, 0, -maxRaycastDistance)
$RayCastUp.target_position = Vector3(0, maxRaycastDistance, 0)
raycastArray.append($RayCastDown)
raycastArray.append($RayCastLeft)
raycastArray.append($RayCastRight)
raycastArray.append($RayCastForward)
raycastArray.append($RayCastForwardLeft)
raycastArray.append($RayCastForwardRight)
raycastArray.append($RayCastBackwardRight)
raycastArray.append($RayCastBackwardLeft)
raycastArray.append($RayCastBackward)
raycastArray.append($RayCastUp)
play()
func onUpdateRaycastDistance(raycast: RayCast3D, raycastIndex: int) -> void:
raycast.force_raycast_update()
var collider = raycast.get_collider()
if collider != null:
distanceArray[raycastIndex] = self.global_position.distance_to(raycast.get_collision_point())
else:
distanceArray[raycastIndex] = -1
raycast.enabled = false
func onUpdateSpatialAudio(player: Node3D) -> void:
onUpdateReverb(player)
onUpdateLowpassFilter(player)
func onUpdateReverb(player: Node3D) -> void:
if reverbEffect != null:
var roomSize: float = 0.0
var wetness: float = 0.0
for distance in distanceArray:
if distance >= 0:
roomSize += (distance / maxRaycastDistance) / (float(distanceArray.size()))
roomSize = min(roomSize, 1.0)
else:
wetness -= 1.0 / float(distanceArray.size())
wetness = max(wetness, 0.0)
targetReverbWetness = wetness
targetReverbRoomSize = roomSize
func onUpdateLowpassFilter(player : Node3D):
if lowpassFilterEffect != null:
var query = PhysicsRayQueryParameters3D.create(self.global_position,self.global_position + (player.global_position - self.global_position).normalized() * maxRaycastDistance, $RayCastForward.get_collision_mask())
var spaceState = get_world_3d().direct_space_state
var result = spaceState.intersect_ray(query)
var lowpassCutoff = 20000
if !result.is_empty():
var rayDistance = self.global_position.distance_to(result["position"])
var distanceToPlayer = self.global_position.distance_to(player.global_position)
var wallToPlayerRatio = rayDistance / max(distanceToPlayer, 0.001)
if rayDistance < distanceToPlayer:
lowpassCutoff = wallLowpassCutoffAmount * wallToPlayerRatio
targetLowpassCutoff = lowpassCutoff
func lerpParameters(delta: float) -> void:
volume_db = lerp(volume_db, targetVolumeDb, delta)
lowpassFilterEffect.cutoff_hz = lerp(lowpassFilterEffect.cutoff_hz, targetLowpassCutoff, delta * 5.0)
reverbEffect.wet = lerp(reverbEffect.wet, targetReverbRoomSize * maxReverbWetness, delta * 5.0)
reverbEffect.room_size = lerp(reverbEffect.room_size, targetReverbRoomSize, delta * 5.0)
func _physics_process(delta: float) -> void:
lastUpdateTime += delta
if updateDistances:
onUpdateRaycastDistance(raycastArray[currentRaycastIndex], currentRaycastIndex)
currentRaycastIndex += 1
if currentRaycastIndex >= distanceArray.size():
currentRaycastIndex = 0
updateDistances = false
if lastUpdateTime > updateFrequencySeconds:
var playerCamera = get_viewport().get_camera_3d()
if playerCamera != null:
onUpdateSpatialAudio(playerCamera)
updateDistances = true
lastUpdateTime = 0.0
lerpParameters(delta)
print("Audio:", global_position)
print("Camera:", get_viewport().get_camera_3d().global_position)
+1
View File
@@ -0,0 +1 @@
uid://d07hgc6eewoup
+27
View File
@@ -0,0 +1,27 @@
extends Node3D
@export var moveDistance: float = 2.0
@export var moveSpeed: float = 3.0
var up: bool = false
var startPos: Vector3 = Vector3.ZERO
func _ready():
startPos = global_position
func toggleMove(button: Button3D):
up = !up
func holdMove(button: Button3D):
up = true
func releaseMove(button: Button3D):
up = false
func _physics_process(delta):
var target: Vector3 = startPos
if up:
target += Vector3(0, moveDistance, 0)
global_position = global_position.lerp(target, delta * moveSpeed)
+1
View File
@@ -0,0 +1 @@
uid://cvg1f1wtahy0t
Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

+44
View File
@@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://jydmkkryke23"
path.s3tc="res://.godot/imported/Door.jpg-c6a7b4f9366d8eda11c309608374c71c.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "d922ba511a93b749cd47cd485c867293"
}
[deps]
source_file="res://Textures/Door/Door.jpg"
dest_files=["res://.godot/imported/Door.jpg-c6a7b4f9366d8eda11c309608374c71c.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

+44
View File
@@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cq1svjaaumlba"
path.s3tc="res://.godot/imported/RustedMetal.jpg-14b74405eb9d3557651a60b1325156d4.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "db1a56df5bbb9a0342dac4dd57244c19"
}
[deps]
source_file="res://Textures/Door/RustedMetal.jpg"
dest_files=["res://.godot/imported/RustedMetal.jpg-14b74405eb9d3557651a60b1325156d4.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

+44
View File
@@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dp4cgjr828p7j"
path.s3tc="res://.godot/imported/Stone.jpg-efa2510d35b8e14ff09c596e6b250d76.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "e7877b28c4ff8b50b6036698303f8c18"
}
[deps]
source_file="res://Textures/Door/Stone.jpg"
dest_files=["res://.godot/imported/Stone.jpg-efa2510d35b8e14ff09c596e6b250d76.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
Binary file not shown.

After

Width:  |  Height:  |  Size: 501 KiB

+44
View File
@@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dulhjsunch31g"
path.s3tc="res://.godot/imported/Wood.jpg-fc1b321183afe5311878845ad5ee0a37.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "af8e09e1c617e9fd729e4195fbb54b04"
}
[deps]
source_file="res://Textures/Door/Wood.jpg"
dest_files=["res://.godot/imported/Wood.jpg-fc1b321183afe5311878845ad5ee0a37.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>

After

Width:  |  Height:  |  Size: 995 B

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://gxvllmsgh21p"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+78
View File
@@ -0,0 +1,78 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="InteractionSystem"
run/main_scene="uid://cwwsolupah1s3"
config/features=PackedStringArray("4.7", "Mobile")
config/icon="res://icon.svg"
[display]
window/stretch/mode="canvas_items"
window/stretch/aspect="expand"
[input]
left={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
]
}
right={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
]
}
forward={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
]
}
backward={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
]
}
jump={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
]
}
interact={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(159, 9),"global_position":Vector2(168, 57),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
throw={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(114, 23),"global_position":Vector2(123, 71),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
rotate={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null)
]
}
[layer_names]
3d_physics/layer_5="SpatialAudio"
[physics]
3d/physics_engine="Jolt Physics"
[rendering]
rendering_device/driver.windows="d3d12"
renderer/rendering_method="mobile"