Compare commits
7 Commits
d5ff05ae75
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| b90fdaad98 | |||
| 0e8769a81e | |||
| b69691c186 | |||
| bc48e9cea2 | |||
| dc8585b1f0 | |||
| 6024cb88e5 | |||
| f1c6ffbcd9 |
3044
experimental/map.tscn
Normal file
1
external/floatbot.bbmodel
vendored
Normal file
1
external/grills.crocotile
vendored
Normal file
BIN
external/markers.png
vendored
Normal file
|
After Width: | Height: | Size: 46 KiB |
40
external/markers.png.import
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://w7sq4ygr5svp"
|
||||||
|
path="res://.godot/imported/markers.png-a608ba5d6f67e2aa5aeb7f89ab7382f2.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://external/markers.png"
|
||||||
|
dest_files=["res://.godot/imported/markers.png-a608ba5d6f67e2aa5aeb7f89ab7382f2.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
|
||||||
453
manufactory_mesh_library.tres
Normal file
395
manufactory_minimap_mesh_library.tres
Normal file
109
minimap.tres
Normal file
1
models/manufactory/floor.gltf
Normal file
42
models/manufactory/floor.gltf.import
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://c5xlpbuhliroc"
|
||||||
|
path="res://.godot/imported/floor.gltf-26c6a14b1801b29d809065be02f4b4ff.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/floor.gltf"
|
||||||
|
dest_files=["res://.godot/imported/floor.gltf-26c6a14b1801b29d809065be02f4b4ff.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
models/manufactory/floor_0.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
44
models/manufactory/floor_0.png.import
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bvp5nsky547ah"
|
||||||
|
path.s3tc="res://.godot/imported/floor_0.png-6fedca457514da3c314dc48b663e940d.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "7c23d77235f690bcc4489c7fa65c4463"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/floor_0.png"
|
||||||
|
dest_files=["res://.godot/imported/floor_0.png-6fedca457514da3c314dc48b663e940d.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
models/manufactory/grill.gltf
Normal file
42
models/manufactory/grill.gltf.import
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://cdo5uwqfd67si"
|
||||||
|
path="res://.godot/imported/grill.gltf-65aaadf836993516eac93fa26b5edd3d.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/grill.gltf"
|
||||||
|
dest_files=["res://.godot/imported/grill.gltf-65aaadf836993516eac93fa26b5edd3d.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
models/manufactory/grill_0.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
43
models/manufactory/grill_0.png.import
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bfmitswemgn53"
|
||||||
|
path="res://.godot/imported/grill_0.png-e0789cd6274ab7628c7cdac33f2713b4.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "7c23d77235f690bcc4489c7fa65c4463"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/grill_0.png"
|
||||||
|
dest_files=["res://.godot/imported/grill_0.png-e0789cd6274ab7628c7cdac33f2713b4.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=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
models/manufactory/ramp.gltf
Normal file
42
models/manufactory/ramp.gltf.import
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://bffpnhlx2c3ur"
|
||||||
|
path="res://.godot/imported/ramp.gltf-42cbf5e92a8e150e35a217af96880d72.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/ramp.gltf"
|
||||||
|
dest_files=["res://.godot/imported/ramp.gltf-42cbf5e92a8e150e35a217af96880d72.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
models/manufactory/ramp_0.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
44
models/manufactory/ramp_0.png.import
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://uxr5wru0okt5"
|
||||||
|
path.s3tc="res://.godot/imported/ramp_0.png-b5b4dbad1abbc9ce15dd304da27c58d0.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "7c23d77235f690bcc4489c7fa65c4463"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/ramp_0.png"
|
||||||
|
dest_files=["res://.godot/imported/ramp_0.png-b5b4dbad1abbc9ce15dd304da27c58d0.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
models/manufactory/top_block.gltf
Normal file
42
models/manufactory/top_block.gltf.import
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://dk834makfl20n"
|
||||||
|
path="res://.godot/imported/top_block.gltf-d29eb01df08f53c1a119253ab1a71a1b.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/top_block.gltf"
|
||||||
|
dest_files=["res://.godot/imported/top_block.gltf-d29eb01df08f53c1a119253ab1a71a1b.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
models/manufactory/top_block_0.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
44
models/manufactory/top_block_0.png.import
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dymu3xuo18re3"
|
||||||
|
path.s3tc="res://.godot/imported/top_block_0.png-b550f555b571dfb7537fe8b4573b9bc7.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "7c23d77235f690bcc4489c7fa65c4463"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/top_block_0.png"
|
||||||
|
dest_files=["res://.godot/imported/top_block_0.png-b550f555b571dfb7537fe8b4573b9bc7.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
models/manufactory/top_wall.gltf
Normal file
42
models/manufactory/top_wall.gltf.import
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://cc4hvaonuuop4"
|
||||||
|
path="res://.godot/imported/top_wall.gltf-35de8bf5c75dcd67e3f5036b800e0b87.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/top_wall.gltf"
|
||||||
|
dest_files=["res://.godot/imported/top_wall.gltf-35de8bf5c75dcd67e3f5036b800e0b87.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
models/manufactory/top_wall_0.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
44
models/manufactory/top_wall_0.png.import
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cbdb2sweowl6o"
|
||||||
|
path.s3tc="res://.godot/imported/top_wall_0.png-82163672fffcf566061c28f51d6b650e.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "7c23d77235f690bcc4489c7fa65c4463"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/top_wall_0.png"
|
||||||
|
dest_files=["res://.godot/imported/top_wall_0.png-82163672fffcf566061c28f51d6b650e.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
models/manufactory/wall.gltf
Normal file
42
models/manufactory/wall.gltf.import
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://dofnf8jhwb0ok"
|
||||||
|
path="res://.godot/imported/wall.gltf-c0c088275a1ece7582f426ab20364d2b.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/wall.gltf"
|
||||||
|
dest_files=["res://.godot/imported/wall.gltf-c0c088275a1ece7582f426ab20364d2b.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
models/manufactory/wall_0.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
44
models/manufactory/wall_0.png.import
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://mmdpsc2yc6ok"
|
||||||
|
path.s3tc="res://.godot/imported/wall_0.png-cb295b23c89383a1f1e7a6ba87dda2cf.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "7c23d77235f690bcc4489c7fa65c4463"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/wall_0.png"
|
||||||
|
dest_files=["res://.godot/imported/wall_0.png-cb295b23c89383a1f1e7a6ba87dda2cf.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
models/manufactory/wall_block.gltf
Normal file
42
models/manufactory/wall_block.gltf.import
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://bu153tj8hxto"
|
||||||
|
path="res://.godot/imported/wall_block.gltf-4f54285692d691dba5f0d9c67a96bdfe.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/wall_block.gltf"
|
||||||
|
dest_files=["res://.godot/imported/wall_block.gltf-4f54285692d691dba5f0d9c67a96bdfe.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
BIN
models/manufactory/wall_block_0.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
44
models/manufactory/wall_block_0.png.import
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://7mar1ac3kj7p"
|
||||||
|
path.s3tc="res://.godot/imported/wall_block_0.png-163310e251c37ab0b14095324e62bf94.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "7c23d77235f690bcc4489c7fa65c4463"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://models/manufactory/wall_block_0.png"
|
||||||
|
dest_files=["res://.godot/imported/wall_block_0.png-163310e251c37ab0b14095324e62bf94.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
|
||||||
842
models/manufactory_meshes.tscn
Normal file
@@ -0,0 +1,842 @@
|
|||||||
|
[gd_scene load_steps=32 format=4 uid="uid://m8bmiba020j4"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bfmitswemgn53" path="res://models/manufactory/grill_0.png" id="1_nrpl8"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bvp5nsky547ah" path="res://models/manufactory/floor_0.png" id="2_23a7b"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://uxr5wru0okt5" path="res://models/manufactory/ramp_0.png" id="3_cls2x"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dymu3xuo18re3" path="res://models/manufactory/top_block_0.png" id="4_8um5h"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://7mar1ac3kj7p" path="res://models/manufactory/wall_block_0.png" id="5_tg7jr"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cbdb2sweowl6o" path="res://models/manufactory/top_wall_0.png" id="6_nkukn"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://mmdpsc2yc6ok" path="res://models/manufactory/wall_0.png" id="7_nl0od"]
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7efeg"]
|
||||||
|
resource_name = "texture_1"
|
||||||
|
transparency = 2
|
||||||
|
alpha_scissor_threshold = 0.01
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("1_nrpl8")
|
||||||
|
texture_filter = 0
|
||||||
|
texture_repeat = false
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_fbucr"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 1, -0.5, 1, 1e-05, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 4,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAA=")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_cls2x"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 1, -0.5, 1, 1e-05, 1),
|
||||||
|
"attribute_data": PackedByteArray("/w//D/8P/wf/B/8H/w//D/8H/wf/B/8P"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUA"),
|
||||||
|
"material": SubResource("StandardMaterial3D_7efeg"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAAAAAAAAAP//AAAAAAAAAAAAAP//AAD//wAAAAAAAP//AAD//wAA/3//v/9//7//f/+//3//v/9//7//f/+/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_fbucr")
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_37ayi"]
|
||||||
|
size = Vector3(1, 0.15, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kh5dh"]
|
||||||
|
resource_name = "texture_1"
|
||||||
|
transparency = 2
|
||||||
|
alpha_scissor_threshold = 0.01
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("2_23a7b")
|
||||||
|
texture_filter = 0
|
||||||
|
texture_repeat = false
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_n5w1y"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 1, -0.5, 1, 1e-05, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 4,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAA=")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_23a7b"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 1, -0.5, 1, 1e-05, 1),
|
||||||
|
"attribute_data": PackedByteArray("AAD/BwAA/w//B/8PAAD/B/8H/w//B/8H"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUA"),
|
||||||
|
"material": SubResource("StandardMaterial3D_kh5dh"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP///z8AAAAAAAD/P///AAAAAP8/AAAAAP///z///wAAAAD/P///AAD///8/////f////3////9/////f////3////9/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_n5w1y")
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3k33q"]
|
||||||
|
resource_name = "texture_1"
|
||||||
|
transparency = 2
|
||||||
|
alpha_scissor_threshold = 0.01
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("3_cls2x")
|
||||||
|
texture_filter = 0
|
||||||
|
texture_repeat = false
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_d4jju"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"format": 34359742465,
|
||||||
|
"index_count": 30,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMABAABAAAAAwAAAAQABAAEAAEAAwAEAAUAAQAFAAQABQACAAMAAQACAAUABQAFAAIA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAvwAAAAAAAAA/AAAAvwAAgD8AAAA/AAAAvwAAgD8AAAC/AAAAvwAAAAAAAAC/AAAAPwAAAAAAAAA/AAAAPwAAAAAAAAC/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_boclw"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("AAAAAAAAAD0AAAAAAAAAAAAAAD0AAAAAAAAAAAAAAD0AAAA9AAAAAAAAAD0AAAA9AAAAAAAAgD0AAAAAAAAAPQAAAD0AAAA9AAAAAAAAgD0AAAA9AAAAPQAAAD0AAIA9AACAPQAAgD0AAIA9AAAAPQAAwD0AAAA9AACAPQAAgD0AAMA9AAAAPQAAwD0AAIA9AACAPQAAgD0AAIA9AAAAPQAAwD0AAAA9AACAPQAAgD0AAMA9AAAAPQAAwD0AAIA9AACAPQAAgD0AAIA9AAAAPQAAAD0AAAA9AACAPQAAgD0AAAA9AAAAPQAAAD0AAIA9"),
|
||||||
|
"format": 34359742487,
|
||||||
|
"index_count": 30,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0A"),
|
||||||
|
"material": SubResource("StandardMaterial3D_3k33q"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 30,
|
||||||
|
"vertex_data": PackedByteArray("AAAAvwAAAAAAAAA/AAAAvwAAgD8AAAA/AAAAvwAAgD8AAAC/AAAAvwAAAAAAAAA/AAAAvwAAgD8AAAC/AAAAvwAAAAAAAAC/AAAAvwAAgD8AAAA/AAAAvwAAgD8AAAC/AAAAPwAAAAAAAAC/AAAAvwAAgD8AAAA/AAAAPwAAAAAAAAC/AAAAPwAAAAAAAAA/AAAAPwAAAAAAAAC/AAAAPwAAAAAAAAC/AAAAvwAAgD8AAAC/AAAAPwAAAAAAAAC/AAAAvwAAgD8AAAC/AAAAvwAAAAAAAAC/AAAAPwAAAAAAAAA/AAAAPwAAAAAAAAA/AAAAvwAAgD8AAAA/AAAAPwAAAAAAAAA/AAAAvwAAgD8AAAA/AAAAvwAAAAAAAAA/AAAAvwAAAAAAAAC/AAAAvwAAAAAAAAA/AAAAPwAAAAAAAAA/AAAAvwAAAAAAAAC/AAAAPwAAAAAAAAA/AAAAPwAAAAAAAAC/////f/////////9//////////3//////////f/////////9//////////3///////7//v/+//5//v/+//7//n/+//7//v/+f/7//v/+//5//v/+//7//n/+//7//v/+f////f////7////9/////v////3////+//////wAA/7//////AAD/v/////8AAP+/////f////7////9/////v////3////+//////wAA/7//////AAD/v/////8AAP+//38AAAAA/z//fwAAAAD/P/9/AAAAAP8//38AAAAA/z//fwAAAAD/P/9/AAAAAP8/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_d4jju")
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kaae4"]
|
||||||
|
resource_name = "texture_1"
|
||||||
|
transparency = 2
|
||||||
|
alpha_scissor_threshold = 0.01
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("4_8um5h")
|
||||||
|
texture_filter = 0
|
||||||
|
texture_repeat = false
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_awriq"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAABAAMAAQACAAQAAQAEAAMAAAACAAUABQACAAQAAAADAAYABQAAAAYABgADAAQABQAEAAcABgAEAAcABQAGAAcA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 8,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAP////8AAAAA//8AAAAA////////AAD/////AAAAAAAAAAAAAAAA//8AAP//AAD//wAAAAAAAA==")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_e4fuu"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H/wf/D/8H/wcAAP8H/wf/DwAA/wcAAP8P/wf/F/8H/w8AAP8P/wf/FwAA/w8AAP8X"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMA"),
|
||||||
|
"material": SubResource("StandardMaterial3D_kaae4"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 36,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAP////8AAAAA//8AAAAAAAAAAP//AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAP////8AAAAAAAAAAAAAAAD/////AAAAAP//AAAAAAAAAAAAAP//AAAAAP////8AAP///////wAAAAAAAP//AAD///////8AAP//AAD//wAA//8AAP//AAD///////8AAP////8AAAAA//8AAP//AAD/////AAAAAP//AAAAAAAAAAD/////AAAAAP//AAAAAP////8AAAAAAAD/////AAD/////AAAAAP///////wAAAAAAAAAAAAAAAAAA//8AAP//AAD//wAAAAAAAAAAAAD//wAA//8AAP//AAAAAAAA/7//f/+//3//v/9//7//f/+//3//v/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//7//f/+//3//v/9//7//f/+//3//v/9//3//v/9//7//f/+//3//v/9//7//f/+//3//P/9//z//f/8//3//P/9//z//f/8/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_awriq")
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_8xl5w"]
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_okoem"]
|
||||||
|
resource_name = "texture_1"
|
||||||
|
transparency = 2
|
||||||
|
alpha_scissor_threshold = 0.01
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("5_tg7jr")
|
||||||
|
texture_filter = 0
|
||||||
|
texture_repeat = false
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_fxpe1"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwABAAAAAAACAAQABQABAAMABQACAAEAAwAAAAYABgADAAUABgAAAAQABwACAAUABgAFAAcABwAEAAIABgAEAAcA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 8,
|
||||||
|
"vertex_data": PackedByteArray("AAD/////AAAAAP//AAAAAP////8AAAAAAAAAAAAAAAD///////8AAP//AAAAAAAAAAAAAP//AAD//wAA//8AAA==")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_apsfj"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("/xf/D/8X/wf/H/8H/xf/D/8f/wf/H/8P/xf/D/8X/wf/H/8H/xf/D/8f/wf/H/8P/wf/B/8HAAD/DwAA/wf/B/8PAAD/D/8H/wf/B/8HAAD/DwAA/wf/B/8PAAD/D/8H/wf/B/8HAAD/DwAA/wf/B/8PAAD/D/8H/wf/B/8HAAD/DwAA/wf/B/8PAAD/D/8H"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMA"),
|
||||||
|
"material": SubResource("StandardMaterial3D_okoem"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 36,
|
||||||
|
"vertex_data": PackedByteArray("AAD//////78AAP//AAD/v/////8AAP+/AAD//////7//////AAD/v/////////+/AAAAAP///78AAAAAAAD/v///AAAAAP+/AAAAAP///7///wAAAAD/v///AAD///+/AAAAAAAA/78AAP//AAD/vwAA//////+/AAAAAAAA/78AAP//////vwAAAAD///+///8AAAAA////////AAD//wAA//8AAP////8AAAAA//8AAP//AAD//wAAAAAAAP//AAAAAP//AIAAAP////8AgP///////wCAAAAAAP//AID///////8AgP//AAD//wCA//8AAP///7//////////v/////8AAP+///8AAP///7//////AAD/v///AAAAAP+/////f////3////9/////f////3////9/////f////3////9/////f////3////9//3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////38AAP9/AAD/fwAA/38AAP9/AAD/fwAA")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_fxpe1")
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hruht"]
|
||||||
|
resource_name = "texture_1"
|
||||||
|
transparency = 2
|
||||||
|
alpha_scissor_threshold = 0.01
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("6_nkukn")
|
||||||
|
texture_filter = 0
|
||||||
|
texture_repeat = false
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_bepgm"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1e-05, 1, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 4,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAAAAAAAAAP//AAAAAAAA/////wAAAAAAAP//AAA=")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_tcr31"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1e-05, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUA"),
|
||||||
|
"material": SubResource("StandardMaterial3D_hruht"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAAAAAAAAAP//AAAAAAAA/////wAAAAAAAAAAAAAAAP////8AAAAAAAD//wAA/z//f/8//3//P/9//z//f/8//3//P/9/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_bepgm")
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_3lfho"]
|
||||||
|
size = Vector3(0.4, 1, 1)
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3w15n"]
|
||||||
|
resource_name = "texture_1"
|
||||||
|
transparency = 2
|
||||||
|
alpha_scissor_threshold = 0.01
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("7_nl0od")
|
||||||
|
texture_filter = 0
|
||||||
|
texture_repeat = false
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_7s06x"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1e-05, 1, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 4,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAP////8AAAAA//8AAAAAAAAAAAAAAAA=")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_wswoi"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1e-05, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("/w//B/8PAAD/BwAA/w//B/8HAAD/B/8H"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUA"),
|
||||||
|
"material": SubResource("StandardMaterial3D_3w15n"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAP////8AAAAA//8AAAAAAAAAAP//AAAAAP//AAAAAAAAAAAAAAAA/7//f/+//3//v/9//7//f/+//3//v/9/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_7s06x")
|
||||||
|
|
||||||
|
[node name="Node3D" type="Node3D"]
|
||||||
|
|
||||||
|
[node name="grill" type="MeshInstance3D" parent="."]
|
||||||
|
mesh = SubResource("ArrayMesh_cls2x")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "grill",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "F006DAE6-66B3-4AE5-9124-8E78858C8EC2"
|
||||||
|
}],
|
||||||
|
"name": "grill",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="grill"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.925, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="grill/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_37ayi")
|
||||||
|
|
||||||
|
[node name="floor" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_23a7b")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [{
|
||||||
|
"angle": 0.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 22.5,
|
||||||
|
"min": -22.5,
|
||||||
|
"suffix": "_S"
|
||||||
|
}, {
|
||||||
|
"angle": 45.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 67.5,
|
||||||
|
"min": 22.5,
|
||||||
|
"suffix": "_SW"
|
||||||
|
}, {
|
||||||
|
"angle": 90.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 112.5,
|
||||||
|
"min": 67.5,
|
||||||
|
"suffix": "_W"
|
||||||
|
}, {
|
||||||
|
"angle": 135.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 157.5,
|
||||||
|
"min": 112.5,
|
||||||
|
"suffix": "_NW"
|
||||||
|
}, {
|
||||||
|
"angle": 180.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 202.5,
|
||||||
|
"min": 157.5,
|
||||||
|
"suffix": "_N"
|
||||||
|
}, {
|
||||||
|
"angle": 225.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 247.5,
|
||||||
|
"min": 202.5,
|
||||||
|
"suffix": "_NE"
|
||||||
|
}, {
|
||||||
|
"angle": 270.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 292.5,
|
||||||
|
"min": 247.5,
|
||||||
|
"suffix": "_E"
|
||||||
|
}, {
|
||||||
|
"angle": 315.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 337.5,
|
||||||
|
"min": 292.5,
|
||||||
|
"suffix": "_SE"
|
||||||
|
}],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "floor",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "576A778C-DE45-4366-BA5C-FA28E0974E00"
|
||||||
|
}],
|
||||||
|
"name": "floor",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="floor"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.925, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="floor/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_37ayi")
|
||||||
|
|
||||||
|
[node name="ramp" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_boclw")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [{
|
||||||
|
"angle": 0.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 22.5,
|
||||||
|
"min": -22.5,
|
||||||
|
"suffix": "_S"
|
||||||
|
}, {
|
||||||
|
"angle": 45.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 67.5,
|
||||||
|
"min": 22.5,
|
||||||
|
"suffix": "_SW"
|
||||||
|
}, {
|
||||||
|
"angle": 90.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 112.5,
|
||||||
|
"min": 67.5,
|
||||||
|
"suffix": "_W"
|
||||||
|
}, {
|
||||||
|
"angle": 135.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 157.5,
|
||||||
|
"min": 112.5,
|
||||||
|
"suffix": "_NW"
|
||||||
|
}, {
|
||||||
|
"angle": 180.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 202.5,
|
||||||
|
"min": 157.5,
|
||||||
|
"suffix": "_N"
|
||||||
|
}, {
|
||||||
|
"angle": 225.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 247.5,
|
||||||
|
"min": 202.5,
|
||||||
|
"suffix": "_NE"
|
||||||
|
}, {
|
||||||
|
"angle": 270.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 292.5,
|
||||||
|
"min": 247.5,
|
||||||
|
"suffix": "_E"
|
||||||
|
}, {
|
||||||
|
"angle": 315.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 337.5,
|
||||||
|
"min": 292.5,
|
||||||
|
"suffix": "_SE"
|
||||||
|
}],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "ramp",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "0D90FE0F-A656-49AC-A19F-D4F204CC3FD8"
|
||||||
|
}],
|
||||||
|
"name": "ramp",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="top block" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_e4fuu")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "top block",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "6FD2A8D3-00C2-4258-9AA8-514BA7267EA4"
|
||||||
|
}],
|
||||||
|
"name": "top block",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="top block"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="top block/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_8xl5w")
|
||||||
|
|
||||||
|
[node name="wall block" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_apsfj")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "wall block",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "87491866-5CA9-4035-901D-E227C07C79B8"
|
||||||
|
}],
|
||||||
|
"name": "wall block",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="wall block"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="wall block/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_8xl5w")
|
||||||
|
|
||||||
|
[node name="top wall" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_tcr31")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "top wall",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 2.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "A3B32E6E-CF14-4D93-9C37-A7FA71812720"
|
||||||
|
}],
|
||||||
|
"name": "top wall",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="top wall"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 0.5, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="top wall/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_3lfho")
|
||||||
|
|
||||||
|
[node name="wall" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_wswoi")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [{
|
||||||
|
"angle": 0.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 22.5,
|
||||||
|
"min": -22.5,
|
||||||
|
"suffix": "_S"
|
||||||
|
}, {
|
||||||
|
"angle": 45.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 67.5,
|
||||||
|
"min": 22.5,
|
||||||
|
"suffix": "_SW"
|
||||||
|
}, {
|
||||||
|
"angle": 90.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 112.5,
|
||||||
|
"min": 67.5,
|
||||||
|
"suffix": "_W"
|
||||||
|
}, {
|
||||||
|
"angle": 135.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 157.5,
|
||||||
|
"min": 112.5,
|
||||||
|
"suffix": "_NW"
|
||||||
|
}, {
|
||||||
|
"angle": 180.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 202.5,
|
||||||
|
"min": 157.5,
|
||||||
|
"suffix": "_N"
|
||||||
|
}, {
|
||||||
|
"angle": 225.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 247.5,
|
||||||
|
"min": 202.5,
|
||||||
|
"suffix": "_NE"
|
||||||
|
}, {
|
||||||
|
"angle": 270.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 292.5,
|
||||||
|
"min": 247.5,
|
||||||
|
"suffix": "_E"
|
||||||
|
}, {
|
||||||
|
"angle": 315.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 337.5,
|
||||||
|
"min": 292.5,
|
||||||
|
"suffix": "_SE"
|
||||||
|
}],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "wall",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 2.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 2.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "656A441E-D93A-43FE-A53B-BBEAA8631C21"
|
||||||
|
}],
|
||||||
|
"name": "wall",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="wall"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 0.5, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="wall/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_3lfho")
|
||||||
784
models/manufactory_minimap_meshes.tscn
Normal file
@@ -0,0 +1,784 @@
|
|||||||
|
[gd_scene load_steps=24 format=4 uid="uid://cu8y47uvlvrio"]
|
||||||
|
|
||||||
|
[ext_resource type="Material" uid="uid://dljweksgxvqv6" path="res://visuals/materials/maptile.tres" id="1_f32hb"]
|
||||||
|
[ext_resource type="Shader" uid="uid://dtq021j73hhht" path="res://visuals/shaders/maptile.gdshader" id="1_yx2pi"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bfmitswemgn53" path="res://models/manufactory/grill_0.png" id="2_1pju0"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_2ho3f"]
|
||||||
|
offsets = PackedFloat32Array(0, 0.245, 0.56, 0.8025, 1)
|
||||||
|
colors = PackedColorArray(0, 0, 0.003921569, 1, 1.6845763e-06, 0, 0.54036456, 1, 0.0007814509, 0.22053, 0.7667125, 1, 0.00022246034, 0.29345024, 0.68059045, 1, 0, 0.49560964, 0.86397636, 1)
|
||||||
|
|
||||||
|
[sub_resource type="GradientTexture1D" id="GradientTexture1D_lvjv7"]
|
||||||
|
gradient = SubResource("Gradient_2ho3f")
|
||||||
|
width = 1024
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_1pju0"]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_yx2pi")
|
||||||
|
shader_parameter/albedo_texture = ExtResource("2_1pju0")
|
||||||
|
shader_parameter/height_gradient = SubResource("GradientTexture1D_lvjv7")
|
||||||
|
shader_parameter/vertical_offset = 9999.0
|
||||||
|
shader_parameter/vertical_range = 6.0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_fbucr"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 1, -0.5, 1, 1e-05, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 4,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAA=")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_cls2x"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 1, -0.5, 1, 1e-05, 1),
|
||||||
|
"attribute_data": PackedByteArray("/w//D/8P/wf/B/8H/w//D/8H/wf/B/8P"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUA"),
|
||||||
|
"material": SubResource("ShaderMaterial_1pju0"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAAAAAAAAAP//AAAAAAAAAAAAAP//AAD//wAAAAAAAP//AAD//wAA/3//v/9//7//f/+//3//v/9//7//f/+/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_fbucr")
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_37ayi"]
|
||||||
|
size = Vector3(1, 0.15, 1)
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_n5w1y"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 1, -0.5, 1, 1e-05, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 4,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAA=")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_23a7b"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 1, -0.5, 1, 1e-05, 1),
|
||||||
|
"attribute_data": PackedByteArray("AAD/BwAA/w//B/8PAAD/B/8H/w//B/8H"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUA"),
|
||||||
|
"material": ExtResource("1_f32hb"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP///z8AAAAAAAD/P///AAAAAP8/AAAAAP///z///wAAAAD/P///AAD///8/////f////3////9/////f////3////9/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_n5w1y")
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_d4jju"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"format": 34359742465,
|
||||||
|
"index_count": 30,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMABAABAAAAAwAAAAQABAAEAAEAAwAEAAUAAQAFAAQABQACAAMAAQACAAUABQAFAAIA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAvwAAAAAAAAA/AAAAvwAAgD8AAAA/AAAAvwAAgD8AAAC/AAAAvwAAAAAAAAC/AAAAPwAAAAAAAAA/AAAAPwAAAAAAAAC/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_boclw"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("AAAAAAAAAD0AAAAAAAAAAAAAAD0AAAAAAAAAAAAAAD0AAAA9AAAAAAAAAD0AAAA9AAAAAAAAgD0AAAAAAAAAPQAAAD0AAAA9AAAAAAAAgD0AAAA9AAAAPQAAAD0AAIA9AACAPQAAgD0AAIA9AAAAPQAAwD0AAAA9AACAPQAAgD0AAMA9AAAAPQAAwD0AAIA9AACAPQAAgD0AAIA9AAAAPQAAwD0AAAA9AACAPQAAgD0AAMA9AAAAPQAAwD0AAIA9AACAPQAAgD0AAIA9AAAAPQAAAD0AAAA9AACAPQAAgD0AAAA9AAAAPQAAAD0AAIA9"),
|
||||||
|
"format": 34359742487,
|
||||||
|
"index_count": 30,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0A"),
|
||||||
|
"material": ExtResource("1_f32hb"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 30,
|
||||||
|
"vertex_data": PackedByteArray("AAAAvwAAAAAAAAA/AAAAvwAAgD8AAAA/AAAAvwAAgD8AAAC/AAAAvwAAAAAAAAA/AAAAvwAAgD8AAAC/AAAAvwAAAAAAAAC/AAAAvwAAgD8AAAA/AAAAvwAAgD8AAAC/AAAAPwAAAAAAAAC/AAAAvwAAgD8AAAA/AAAAPwAAAAAAAAC/AAAAPwAAAAAAAAA/AAAAPwAAAAAAAAC/AAAAPwAAAAAAAAC/AAAAvwAAgD8AAAC/AAAAPwAAAAAAAAC/AAAAvwAAgD8AAAC/AAAAvwAAAAAAAAC/AAAAPwAAAAAAAAA/AAAAPwAAAAAAAAA/AAAAvwAAgD8AAAA/AAAAPwAAAAAAAAA/AAAAvwAAgD8AAAA/AAAAvwAAAAAAAAA/AAAAvwAAAAAAAAC/AAAAvwAAAAAAAAA/AAAAPwAAAAAAAAA/AAAAvwAAAAAAAAC/AAAAPwAAAAAAAAA/AAAAPwAAAAAAAAC/////f/////////9//////////3//////////f/////////9//////////3///////7//v/+//5//v/+//7//n/+//7//v/+f/7//v/+//5//v/+//7//n/+//7//v/+f////f////7////9/////v////3////+//////wAA/7//////AAD/v/////8AAP+/////f////7////9/////v////3////+//////wAA/7//////AAD/v/////8AAP+//38AAAAA/z//fwAAAAD/P/9/AAAAAP8//38AAAAA/z//fwAAAAD/P/9/AAAAAP8/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_d4jju")
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_awriq"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAABAAMAAQACAAQAAQAEAAMAAAACAAUABQACAAQAAAADAAYABQAAAAYABgADAAQABQAEAAcABgAEAAcABQAGAAcA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 8,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAP////8AAAAA//8AAAAA////////AAD/////AAAAAAAAAAAAAAAA//8AAP//AAD//wAAAAAAAA==")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_e4fuu"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H/wf/D/8H/wcAAP8H/wf/DwAA/wcAAP8P/wf/F/8H/w8AAP8P/wf/FwAA/w8AAP8X"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMA"),
|
||||||
|
"material": ExtResource("1_f32hb"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 36,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAP////8AAAAA//8AAAAAAAAAAP//AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAP////8AAAAAAAAAAAAAAAD/////AAAAAP//AAAAAAAAAAAAAP//AAAAAP////8AAP///////wAAAAAAAP//AAD///////8AAP//AAD//wAA//8AAP//AAD///////8AAP////8AAAAA//8AAP//AAD/////AAAAAP//AAAAAAAAAAD/////AAAAAP//AAAAAP////8AAAAAAAD/////AAD/////AAAAAP///////wAAAAAAAAAAAAAAAAAA//8AAP//AAD//wAAAAAAAAAAAAD//wAA//8AAP//AAAAAAAA/7//f/+//3//v/9//7//f/+//3//v/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//7//f/+//3//v/9//7//f/+//3//v/9//3//v/9//7//f/+//3//v/9//7//f/+//3//P/9//z//f/8//3//P/9//z//f/8/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_awriq")
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_8xl5w"]
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_fxpe1"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwABAAAAAAACAAQABQABAAMABQACAAEAAwAAAAYABgADAAUABgAAAAQABwACAAUABgAFAAcABwAEAAIABgAEAAcA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 8,
|
||||||
|
"vertex_data": PackedByteArray("AAD/////AAAAAP//AAAAAP////8AAAAAAAAAAAAAAAD///////8AAP//AAAAAAAAAAAAAP//AAD//wAA//8AAA==")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_apsfj"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("/xf/D/8X/wf/H/8H/xf/D/8f/wf/H/8P/xf/D/8X/wf/H/8H/xf/D/8f/wf/H/8P/wf/B/8HAAD/DwAA/wf/B/8PAAD/D/8H/wf/B/8HAAD/DwAA/wf/B/8PAAD/D/8H/wf/B/8HAAD/DwAA/wf/B/8PAAD/D/8H/wf/B/8HAAD/DwAA/wf/B/8PAAD/D/8H"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMA"),
|
||||||
|
"material": ExtResource("1_f32hb"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 36,
|
||||||
|
"vertex_data": PackedByteArray("AAD//////78AAP//AAD/v/////8AAP+/AAD//////7//////AAD/v/////////+/AAAAAP///78AAAAAAAD/v///AAAAAP+/AAAAAP///7///wAAAAD/v///AAD///+/AAAAAAAA/78AAP//AAD/vwAA//////+/AAAAAAAA/78AAP//////vwAAAAD///+///8AAAAA////////AAD//wAA//8AAP////8AAAAA//8AAP//AAD//wAAAAAAAP//AAAAAP//AIAAAP////8AgP///////wCAAAAAAP//AID///////8AgP//AAD//wCA//8AAP///7//////////v/////8AAP+///8AAP///7//////AAD/v///AAAAAP+/////f////3////9/////f////3////9/////f////3////9/////f////3////9//3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////38AAP9/AAD/fwAA/38AAP9/AAD/fwAA")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_fxpe1")
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_bepgm"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1e-05, 1, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 4,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAAAAAAAAAP//AAAAAAAA/////wAAAAAAAP//AAA=")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_tcr31"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1e-05, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("/wf/B/8HAAAAAAAA/wf/BwAAAAAAAP8H"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUA"),
|
||||||
|
"material": ExtResource("1_f32hb"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAAAAAAAAAP//AAAAAAAA/////wAAAAAAAAAAAAAAAP////8AAAAAAAD//wAA/z//f/8//3//P/9//z//f/8//3//P/9/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_bepgm")
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_3lfho"]
|
||||||
|
size = Vector3(0.4, 1, 1)
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_7s06x"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1e-05, 1, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAAACAAMA"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 4,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAP////8AAAAA//8AAAAAAAAAAAAAAAA=")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_wswoi"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, -0.5, 1e-05, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("/w//B/8PAAD/BwAA/w//B/8HAAD/B/8H"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUA"),
|
||||||
|
"material": ExtResource("1_f32hb"),
|
||||||
|
"name": "texture_1",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 6,
|
||||||
|
"vertex_data": PackedByteArray("AAAAAP//AAAAAP////8AAAAA//8AAAAAAAAAAP//AAAAAP//AAAAAAAAAAAAAAAA/7//f/+//3//v/9//7//f/+//3//v/9/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_7s06x")
|
||||||
|
|
||||||
|
[node name="Node3D" type="Node3D"]
|
||||||
|
|
||||||
|
[node name="grill" type="MeshInstance3D" parent="."]
|
||||||
|
mesh = SubResource("ArrayMesh_cls2x")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "grill",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "F006DAE6-66B3-4AE5-9124-8E78858C8EC2"
|
||||||
|
}],
|
||||||
|
"name": "grill",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="grill"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.925, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="grill/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_37ayi")
|
||||||
|
|
||||||
|
[node name="floor" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_23a7b")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [{
|
||||||
|
"angle": 0.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 22.5,
|
||||||
|
"min": -22.5,
|
||||||
|
"suffix": "_S"
|
||||||
|
}, {
|
||||||
|
"angle": 45.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 67.5,
|
||||||
|
"min": 22.5,
|
||||||
|
"suffix": "_SW"
|
||||||
|
}, {
|
||||||
|
"angle": 90.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 112.5,
|
||||||
|
"min": 67.5,
|
||||||
|
"suffix": "_W"
|
||||||
|
}, {
|
||||||
|
"angle": 135.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 157.5,
|
||||||
|
"min": 112.5,
|
||||||
|
"suffix": "_NW"
|
||||||
|
}, {
|
||||||
|
"angle": 180.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 202.5,
|
||||||
|
"min": 157.5,
|
||||||
|
"suffix": "_N"
|
||||||
|
}, {
|
||||||
|
"angle": 225.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 247.5,
|
||||||
|
"min": 202.5,
|
||||||
|
"suffix": "_NE"
|
||||||
|
}, {
|
||||||
|
"angle": 270.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 292.5,
|
||||||
|
"min": 247.5,
|
||||||
|
"suffix": "_E"
|
||||||
|
}, {
|
||||||
|
"angle": 315.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 337.5,
|
||||||
|
"min": 292.5,
|
||||||
|
"suffix": "_SE"
|
||||||
|
}],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "floor",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "576A778C-DE45-4366-BA5C-FA28E0974E00"
|
||||||
|
}],
|
||||||
|
"name": "floor",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="floor"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.925, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="floor/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_37ayi")
|
||||||
|
|
||||||
|
[node name="ramp" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_boclw")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [{
|
||||||
|
"angle": 0.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 22.5,
|
||||||
|
"min": -22.5,
|
||||||
|
"suffix": "_S"
|
||||||
|
}, {
|
||||||
|
"angle": 45.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 67.5,
|
||||||
|
"min": 22.5,
|
||||||
|
"suffix": "_SW"
|
||||||
|
}, {
|
||||||
|
"angle": 90.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 112.5,
|
||||||
|
"min": 67.5,
|
||||||
|
"suffix": "_W"
|
||||||
|
}, {
|
||||||
|
"angle": 135.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 157.5,
|
||||||
|
"min": 112.5,
|
||||||
|
"suffix": "_NW"
|
||||||
|
}, {
|
||||||
|
"angle": 180.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 202.5,
|
||||||
|
"min": 157.5,
|
||||||
|
"suffix": "_N"
|
||||||
|
}, {
|
||||||
|
"angle": 225.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 247.5,
|
||||||
|
"min": 202.5,
|
||||||
|
"suffix": "_NE"
|
||||||
|
}, {
|
||||||
|
"angle": 270.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 292.5,
|
||||||
|
"min": 247.5,
|
||||||
|
"suffix": "_E"
|
||||||
|
}, {
|
||||||
|
"angle": 315.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 337.5,
|
||||||
|
"min": 292.5,
|
||||||
|
"suffix": "_SE"
|
||||||
|
}],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "ramp",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "0D90FE0F-A656-49AC-A19F-D4F204CC3FD8"
|
||||||
|
}],
|
||||||
|
"name": "ramp",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="top block" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_e4fuu")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "top block",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "6FD2A8D3-00C2-4258-9AA8-514BA7267EA4"
|
||||||
|
}],
|
||||||
|
"name": "top block",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="top block"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="top block/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_8xl5w")
|
||||||
|
|
||||||
|
[node name="wall block" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_apsfj")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "wall block",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "87491866-5CA9-4035-901D-E227C07C79B8"
|
||||||
|
}],
|
||||||
|
"name": "wall block",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="wall block"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="wall block/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_8xl5w")
|
||||||
|
|
||||||
|
[node name="top wall" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_tcr31")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "top wall",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 2.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "A3B32E6E-CF14-4D93-9C37-A7FA71812720"
|
||||||
|
}],
|
||||||
|
"name": "top wall",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="top wall"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 0.5, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="top wall/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_3lfho")
|
||||||
|
|
||||||
|
[node name="wall" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0)
|
||||||
|
mesh = SubResource("ArrayMesh_wswoi")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [{
|
||||||
|
"angle": 0.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 22.5,
|
||||||
|
"min": -22.5,
|
||||||
|
"suffix": "_S"
|
||||||
|
}, {
|
||||||
|
"angle": 45.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 67.5,
|
||||||
|
"min": 22.5,
|
||||||
|
"suffix": "_SW"
|
||||||
|
}, {
|
||||||
|
"angle": 90.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 112.5,
|
||||||
|
"min": 67.5,
|
||||||
|
"suffix": "_W"
|
||||||
|
}, {
|
||||||
|
"angle": 135.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 157.5,
|
||||||
|
"min": 112.5,
|
||||||
|
"suffix": "_NW"
|
||||||
|
}, {
|
||||||
|
"angle": 180.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 202.5,
|
||||||
|
"min": 157.5,
|
||||||
|
"suffix": "_N"
|
||||||
|
}, {
|
||||||
|
"angle": 225.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 247.5,
|
||||||
|
"min": 202.5,
|
||||||
|
"suffix": "_NE"
|
||||||
|
}, {
|
||||||
|
"angle": 270.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 292.5,
|
||||||
|
"min": 247.5,
|
||||||
|
"suffix": "_E"
|
||||||
|
}, {
|
||||||
|
"angle": 315.0,
|
||||||
|
"enabled": true,
|
||||||
|
"max": 337.5,
|
||||||
|
"min": 292.5,
|
||||||
|
"suffix": "_SE"
|
||||||
|
}],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "wall",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 2.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 2.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "656A441E-D93A-43FE-A53B-BBEAA8631C21"
|
||||||
|
}],
|
||||||
|
"name": "wall",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="StaticBody3D" type="StaticBody3D" parent="wall"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 0.5, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="wall/StaticBody3D"]
|
||||||
|
shape = SubResource("BoxShape3D_3lfho")
|
||||||
140
models/test_minimap_meshes.tscn
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
[gd_scene load_steps=5 format=4 uid="uid://bkps6dwdynirj"]
|
||||||
|
|
||||||
|
[ext_resource type="Material" uid="uid://dljweksgxvqv6" path="res://visuals/materials/maptile.tres" id="1_68tke"]
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://dpltfkrswbxnf" path="res://models/default_mesh.res" id="1_0823e"]
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_5s8vg"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0.0023012161, -0.5, 1, 1, 1),
|
||||||
|
"format": 34896613377,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwACAAEAAAACAAQAAwABAAUABQABAAAABgACAAMABQAGAAMABgAEAAIABQAAAAcABQAHAAYABwAAAAQABwAEAAYA"),
|
||||||
|
"name": "texture_0",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 8,
|
||||||
|
"vertex_data": PackedByteArray("AAD/////AAAAAP//AAAAAP////8AAAAA//8AAAAAAAD///////8AAAAAAAAAAAAA//8AAP//AAAAAAAA//8AAA==")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_6o4ed"]
|
||||||
|
resource_name = "default_mesh"
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0.0023012161, -0.5, 1, 1, 1),
|
||||||
|
"attribute_data": PackedByteArray("AAD/DwAAAAD/DwAAAAD/D/8PAAD/D/8PAAD/DwAAAAD/DwAAAAD/D/8PAAD/D/8PAAD/DwAAAAD/DwAAAAD/D/8PAAD/D/8PAAD/DwAAAAD/DwAAAAD/D/8PAAD/D/8PAAD/DwAAAAD/DwAAAAD/D/8PAAD/D/8PAAD/DwAAAAD/DwAAAAD/D/8PAAD/D/8P"),
|
||||||
|
"format": 34896613399,
|
||||||
|
"index_count": 36,
|
||||||
|
"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMA"),
|
||||||
|
"material": ExtResource("1_68tke"),
|
||||||
|
"name": "texture_0",
|
||||||
|
"primitive": 3,
|
||||||
|
"uv_scale": Vector4(0, 0, 0, 0),
|
||||||
|
"vertex_count": 36,
|
||||||
|
"vertex_data": PackedByteArray("AAD//////78AAP//AAD/v/////8AAP+/AAD//////7//////AAD/v/////////+/AAAAAAAA/78AAP//AAD/vwAA//////+/AAAAAAAA/78AAP//////vwAAAAD///+/AAAAAP//AIAAAP////8AgP///////wCAAAAAAP//AID///////8AgP//AAD//wCA//8AAP///7//////////v/////8AAP+///8AAP///7//////AAD/v///AAAAAP+///8AAAAA////////AAD//wAA//8AAP////8AAAAA//8AAP//AAD//wAAAAAAAP//AAAAAAAA/78AAAAA////v///AAD///+/AAAAAAAA/7///wAA////v///AAAAAP+/////f////3////9/////f////3////9//3////9/////f////3////9/////f////3////9/////f////3////9/////f////38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/3////9/////f////3////9/////f///AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/")
|
||||||
|
}]
|
||||||
|
blend_shape_mode = 0
|
||||||
|
shadow_mesh = SubResource("ArrayMesh_5s8vg")
|
||||||
|
|
||||||
|
[node name="Node3D" type="Node3D"]
|
||||||
|
|
||||||
|
[node name="Ramp" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7804582, 0)
|
||||||
|
cast_shadow = 0
|
||||||
|
mesh = ExtResource("1_0823e")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "Ramp",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "E237E1EF-6E12-406F-A5A8-F16232ED7E31"
|
||||||
|
}],
|
||||||
|
"name": "Ramp",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="Cube" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0)
|
||||||
|
cast_shadow = 0
|
||||||
|
mesh = SubResource("ArrayMesh_6o4ed")
|
||||||
|
skeleton = NodePath("")
|
||||||
|
metadata/extras = {
|
||||||
|
"data": {
|
||||||
|
"billboard": {
|
||||||
|
"enabled": false,
|
||||||
|
"y": false
|
||||||
|
},
|
||||||
|
"custom": [],
|
||||||
|
"directional": {
|
||||||
|
"angles": [],
|
||||||
|
"enabled": false,
|
||||||
|
"mode": "cameraAngle"
|
||||||
|
},
|
||||||
|
"instances": [{
|
||||||
|
"custom": [],
|
||||||
|
"name": "Cube",
|
||||||
|
"parent": null,
|
||||||
|
"pos": {
|
||||||
|
"x": 2.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.5
|
||||||
|
},
|
||||||
|
"rot": {
|
||||||
|
"order": "XYZ",
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"sca": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"uuid": "7D3B65D3-B14B-4022-AEF3-7E23133D62C6"
|
||||||
|
}],
|
||||||
|
"name": "Cube",
|
||||||
|
"points": [{
|
||||||
|
"name": "Origin",
|
||||||
|
"pos": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -68,7 +68,7 @@ colors = PackedColorArray(1, 1, 1, 1)
|
|||||||
gradient = SubResource("Gradient_w1hxv")
|
gradient = SubResource("Gradient_w1hxv")
|
||||||
width = 1
|
width = 1
|
||||||
|
|
||||||
[node name="Control" type="Control"]
|
[node name="Control" type="Control" groups=["scenes"]]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
|||||||
252
scenes/manufactory.tscn
Normal file
@@ -3,7 +3,7 @@
|
|||||||
[ext_resource type="Script" uid="uid://dep7nr2nkdmga" path="res://scripts/multiplayer_setup.gd" id="1_lckj3"]
|
[ext_resource type="Script" uid="uid://dep7nr2nkdmga" path="res://scripts/multiplayer_setup.gd" id="1_lckj3"]
|
||||||
|
|
||||||
[node name="MultiplayerSetup" type="MultiplayerSpawner" groups=["level_spawner"]]
|
[node name="MultiplayerSetup" type="MultiplayerSpawner" groups=["level_spawner"]]
|
||||||
_spawnable_scenes = PackedStringArray("uid://ti65jukt8gvs", "uid://ck4x56txf676a")
|
_spawnable_scenes = PackedStringArray("uid://ti65jukt8gvs", "uid://ck4x56txf676a", "uid://by6suwmds7xq2")
|
||||||
spawn_path = NodePath(".")
|
spawn_path = NodePath(".")
|
||||||
script = ExtResource("1_lckj3")
|
script = ExtResource("1_lckj3")
|
||||||
|
|
||||||
@@ -160,6 +160,7 @@ text = "JOIN"
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Back"
|
text = "Back"
|
||||||
|
|
||||||
|
[connection signal="spawned" from="." to="." method="_on_level_spawned"]
|
||||||
[connection signal="pressed" from="Setup/Panel/Menu/HostButton" to="." method="_on_host_game_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Menu/HostButton" to="." method="_on_host_game_button_pressed"]
|
||||||
[connection signal="pressed" from="Setup/Panel/Menu/JoinButton" to="." method="_on_join_game_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Menu/JoinButton" to="." method="_on_join_game_button_pressed"]
|
||||||
[connection signal="pressed" from="Setup/Panel/Menu/BackButton" to="." method="_on_menu_back_button_pressed"]
|
[connection signal="pressed" from="Setup/Panel/Menu/BackButton" to="." method="_on_menu_back_button_pressed"]
|
||||||
|
|||||||
9
scenes/test/input_test.tscn
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://dr200o3iarrkk"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://6qk4ejmk8nch" path="res://scripts/test/input_test.gd" id="1_0ii2u"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://by6suwmds7xq2" path="res://scenes/test_level.tscn" id="2_yja7f"]
|
||||||
|
|
||||||
|
[node name="InputTest" type="Node3D"]
|
||||||
|
script = ExtResource("1_0ii2u")
|
||||||
|
|
||||||
|
[node name="Level" parent="." instance=ExtResource("2_yja7f")]
|
||||||
@@ -90,7 +90,7 @@ shader = ExtResource("13_4qe4i")
|
|||||||
shader_parameter/chars = ExtResource("14_p07av")
|
shader_parameter/chars = ExtResource("14_p07av")
|
||||||
shader_parameter/noise_tex = ExtResource("15_khjys")
|
shader_parameter/noise_tex = ExtResource("15_khjys")
|
||||||
|
|
||||||
[node name="Control" type="Control"]
|
[node name="Control" type="Control" groups=["scenes"]]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
|||||||
@@ -1,15 +1,24 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
|
||||||
|
enum Modes{
|
||||||
|
STORY,
|
||||||
|
VS_COM,
|
||||||
|
VS_MAN
|
||||||
|
}
|
||||||
|
|
||||||
const blinder_template = preload("res://templates/blinder.tscn")
|
const blinder_template = preload("res://templates/blinder.tscn")
|
||||||
const one_shot_template = preload("res://templates/one_shot.tscn")
|
const one_shot_template = preload("res://templates/one_shot.tscn")
|
||||||
|
|
||||||
|
const story_level = preload("res://scenes/test_level.tscn")
|
||||||
|
const vs_com_level = preload("res://scenes/test_level.tscn")
|
||||||
const vs_man_level = preload("res://scenes/test_level.tscn")
|
const vs_man_level = preload("res://scenes/test_level.tscn")
|
||||||
const pawn_select_scene = preload("res://scenes/character_select.tscn")
|
const pawn_select_scene = preload("res://scenes/character_select.tscn")
|
||||||
|
|
||||||
var player : PawnController
|
var player : PawnController
|
||||||
var hud : HUD
|
var hud : HUD
|
||||||
var level : Level
|
var level : Level
|
||||||
|
var mode : Modes = Modes.STORY
|
||||||
var multiplayer_game : bool = false
|
var multiplayer_game : bool = false
|
||||||
var num_players : int = 1
|
var num_players : int = 1
|
||||||
var pawns_selected : Dictionary[int, PawnBaseData] = {}
|
var pawns_selected : Dictionary[int, PawnBaseData] = {}
|
||||||
@@ -47,6 +56,12 @@ func start_level(pawns : Dictionary[int, PawnBaseData]) -> void:
|
|||||||
for i in Multiplayer.players.values():
|
for i in Multiplayer.players.values():
|
||||||
level_synced[i] = false
|
level_synced[i] = false
|
||||||
level_synced[1] = true
|
level_synced[1] = true
|
||||||
|
match(mode):
|
||||||
|
Modes.STORY:
|
||||||
|
switch_scene(story_level, false)
|
||||||
|
Modes.VS_COM:
|
||||||
|
switch_scene(vs_com_level, false)
|
||||||
|
Modes.VS_MAN:
|
||||||
switch_scene(vs_man_level)
|
switch_scene(vs_man_level)
|
||||||
|
|
||||||
func switch_scene(packed_scene : PackedScene, spawn : bool = true) -> void:
|
func switch_scene(packed_scene : PackedScene, spawn : bool = true) -> void:
|
||||||
@@ -57,7 +72,11 @@ func switch_scene(packed_scene : PackedScene, spawn : bool = true) -> void:
|
|||||||
tween.tween_property(blinder, "self_modulate:a", 1, .15)
|
tween.tween_property(blinder, "self_modulate:a", 1, .15)
|
||||||
if spawn:
|
if spawn:
|
||||||
var spawner = get_tree().get_first_node_in_group("level_spawner") as MultiplayerSpawner
|
var spawner = get_tree().get_first_node_in_group("level_spawner") as MultiplayerSpawner
|
||||||
tween.tween_callback(spawner.add_child.bind(packed_scene.instantiate(),true))
|
tween.tween_callback(spawner.add_child.bind(packed_scene.instantiate(), true))
|
||||||
|
var current_scene = get_tree().get_first_node_in_group("scenes")
|
||||||
|
if current_scene:
|
||||||
|
tween.tween_callback(current_scene.queue_free)
|
||||||
|
current_scene.process_mode=Node.PROCESS_MODE_DISABLED
|
||||||
else:
|
else:
|
||||||
tween.tween_callback(get_tree().change_scene_to_packed.bind(packed_scene))
|
tween.tween_callback(get_tree().change_scene_to_packed.bind(packed_scene))
|
||||||
tween.tween_property(blinder, "self_modulate:a", 0, .15)
|
tween.tween_property(blinder, "self_modulate:a", 0, .15)
|
||||||
|
|||||||
@@ -82,10 +82,9 @@ func _process(delta : float) -> void:
|
|||||||
selector_wait -= delta
|
selector_wait -= delta
|
||||||
return
|
return
|
||||||
var input_vector : Vector2
|
var input_vector : Vector2
|
||||||
if Multiplayer.is_host():
|
|
||||||
input_vector = Input.get_vector("west","east","north","south")
|
input_vector = Input.get_vector("west","east","north","south")
|
||||||
else:
|
|
||||||
input_vector = Input.get_vector("ui_focus_prev","ui_focus_next","north","south")
|
|
||||||
var move_dir : Vector2 = Vector2.ZERO
|
var move_dir : Vector2 = Vector2.ZERO
|
||||||
|
|
||||||
if input_vector.x < 0:
|
if input_vector.x < 0:
|
||||||
|
|||||||
1
scripts/item.gd
Normal file
@@ -0,0 +1 @@
|
|||||||
|
class_name Item extends Area3D
|
||||||
1
scripts/item.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://bjgeppx4pmk66
|
||||||
@@ -1,8 +1,17 @@
|
|||||||
class_name Level extends Node3D
|
class_name Level extends Node3D
|
||||||
|
|
||||||
|
|
||||||
|
const map_marker_templates : Dictionary[String, PackedScene] = {
|
||||||
|
"pawn" : preload("res://templates/markers/pawn_marker.tscn"),
|
||||||
|
"friendly_trap":preload("res://templates/markers/friendly_trap_marker.tscn"),
|
||||||
|
"enemy_trap": preload("res://templates/markers/enemy_trap_marker.tscn"),
|
||||||
|
"item": preload("res://templates/markers/item_marker.tscn")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const pawn_controller = preload("res://templates/pawn_controller.tscn")
|
const pawn_controller = preload("res://templates/pawn_controller.tscn")
|
||||||
const trap_template = preload("res://templates/trap.tscn")
|
const trap_template = preload("res://templates/trap.tscn")
|
||||||
const camera_template = preload("res://templates/camera.tscn")
|
const camera_template = preload("res://templates/pawn_camera.tscn")
|
||||||
|
|
||||||
const camera_offset = Vector3(0, 10, 5.25)
|
const camera_offset = Vector3(0, 10, 5.25)
|
||||||
|
|
||||||
@@ -13,13 +22,19 @@ const camera_offset = Vector3(0, 10, 5.25)
|
|||||||
@onready var pawns_node : Node3D = %Pawns
|
@onready var pawns_node : Node3D = %Pawns
|
||||||
@onready var traps_node : Node3D = %Traps
|
@onready var traps_node : Node3D = %Traps
|
||||||
@onready var cameras_node : Node3D = %Cameras
|
@onready var cameras_node : Node3D = %Cameras
|
||||||
|
@onready var map_markers_node : Node3D = %MapMarkers
|
||||||
@export var difficulty : int = 1
|
@export var difficulty : int = 1
|
||||||
|
|
||||||
var traps : Dictionary[Vector3i, Trap] = {}
|
var traps : Dictionary[Vector3i, Trap] = {}
|
||||||
var pawns : Dictionary[int, PawnController] = {}
|
var pawns : Dictionary[int, PawnController] = {}
|
||||||
var cameras : Dictionary[int, PawnCamera] = {}
|
var cameras : Dictionary[int, PawnCamera] = {}
|
||||||
|
var map_markers : Dictionary[Object, MapMarker] = {}
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
Game.level = self
|
Game.level = self
|
||||||
|
if Game.mode == Game.Modes.STORY:
|
||||||
|
setup()
|
||||||
|
add_level_trap.call_deferred(Trap.Type.MINE, Vector3.ZERO, Vector3i(5,0,3))
|
||||||
|
|
||||||
func setup() -> void:
|
func setup() -> void:
|
||||||
if Multiplayer.is_host():
|
if Multiplayer.is_host():
|
||||||
@@ -79,10 +94,10 @@ func add_trap(trap : Trap, crd : Vector3i) -> void:
|
|||||||
trap.square = crd
|
trap.square = crd
|
||||||
traps[crd] = trap
|
traps[crd] = trap
|
||||||
trap.position = Vector3(crd) + Vector3(.5, 0, .5)
|
trap.position = Vector3(crd) + Vector3(.5, 0, .5)
|
||||||
add_child(trap)
|
add_child(trap, true)
|
||||||
|
|
||||||
func add_projectile(shot : Projectile) -> void:
|
func add_projectile(shot : Projectile) -> void:
|
||||||
add_child(shot)
|
add_child(shot, true)
|
||||||
|
|
||||||
func remove_trap_square(crd : Vector3i) -> void:
|
func remove_trap_square(crd : Vector3i) -> void:
|
||||||
traps.erase(crd)
|
traps.erase(crd)
|
||||||
@@ -104,7 +119,7 @@ func is_valid_trap_square(crd : Vector3i) -> bool:
|
|||||||
|
|
||||||
func add_vfx(vfx, crd : Vector3i) -> void:
|
func add_vfx(vfx, crd : Vector3i) -> void:
|
||||||
vfx.position = Vector3(crd) #+ Vector3(0.5, 0, 0.5)
|
vfx.position = Vector3(crd) #+ Vector3(0.5, 0, 0.5)
|
||||||
add_child(vfx)
|
add_child(vfx, true)
|
||||||
|
|
||||||
func activate_trap(crd : Vector3i) -> void:
|
func activate_trap(crd : Vector3i) -> void:
|
||||||
if traps.has(crd):
|
if traps.has(crd):
|
||||||
@@ -120,3 +135,37 @@ func disarm_trap(crd : Vector3i) -> void:
|
|||||||
var trap = traps[crd]
|
var trap = traps[crd]
|
||||||
trap.disarm()
|
trap.disarm()
|
||||||
traps.erase(crd)
|
traps.erase(crd)
|
||||||
|
|
||||||
|
func remove_map_marker(target) -> void:
|
||||||
|
if !map_markers.has(target):
|
||||||
|
printerr("Tried to remove a map marker for %s but marker does not exist!" % target.name)
|
||||||
|
else:
|
||||||
|
map_markers[target].queue_free()
|
||||||
|
map_markers[target] = null
|
||||||
|
|
||||||
|
func add_map_marker(target) -> void:
|
||||||
|
var marker : MapMarker
|
||||||
|
var height : float
|
||||||
|
if target is PawnController:
|
||||||
|
marker = map_marker_templates.pawn.instantiate()
|
||||||
|
height += 40
|
||||||
|
elif target is Trap:
|
||||||
|
if target.trap_owner == Multiplayer.id:
|
||||||
|
marker = map_marker_templates.friendly_trap.instantiate()
|
||||||
|
else:
|
||||||
|
marker = map_marker_templates.enemy_trap.instantiate()
|
||||||
|
marker.visible = false
|
||||||
|
target.revealed.connect(marker._on_trap_revealed)
|
||||||
|
height += 30
|
||||||
|
elif target is Item:
|
||||||
|
marker = map_marker_templates.item.instantiate()
|
||||||
|
height += 10
|
||||||
|
marker.register_target(target)
|
||||||
|
map_markers[target] = marker
|
||||||
|
map_markers_node.add_child(marker)
|
||||||
|
marker.position += Vector3(0, height,0)
|
||||||
|
|
||||||
|
func add_level_trap(type : Trap.Type, facing : Vector3, crd : Vector3i) -> void:
|
||||||
|
var trap = trap_template.instantiate()
|
||||||
|
trap.setup(type, facing, -1)
|
||||||
|
add_trap(trap, crd)
|
||||||
|
|||||||
18
scripts/map_marker.gd
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
class_name MapMarker extends Node3D
|
||||||
|
|
||||||
|
var target : Node3D
|
||||||
|
|
||||||
|
func register_target(target : Node3D) -> void:
|
||||||
|
self.target = target
|
||||||
|
reposition()
|
||||||
|
|
||||||
|
func reposition() -> void:
|
||||||
|
var loc = target.position
|
||||||
|
position = Vector3(loc.x, position.y, loc.z)
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if target:
|
||||||
|
reposition()
|
||||||
|
|
||||||
|
func _on_trap_revealed(is_visible : bool) -> void:
|
||||||
|
visible = is_visible
|
||||||
1
scripts/map_marker.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://cnrxwj03j5rw3
|
||||||
@@ -1,24 +1,24 @@
|
|||||||
class_name MultiplayerPC extends PawnController
|
class_name MultiplayerPC extends PawnController
|
||||||
|
|
||||||
@export var player_id := 1 :
|
#@export var player_id := 1 :
|
||||||
set(id):
|
#set(id):
|
||||||
player_id = id
|
#player_id = id
|
||||||
|
#
|
||||||
func _enter_tree() -> void:
|
#func _enter_tree() -> void:
|
||||||
print("Player %d adding Controller for %d" % [Multiplayer.id, player_id])
|
#print("Player %d adding Controller for %d" % [Multiplayer.id, player_id])
|
||||||
|
##Game.player = self
|
||||||
|
#pass
|
||||||
|
#
|
||||||
|
#func setup(id) -> void:
|
||||||
|
#name = "Player " + str(id)
|
||||||
|
#player_id = id
|
||||||
|
#if Multiplayer.id == id:
|
||||||
#Game.player = self
|
#Game.player = self
|
||||||
pass
|
#
|
||||||
|
#func _physics_process(delta: float) -> void:
|
||||||
func setup(id) -> void:
|
#var dir = Input.get_vector("west", "east", "north", "south")
|
||||||
name = "Player " + str(id)
|
#dir = Vector3(dir.x, 0, dir.y)
|
||||||
player_id = id
|
#if dir.length_squared() > 0:
|
||||||
if Multiplayer.id == id:
|
#body.look_at(body.global_position - dir)
|
||||||
Game.player = self
|
#velocity = speed * dir
|
||||||
|
#move_and_slide()
|
||||||
func _physics_process(delta: float) -> void:
|
|
||||||
var dir = Input.get_vector("west", "east", "north", "south")
|
|
||||||
dir = Vector3(dir.x, 0, dir.y)
|
|
||||||
if dir.length_squared() > 0:
|
|
||||||
body.look_at(body.global_position - dir)
|
|
||||||
velocity = speed * dir
|
|
||||||
move_and_slide()
|
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
extends Level
|
extends Level
|
||||||
|
|
||||||
const pawn_controller_template = preload("res://templates/pawn_controller.tscn")
|
#const pawn_controller_template = preload("res://templates/pawn_controller.tscn")
|
||||||
|
#
|
||||||
@onready var player_spawner = %Spawner
|
#@onready var player_spawner = %Spawner
|
||||||
func _ready() -> void:
|
#func _ready() -> void:
|
||||||
print("LEVEL LOADING, ID: " + str(Multiplayer.id) + " with " + str(Multiplayer.players.size()) + " keys recognized")
|
#print("LEVEL LOADING, ID: " + str(Multiplayer.id) + " with " + str(Multiplayer.players.size()) + " keys recognized")
|
||||||
Game.level = self
|
#Game.level = self
|
||||||
|
#
|
||||||
func setup() -> void:
|
#func setup() -> void:
|
||||||
if Multiplayer.is_host():
|
#if Multiplayer.is_host():
|
||||||
spawn_players()
|
#spawn_players()
|
||||||
|
#
|
||||||
func spawn_players() -> void:
|
#func spawn_players() -> void:
|
||||||
for key in Game.pawns_selected:
|
#for key in Game.pawns_selected:
|
||||||
var pc : PawnController = pawn_controller_template.instantiate()
|
#var pc : PawnController = pawn_controller_template.instantiate()
|
||||||
var pd = Game.pawns_selected[key]
|
#var pd = Game.pawns_selected[key]
|
||||||
player_spawner.add_pawn(pc, key)
|
#player_spawner.add_pawn(pc, key)
|
||||||
pc.setup(key,pd.starting_traps)
|
#pc.setup(key,pd.starting_traps)
|
||||||
|
|||||||
@@ -73,3 +73,7 @@ func _on_joining_back_button_pressed() -> void:
|
|||||||
func _on_client_added(peer_handle : String, peer_id : int) -> void:
|
func _on_client_added(peer_handle : String, peer_id : int) -> void:
|
||||||
%ParticipantsText.text = "[color=FFFF00][b]*%s[/b][/color]\n[color=FFFFFF]*%s[/color]" % [handle, peer_handle]
|
%ParticipantsText.text = "[color=FFFF00][b]*%s[/b][/color]\n[color=FFFFFF]*%s[/color]" % [handle, peer_handle]
|
||||||
%StartButton.disabled = false
|
%StartButton.disabled = false
|
||||||
|
|
||||||
|
func _on_level_spawned(node: Node) -> void:
|
||||||
|
if node is Level:
|
||||||
|
Game.level_spawned.rpc_id(1, Multiplayer.id)
|
||||||
|
|||||||
@@ -8,9 +8,11 @@ class_name PawnBody extends Node3D
|
|||||||
@onready var struggle_ui : Sprite3D = %StruggleUI
|
@onready var struggle_ui : Sprite3D = %StruggleUI
|
||||||
@onready var struggle_bar : ProgressBar = %StruggleBar
|
@onready var struggle_bar : ProgressBar = %StruggleBar
|
||||||
|
|
||||||
|
@rpc("call_local")
|
||||||
func play_animation(anim_name : String) -> void:
|
func play_animation(anim_name : String) -> void:
|
||||||
anim_player.play(anim_name)
|
anim_player.play(anim_name)
|
||||||
|
|
||||||
|
@rpc("call_local")
|
||||||
func show_struggle() -> void:
|
func show_struggle() -> void:
|
||||||
struggle_ui.visible = true
|
struggle_ui.visible = true
|
||||||
|
|
||||||
|
|||||||
@@ -9,13 +9,15 @@ enum State {
|
|||||||
DEAD
|
DEAD
|
||||||
}
|
}
|
||||||
|
|
||||||
const camera_template = preload("res://templates/camera.tscn")
|
|
||||||
const trap_template = preload("res://templates/trap.tscn")
|
const trap_template = preload("res://templates/trap.tscn")
|
||||||
|
|
||||||
const remove_trap_modal = preload("res://templates/remove_trap_modal.tscn")
|
const remove_trap_modal = preload("res://templates/remove_trap_modal.tscn")
|
||||||
const disarm_trap_modal = preload("res://templates/disarm_trap_modal.tscn")
|
const disarm_trap_modal = preload("res://templates/disarm_trap_modal.tscn")
|
||||||
|
|
||||||
@export var speed : float = 10
|
@export var speed : float = 10
|
||||||
@onready var body : PawnBody = $PawnBody
|
@onready var body : PawnBody = $PawnBody
|
||||||
|
@onready var input : PawnInput = $PawnInput
|
||||||
@onready var data : PawnLevelData = $Data
|
@onready var data : PawnLevelData = $Data
|
||||||
@onready var trap_sound : AudioStreamPlayer3D = $TrapSound
|
@onready var trap_sound : AudioStreamPlayer3D = $TrapSound
|
||||||
@onready var detonate_sound : AudioStreamPlayer3D = $DetonateSound
|
@onready var detonate_sound : AudioStreamPlayer3D = $DetonateSound
|
||||||
@@ -27,11 +29,11 @@ const disarm_trap_modal = preload("res://templates/disarm_trap_modal.tscn")
|
|||||||
|
|
||||||
var id : int = 1
|
var id : int = 1
|
||||||
|
|
||||||
var state : State
|
@export var state : State
|
||||||
var button_actions : Dictionary[int, String]
|
var button_actions : Dictionary[int, String]
|
||||||
var current_square : Vector3i
|
var current_square : Vector3i
|
||||||
var facing : Vector3
|
var facing : Vector3
|
||||||
var detecting : bool = false
|
@export var detecting : bool = false
|
||||||
var detect_squares : Dictionary[Vector3i, bool] = {}
|
var detect_squares : Dictionary[Vector3i, bool] = {}
|
||||||
var detect_tween : Tween = null
|
var detect_tween : Tween = null
|
||||||
var fling_direction : Vector3
|
var fling_direction : Vector3
|
||||||
@@ -74,36 +76,25 @@ signal combat_target_changed(melee : bool)
|
|||||||
signal ammo_changed(current : int, max : int)
|
signal ammo_changed(current : int, max : int)
|
||||||
signal struggling(value : float)
|
signal struggling(value : float)
|
||||||
|
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
Game.level.add_map_marker(self)
|
||||||
|
|
||||||
|
func _exit_tree() -> void:
|
||||||
|
Game.level.remove_map_marker(self)
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _physics_process(delta: float) -> void:
|
||||||
if attack_timer > 0:
|
if attack_timer > 0:
|
||||||
attack_timer -= delta
|
attack_timer -= delta
|
||||||
check_attack_target()
|
check_attack_target()
|
||||||
if is_poisoned():
|
|
||||||
poison_time_remaining -= delta
|
|
||||||
poison_pulse_timer += delta
|
|
||||||
if poison_pulse_timer >= 1.0:
|
|
||||||
poison_pulse_timer -= 1.0
|
|
||||||
hurt(poison_strength)
|
|
||||||
if poison_time_remaining <= 0:
|
|
||||||
var pshader : ShaderMaterial = body.material.next_pass
|
|
||||||
pshader.set_shader_parameter("strength", 0)
|
|
||||||
poison_status_changed.emit(false)
|
|
||||||
|
|
||||||
var dir = Input.get_vector("west", "east", "north", "south")
|
update_poison(delta)
|
||||||
dir = Vector3(dir.x, 0, dir.y)
|
|
||||||
if struggle_timer > 0:
|
if !update_struggle(delta):
|
||||||
struggle_timer -= delta
|
|
||||||
var snapped_angle = round(dir.angle_to(Vector3(1,0,0)) * 4 / PI) * PI * .25
|
|
||||||
if abs(snapped_angle - struggle_angle) >= PI * .25:
|
|
||||||
struggle_angle = snapped_angle
|
|
||||||
struggle_timer -= 2 * delta
|
|
||||||
struggling.emit(struggle_timer)
|
|
||||||
if struggle_timer <= 0:
|
|
||||||
hurt(1)
|
|
||||||
knockdown(facing)
|
|
||||||
else:
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
var dir = input.dir
|
||||||
|
|
||||||
if input_locked or modal != null:
|
if input_locked or modal != null:
|
||||||
dir = Vector3.ZERO
|
dir = Vector3.ZERO
|
||||||
|
|
||||||
@@ -164,12 +155,11 @@ func _physics_process(delta: float) -> void:
|
|||||||
move_and_slide()
|
move_and_slide()
|
||||||
|
|
||||||
if detecting:
|
if detecting:
|
||||||
update_detecting()
|
update_detect_region.rpc(true)
|
||||||
|
|
||||||
#Deal with the rest of the buttons
|
#Deal with the rest of the buttons
|
||||||
if !input_locked:
|
if !input_locked:
|
||||||
if modal:
|
if modal:
|
||||||
var evt = InputEventAction.new()
|
|
||||||
var buttons = [
|
var buttons = [
|
||||||
"lay trap",
|
"lay trap",
|
||||||
"detect",
|
"detect",
|
||||||
@@ -177,31 +167,16 @@ func _physics_process(delta: float) -> void:
|
|||||||
"detonate"
|
"detonate"
|
||||||
]
|
]
|
||||||
for button in buttons:
|
for button in buttons:
|
||||||
if Input.is_action_just_pressed(button):
|
if input.is_action_just_pressed(button):
|
||||||
evt.action = button
|
modal.button_pressed(button)
|
||||||
evt.pressed = true
|
|
||||||
modal.button_pressed(evt)
|
|
||||||
elif state == State.NORMAL:
|
elif state == State.NORMAL:
|
||||||
if Input.is_action_just_pressed("left cycle trap"):
|
update_actions()
|
||||||
cycle_active_trap(-1)
|
|
||||||
if Input.is_action_just_pressed("right cycle trap"):
|
|
||||||
cycle_active_trap(1)
|
|
||||||
if Input.is_action_just_pressed("detonate"):
|
|
||||||
detonate()
|
|
||||||
elif Input.is_action_just_pressed("detect"):
|
|
||||||
start_detecting()
|
|
||||||
elif Input.is_action_just_released("detect"):
|
|
||||||
stop_detecting()
|
|
||||||
elif !detecting and Input.is_action_just_pressed("lay trap"):
|
|
||||||
try_lay_trap()
|
|
||||||
elif Input.is_action_pressed("attack"):
|
|
||||||
attack()
|
|
||||||
|
|
||||||
func attack() -> void:
|
func attack() -> void:
|
||||||
if attack_timer > 0:
|
if attack_timer > 0:
|
||||||
return
|
return
|
||||||
if meleeing:
|
if meleeing:
|
||||||
body.play_animation("melee")
|
body.play_animation.rpc("melee")
|
||||||
attack_timer = melee_recovery_time
|
attack_timer = melee_recovery_time
|
||||||
else:
|
else:
|
||||||
if ammo <= 0:
|
if ammo <= 0:
|
||||||
@@ -220,6 +195,50 @@ func attack() -> void:
|
|||||||
v.y = 0
|
v.y = 0
|
||||||
body.look_at(body.global_position - v)
|
body.look_at(body.global_position - v)
|
||||||
|
|
||||||
|
|
||||||
|
func update_actions() -> void:
|
||||||
|
if input.is_action_just_pressed("left cycle trap"):
|
||||||
|
cycle_active_trap(-1)
|
||||||
|
if input.is_action_just_pressed("right cycle trap"):
|
||||||
|
cycle_active_trap(1)
|
||||||
|
if input.is_action_just_pressed("detonate"):
|
||||||
|
detonate()
|
||||||
|
elif input.is_action_just_pressed("detect"):
|
||||||
|
start_detecting()
|
||||||
|
elif input.is_action_just_released("detect"):
|
||||||
|
stop_detecting()
|
||||||
|
elif !detecting and input.is_action_just_pressed("lay trap"):
|
||||||
|
try_lay_trap()
|
||||||
|
elif input.is_action_pressed("attack"):
|
||||||
|
attack()
|
||||||
|
|
||||||
|
func update_struggle(delta : float) -> bool:
|
||||||
|
if struggle_timer > 0:
|
||||||
|
struggle_timer -= delta
|
||||||
|
var snapped_angle = round(input.dir.angle_to(Vector3(1,0,0)) * 4 / PI) * PI * .25
|
||||||
|
if abs(snapped_angle - struggle_angle) >= PI * .25:
|
||||||
|
struggle_angle = snapped_angle
|
||||||
|
struggle_timer -= 2 * delta
|
||||||
|
struggling.emit(struggle_timer)
|
||||||
|
if struggle_timer <= 0:
|
||||||
|
hurt(1)
|
||||||
|
knockdown(facing)
|
||||||
|
else:
|
||||||
|
return false
|
||||||
|
return true
|
||||||
|
|
||||||
|
func update_poison(delta : float) -> void:
|
||||||
|
if is_poisoned():
|
||||||
|
poison_time_remaining -= delta
|
||||||
|
poison_pulse_timer += delta
|
||||||
|
if poison_pulse_timer >= 1.0:
|
||||||
|
poison_pulse_timer -= 1.0
|
||||||
|
hurt(poison_strength)
|
||||||
|
if poison_time_remaining <= 0:
|
||||||
|
var pshader : ShaderMaterial = body.material.next_pass
|
||||||
|
pshader.set_shader_parameter("strength", 0)
|
||||||
|
poison_status_changed.emit(false)
|
||||||
|
|
||||||
func fire_ranged() -> void:
|
func fire_ranged() -> void:
|
||||||
var shot = body.projectile_template.instantiate()
|
var shot = body.projectile_template.instantiate()
|
||||||
var tdir : Vector3 = Vector3.ZERO
|
var tdir : Vector3 = Vector3.ZERO
|
||||||
@@ -309,52 +328,6 @@ func clear_action() -> void:
|
|||||||
input_locked = false
|
input_locked = false
|
||||||
action_tween = null
|
action_tween = null
|
||||||
|
|
||||||
func update_detecting() -> void:
|
|
||||||
var new_square : Vector3i = (global_position - Vector3.ONE * .5).round()
|
|
||||||
if new_square == current_square:
|
|
||||||
return
|
|
||||||
current_square = new_square
|
|
||||||
var new_squares : Dictionary[Vector3i, bool] = {}
|
|
||||||
for i in range(-2, 3):
|
|
||||||
for j in range(-2, 3):
|
|
||||||
for k in range(-2, 2):
|
|
||||||
if abs(i) + abs(j) < 3:
|
|
||||||
var sq = current_square + Vector3i(i, k, j)
|
|
||||||
new_squares[sq] = true
|
|
||||||
|
|
||||||
|
|
||||||
for sq in detect_squares.keys():
|
|
||||||
if !new_squares.has(sq):
|
|
||||||
Game.level.detect_square(sq, false)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var remove_list = []
|
|
||||||
var trap_detected : bool = false
|
|
||||||
for sq in new_squares.keys():
|
|
||||||
if detect_squares.has(sq):
|
|
||||||
continue
|
|
||||||
if !Game.level.detect_square(sq, true):
|
|
||||||
remove_list.append(sq)
|
|
||||||
else:
|
|
||||||
var trap = Game.level.get_square_trap(sq + Vector3i(0,1,0))
|
|
||||||
if trap and trap.is_just_revealed():
|
|
||||||
trap_detected = true
|
|
||||||
if trap_detected:
|
|
||||||
detect_alert()
|
|
||||||
|
|
||||||
detect_squares = new_squares
|
|
||||||
for key in remove_list:
|
|
||||||
detect_squares.erase(key)
|
|
||||||
|
|
||||||
var trap : Trap = Game.level.get_square_trap(current_square)
|
|
||||||
if trap != null:
|
|
||||||
if trap.trap_owner == Multiplayer.id:
|
|
||||||
show_remove_trap_modal()
|
|
||||||
else:
|
|
||||||
trap.disarming = true
|
|
||||||
show_disarm_trap_modal()
|
|
||||||
|
|
||||||
|
|
||||||
func detect_alert() -> void:
|
func detect_alert() -> void:
|
||||||
detect_sound.play()
|
detect_sound.play()
|
||||||
@@ -393,26 +366,46 @@ func show_disarm_trap_modal() -> void:
|
|||||||
|
|
||||||
func start_detecting() -> void:
|
func start_detecting() -> void:
|
||||||
detecting = true
|
detecting = true
|
||||||
current_square = (global_position - Vector3.ONE * .5).round()
|
update_detect_region.rpc(false)
|
||||||
detect_squares = {}
|
|
||||||
|
@rpc("authority", "call_local")
|
||||||
|
func update_detect_region(update : bool) -> void:
|
||||||
|
if id != Multiplayer.id:
|
||||||
|
return
|
||||||
|
var new_square : Vector3i = (global_position - Vector3.ONE * .5).round()
|
||||||
|
if update and new_square == current_square:
|
||||||
|
return
|
||||||
|
current_square = new_square
|
||||||
|
var new_squares : Dictionary[Vector3i, bool] = {}
|
||||||
for i in range(-2, 3):
|
for i in range(-2, 3):
|
||||||
for j in range(-2, 3):
|
for j in range(-2, 3):
|
||||||
for k in range(-2, 2):
|
for k in range(-2, 2):
|
||||||
if abs(i) + abs(j) < 3:
|
if abs(i) + abs(j) < 3:
|
||||||
var sq = current_square + Vector3i(i, k, j)
|
var sq = current_square + Vector3i(i, k, j)
|
||||||
detect_squares[sq] = true
|
new_squares[sq] = true
|
||||||
|
|
||||||
|
if update:
|
||||||
|
for sq in detect_squares.keys():
|
||||||
|
if !new_squares.has(sq):
|
||||||
|
Game.level.detect_square(sq, false)
|
||||||
|
|
||||||
var remove_list = []
|
var remove_list = []
|
||||||
var trap_detected : bool = false
|
var trap_detected : bool = false
|
||||||
for sq in detect_squares.keys():
|
for sq in new_squares.keys():
|
||||||
|
if update and detect_squares.has(sq):
|
||||||
|
continue
|
||||||
if !Game.level.detect_square(sq, true):
|
if !Game.level.detect_square(sq, true):
|
||||||
remove_list.append(sq)
|
remove_list.append(sq)
|
||||||
else:
|
else:
|
||||||
var trap = Game.level.get_square_trap(sq + Vector3i(0,1,0))
|
var trap = Game.level.get_square_trap(sq + Vector3i(0,1,0))
|
||||||
if trap and trap.is_just_revealed():
|
if trap and trap.is_just_revealed():
|
||||||
trap_detected = true
|
trap_detected = true
|
||||||
|
|
||||||
if trap_detected:
|
if trap_detected:
|
||||||
detect_alert()
|
detect_alert()
|
||||||
|
|
||||||
|
detect_squares = new_squares
|
||||||
|
|
||||||
for key in remove_list:
|
for key in remove_list:
|
||||||
detect_squares.erase(key)
|
detect_squares.erase(key)
|
||||||
|
|
||||||
@@ -420,9 +413,18 @@ func start_detecting() -> void:
|
|||||||
if trap != null:
|
if trap != null:
|
||||||
if trap.trap_owner == Multiplayer.id:
|
if trap.trap_owner == Multiplayer.id:
|
||||||
show_remove_trap_modal()
|
show_remove_trap_modal()
|
||||||
|
else:
|
||||||
|
trap.disarming = true
|
||||||
|
show_disarm_trap_modal()
|
||||||
|
|
||||||
func stop_detecting() -> void:
|
func stop_detecting() -> void:
|
||||||
detecting = false
|
detecting = false
|
||||||
|
clear_detect_region.rpc()
|
||||||
|
|
||||||
|
@rpc("authority", "call_local")
|
||||||
|
func clear_detect_region() -> void:
|
||||||
|
if id != Multiplayer.id:
|
||||||
|
return
|
||||||
for sq in detect_squares.keys():
|
for sq in detect_squares.keys():
|
||||||
Game.level.detect_square(sq, false)
|
Game.level.detect_square(sq, false)
|
||||||
detect_squares = {}
|
detect_squares = {}
|
||||||
@@ -435,7 +437,7 @@ func setup(id : int, traps : Array, pos : Vector3) -> void:
|
|||||||
for trap in traps:
|
for trap in traps:
|
||||||
traplist.append(PawnLevelData.TrapData.new(trap.type, trap.qty, trap.qty))
|
traplist.append(PawnLevelData.TrapData.new(trap.type, trap.qty, trap.qty))
|
||||||
$Data.traps = traplist
|
$Data.traps = traplist
|
||||||
set_multiplayer_authority(id)
|
input.set_multiplayer_authority(id)
|
||||||
struggling.connect(body._on_struggle_changed)
|
struggling.connect(body._on_struggle_changed)
|
||||||
Game.setup_player(self)
|
Game.setup_player(self)
|
||||||
|
|
||||||
|
|||||||
55
scripts/pawn_input.gd
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
class_name PawnInput extends Node
|
||||||
|
|
||||||
|
|
||||||
|
@export var dir : Vector3
|
||||||
|
@export var pressed : Dictionary[String, bool]
|
||||||
|
@export var just_pressed : Dictionary[String, bool]
|
||||||
|
@export var just_released : Dictionary[String, bool]
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
pressed = {
|
||||||
|
"left cycle trap":false,
|
||||||
|
"right cycle trap":false,
|
||||||
|
"detonate":false,
|
||||||
|
"detect":false,
|
||||||
|
"lay trap":false,
|
||||||
|
"attack":false
|
||||||
|
}
|
||||||
|
just_pressed = {
|
||||||
|
"left cycle trap":false,
|
||||||
|
"right cycle trap":false,
|
||||||
|
"detonate":false,
|
||||||
|
"detect":false,
|
||||||
|
"lay trap":false,
|
||||||
|
"attack":false
|
||||||
|
}
|
||||||
|
just_released = {
|
||||||
|
"left cycle trap":false,
|
||||||
|
"right cycle trap":false,
|
||||||
|
"detonate":false,
|
||||||
|
"detect":false,
|
||||||
|
"lay trap":false,
|
||||||
|
"attack":false
|
||||||
|
}
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
var d = Input.get_vector("west", "east", "north", "south")
|
||||||
|
dir = Vector3(d.x, 0, d.y)
|
||||||
|
for key : String in pressed:
|
||||||
|
if Input.is_action_pressed(key):
|
||||||
|
just_pressed[key] = !pressed[key]
|
||||||
|
just_released[key] = false
|
||||||
|
pressed[key] = true
|
||||||
|
else:
|
||||||
|
just_released[key] = pressed[key]
|
||||||
|
just_pressed[key] = false
|
||||||
|
pressed[key] = false
|
||||||
|
|
||||||
|
func is_action_pressed(action : String) -> bool:
|
||||||
|
return pressed.has(action) && pressed[action]
|
||||||
|
|
||||||
|
func is_action_just_pressed(action : String) -> bool:
|
||||||
|
return just_pressed.has(action) && just_pressed[action]
|
||||||
|
|
||||||
|
func is_action_just_released(action : String) -> bool:
|
||||||
|
return just_released.has(action) && just_released[action]
|
||||||
1
scripts/pawn_input.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://cvuoq81ipid2o
|
||||||
8
scripts/test/input_test.gd
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@onready var level : Level = $Level
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
Game.pawns_selected[1] = load("res://data/pawns/van_reily.tres")
|
||||||
|
level.setup()
|
||||||
|
|
||||||
1
scripts/test/input_test.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://6qk4ejmk8nch
|
||||||
@@ -3,26 +3,32 @@ extends Control
|
|||||||
@onready var menu_list : Array = [
|
@onready var menu_list : Array = [
|
||||||
{
|
{
|
||||||
"option": %STORY,
|
"option": %STORY,
|
||||||
|
"mode" : Game.Modes.STORY,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %"VS-COM",
|
"option": %"VS-COM",
|
||||||
|
"mode" : Game.Modes.VS_COM,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %"VS-MAN",
|
"option": %"VS-MAN",
|
||||||
|
"mode" : Game.Modes.VS_MAN,
|
||||||
"scene" : preload("res://scenes/multiplayer_setup.tscn")
|
"scene" : preload("res://scenes/multiplayer_setup.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %STORY,
|
"option": %STORY,
|
||||||
|
"mode" : Game.Modes.STORY,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %RECORD,
|
"option": %RECORD,
|
||||||
|
"mode" : Game.Modes.STORY,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %OPTION,
|
"option": %OPTION,
|
||||||
|
"mode" : Game.Modes.STORY,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -60,7 +66,6 @@ func _process(delta: float) -> void:
|
|||||||
switch_menu(0)
|
switch_menu(0)
|
||||||
|
|
||||||
if opened:
|
if opened:
|
||||||
|
|
||||||
var menu_dir = 0
|
var menu_dir = 0
|
||||||
menu_dir += 1 if Input.is_action_just_pressed("ui_down") else 0
|
menu_dir += 1 if Input.is_action_just_pressed("ui_down") else 0
|
||||||
menu_dir -= 1 if Input.is_action_just_pressed("ui_up") else 0
|
menu_dir -= 1 if Input.is_action_just_pressed("ui_up") else 0
|
||||||
@@ -68,6 +73,7 @@ func _process(delta: float) -> void:
|
|||||||
switch_sound.play()
|
switch_sound.play()
|
||||||
switch_menu(wrapi(menu_choice + menu_dir, 0, len(menu_list)))
|
switch_menu(wrapi(menu_choice + menu_dir, 0, len(menu_list)))
|
||||||
if Input.is_action_just_pressed("ui_accept"):
|
if Input.is_action_just_pressed("ui_accept"):
|
||||||
|
Game.mode = menu_list[menu_choice].mode
|
||||||
Game.switch_scene(menu_list[menu_choice].scene, false)
|
Game.switch_scene(menu_list[menu_choice].scene, false)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,13 @@ var just_revealed : bool = false
|
|||||||
signal removed(type : Trap.Type)
|
signal removed(type : Trap.Type)
|
||||||
signal disarmed(type : Trap.Type)
|
signal disarmed(type : Trap.Type)
|
||||||
signal activated(type : Trap.Type)
|
signal activated(type : Trap.Type)
|
||||||
|
signal revealed(is_visible : bool)
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
Game.level.add_map_marker(self)
|
||||||
|
|
||||||
|
func _exit_tree() -> void:
|
||||||
|
Game.level.remove_map_marker(self)
|
||||||
|
|
||||||
func setup(type : Type, direction : Vector3, trap_owner : int) -> void:
|
func setup(type : Type, direction : Vector3, trap_owner : int) -> void:
|
||||||
self.type = type
|
self.type = type
|
||||||
@@ -84,6 +91,7 @@ func reveal() -> void:
|
|||||||
model.visible = true
|
model.visible = true
|
||||||
reveal_timer.start(5)
|
reveal_timer.start(5)
|
||||||
just_revealed = true
|
just_revealed = true
|
||||||
|
revealed.emit(true)
|
||||||
|
|
||||||
func is_just_revealed() -> bool:
|
func is_just_revealed() -> bool:
|
||||||
return just_revealed
|
return just_revealed
|
||||||
@@ -96,6 +104,7 @@ func _on_reveal_timeout() -> void:
|
|||||||
reveal_timer.start(5)
|
reveal_timer.start(5)
|
||||||
else:
|
else:
|
||||||
model.visible = false
|
model.visible = false
|
||||||
|
revealed.emit(false)
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var owns_trap = trap_owner == Multiplayer.id
|
var owns_trap = trap_owner == Multiplayer.id
|
||||||
|
|||||||
@@ -213,14 +213,14 @@ script = ExtResource("13_bftxg")
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
stream = ExtResource("14_d888c")
|
stream = ExtResource("14_d888c")
|
||||||
|
|
||||||
[node name="PanelContainer3" type="PanelContainer" parent="Control/PanelContainer/HBoxContainer/VBoxContainer"]
|
[node name="AmmoPanel" type="PanelContainer" parent="Control/PanelContainer/HBoxContainer/VBoxContainer"]
|
||||||
custom_minimum_size = Vector2(150, 100)
|
custom_minimum_size = Vector2(150, 100)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="Control" type="Control" parent="Control/PanelContainer/HBoxContainer/VBoxContainer/PanelContainer3"]
|
[node name="Control" type="Control" parent="Control/PanelContainer/HBoxContainer/VBoxContainer/AmmoPanel"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="TextureRect2" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/VBoxContainer/PanelContainer3/Control"]
|
[node name="TextureRect2" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/VBoxContainer/AmmoPanel/Control"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 128.0
|
offset_left = 128.0
|
||||||
offset_top = 38.0
|
offset_top = 38.0
|
||||||
@@ -228,7 +228,7 @@ offset_right = 180.0
|
|||||||
offset_bottom = 90.0
|
offset_bottom = 90.0
|
||||||
texture = SubResource("GradientTexture1D_gomyg")
|
texture = SubResource("GradientTexture1D_gomyg")
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/VBoxContainer/PanelContainer3/Control"]
|
[node name="TextureRect" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/VBoxContainer/AmmoPanel/Control"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 8.0
|
offset_left = 8.0
|
||||||
offset_top = -25.0
|
offset_top = -25.0
|
||||||
@@ -237,7 +237,7 @@ offset_bottom = 104.0
|
|||||||
texture = ExtResource("18_iv5le")
|
texture = ExtResource("18_iv5le")
|
||||||
expand_mode = 1
|
expand_mode = 1
|
||||||
|
|
||||||
[node name="AmmoLabel" type="Label" parent="Control/PanelContainer/HBoxContainer/VBoxContainer/PanelContainer3/Control"]
|
[node name="AmmoLabel" type="Label" parent="Control/PanelContainer/HBoxContainer/VBoxContainer/AmmoPanel/Control"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 141.0
|
offset_left = 141.0
|
||||||
@@ -248,7 +248,35 @@ theme_override_font_sizes/font_size = 48
|
|||||||
text = "9"
|
text = "9"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="PanelContainer2" type="PanelContainer" parent="Control/PanelContainer/HBoxContainer"]
|
[node name="HBoxContainer" type="HBoxContainer" parent="Control/PanelContainer/HBoxContainer"]
|
||||||
|
custom_minimum_size = Vector2(0, 70)
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="PanelContainer" type="PanelContainer" parent="Control/PanelContainer/HBoxContainer/HBoxContainer"]
|
||||||
|
custom_minimum_size = Vector2(150, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="Control/PanelContainer/HBoxContainer/HBoxContainer/PanelContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/HBoxContainer/PanelContainer/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0, 0.6039216, 1, 1)
|
||||||
|
text = "TIME"
|
||||||
|
|
||||||
|
[node name="Label2" type="Label" parent="Control/PanelContainer/HBoxContainer/HBoxContainer/PanelContainer/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0, 1, 0, 1)
|
||||||
|
theme_override_font_sizes/font_size = 32
|
||||||
|
text = "00:00:00"
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/HBoxContainer"]
|
||||||
|
custom_minimum_size = Vector2(95, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("1_k5de2")
|
||||||
|
expand_mode = 1
|
||||||
|
|
||||||
|
[node name="OppnentView" type="PanelContainer" parent="Control/PanelContainer/HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(150, 0)
|
custom_minimum_size = Vector2(150, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
@@ -257,36 +285,26 @@ custom_minimum_size = Vector2(250, 0)
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="PanelContainer3" type="PanelContainer" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3"]
|
[node name="PanelContainer3" type="PanelContainer" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3"]
|
||||||
custom_minimum_size = Vector2(250, 130)
|
custom_minimum_size = Vector2(392, 204)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3"]
|
[node name="SubViewportContainer" type="SubViewportContainer" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3"]
|
||||||
custom_minimum_size = Vector2(0, 70)
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="PanelContainer" type="PanelContainer" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3/HBoxContainer"]
|
[node name="SubViewport" type="SubViewport" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3/SubViewportContainer"]
|
||||||
custom_minimum_size = Vector2(150, 0)
|
handle_input_locally = false
|
||||||
layout_mode = 2
|
scaling_3d_mode = 1
|
||||||
|
fsr_sharpness = 2.0
|
||||||
|
canvas_item_default_texture_filter = 0
|
||||||
|
gui_disable_input = true
|
||||||
|
size = Vector2i(392, 204)
|
||||||
|
render_target_update_mode = 4
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3/HBoxContainer/PanelContainer"]
|
[node name="Camera3D" type="Camera3D" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3/SubViewportContainer/SubViewport"]
|
||||||
layout_mode = 2
|
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 11000, 0)
|
||||||
|
keep_aspect = 0
|
||||||
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3/HBoxContainer/PanelContainer/HBoxContainer"]
|
projection = 1
|
||||||
layout_mode = 2
|
size = 25.0
|
||||||
theme_override_colors/font_color = Color(0, 0.6039216, 1, 1)
|
|
||||||
text = "TIME"
|
|
||||||
|
|
||||||
[node name="Label2" type="Label" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3/HBoxContainer/PanelContainer/HBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_override_colors/font_color = Color(0, 1, 0, 1)
|
|
||||||
theme_override_font_sizes/font_size = 32
|
|
||||||
text = "00:00:00"
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3/HBoxContainer"]
|
|
||||||
custom_minimum_size = Vector2(95, 0)
|
|
||||||
layout_mode = 2
|
|
||||||
texture = ExtResource("1_k5de2")
|
|
||||||
expand_mode = 1
|
|
||||||
|
|
||||||
[node name="Control2" type="Control" parent="Control/PanelContainer/HBoxContainer"]
|
[node name="Control2" type="Control" parent="Control/PanelContainer/HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(165, 0)
|
custom_minimum_size = Vector2(165, 0)
|
||||||
|
|||||||
11
templates/markers/enemy_trap_marker.tscn
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://bn1dl7sexxcog"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cnrxwj03j5rw3" path="res://scripts/map_marker.gd" id="1_1gvyj"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bdo6instl47uf" path="res://visuals/images/icons/enemy_trap_marker.png" id="2_43sjg"]
|
||||||
|
|
||||||
|
[node name="EnemyTrapMarker" type="Node3D"]
|
||||||
|
script = ExtResource("1_1gvyj")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
axis = 1
|
||||||
|
texture = ExtResource("2_43sjg")
|
||||||
11
templates/markers/friendly_trap_marker.tscn
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://gchb44afbosa"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cnrxwj03j5rw3" path="res://scripts/map_marker.gd" id="1_kw26n"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c6wke2vs8rfyd" path="res://visuals/images/icons/friendly_trap_marker.png" id="2_rgmxc"]
|
||||||
|
|
||||||
|
[node name="FriendlyTrapMarker" type="Node3D"]
|
||||||
|
script = ExtResource("1_kw26n")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
axis = 1
|
||||||
|
texture = ExtResource("2_rgmxc")
|
||||||
11
templates/markers/item_marker.tscn
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://c7eca16u6brh"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cnrxwj03j5rw3" path="res://scripts/map_marker.gd" id="1_3oank"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cwcbb81pte2jc" path="res://visuals/images/icons/item_marker.png" id="2_pnwq7"]
|
||||||
|
|
||||||
|
[node name="ItemMarker" type="Node3D"]
|
||||||
|
script = ExtResource("1_3oank")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
axis = 1
|
||||||
|
texture = ExtResource("2_pnwq7")
|
||||||
11
templates/markers/pawn_marker.tscn
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://2fulq4e0q1n2"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cnrxwj03j5rw3" path="res://scripts/map_marker.gd" id="1_7mb27"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://co81os2o2bn28" path="res://visuals/images/icons/pawn_marker.png" id="2_cp67f"]
|
||||||
|
|
||||||
|
[node name="PawnMarker" type="Node3D"]
|
||||||
|
script = ExtResource("1_7mb27")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
axis = 1
|
||||||
|
texture = ExtResource("2_cp67f")
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=35 format=3 uid="uid://c8xf3qawk5c6u"]
|
[gd_scene load_steps=37 format=3 uid="uid://c8xf3qawk5c6u"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://bcs7ygh6s3l35" path="res://scripts/pawn_controller.gd" id="1_h27ep"]
|
[ext_resource type="Script" uid="uid://bcs7ygh6s3l35" path="res://scripts/pawn_controller.gd" id="1_h27ep"]
|
||||||
[ext_resource type="Script" uid="uid://wye3mat5y5yg" path="res://scripts/pawn_body.gd" id="2_dn5ph"]
|
[ext_resource type="Script" uid="uid://wye3mat5y5yg" path="res://scripts/pawn_body.gd" id="2_dn5ph"]
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
[ext_resource type="Texture2D" uid="uid://dmnwtwu5v4voh" path="res://visuals/images/icons/detect mark.png" id="19_5822g"]
|
[ext_resource type="Texture2D" uid="uid://dmnwtwu5v4voh" path="res://visuals/images/icons/detect mark.png" id="19_5822g"]
|
||||||
[ext_resource type="AudioStream" uid="uid://cmnibhyxpag0a" path="res://audio/sounds/BeepBeep_high.wav" id="20_v7o58"]
|
[ext_resource type="AudioStream" uid="uid://cmnibhyxpag0a" path="res://audio/sounds/BeepBeep_high.wav" id="20_v7o58"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bqwpra5d1faxw" path="res://models/pawns/van_reily.gltf" id="21_dn5ph"]
|
[ext_resource type="PackedScene" uid="uid://bqwpra5d1faxw" path="res://models/pawns/van_reily.gltf" id="21_dn5ph"]
|
||||||
|
[ext_resource type="Script" uid="uid://cvuoq81ipid2o" path="res://scripts/pawn_input.gd" id="22_pnc3q"]
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y646j"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y646j"]
|
||||||
next_pass = ExtResource("4_8twd3")
|
next_pass = ExtResource("4_8twd3")
|
||||||
@@ -220,6 +221,26 @@ height = 1.0
|
|||||||
properties/0/path = NodePath(".:position")
|
properties/0/path = NodePath(".:position")
|
||||||
properties/0/spawn = true
|
properties/0/spawn = true
|
||||||
properties/0/replication_mode = 1
|
properties/0/replication_mode = 1
|
||||||
|
properties/1/path = NodePath(".:detecting")
|
||||||
|
properties/1/spawn = true
|
||||||
|
properties/1/replication_mode = 1
|
||||||
|
properties/2/path = NodePath(".:state")
|
||||||
|
properties/2/spawn = true
|
||||||
|
properties/2/replication_mode = 1
|
||||||
|
|
||||||
|
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_pnc3q"]
|
||||||
|
properties/0/path = NodePath("PawnInput:dir")
|
||||||
|
properties/0/spawn = true
|
||||||
|
properties/0/replication_mode = 1
|
||||||
|
properties/1/path = NodePath("PawnInput:pressed")
|
||||||
|
properties/1/spawn = true
|
||||||
|
properties/1/replication_mode = 1
|
||||||
|
properties/2/path = NodePath("PawnInput:just_pressed")
|
||||||
|
properties/2/spawn = true
|
||||||
|
properties/2/replication_mode = 1
|
||||||
|
properties/3/path = NodePath("PawnInput:just_released")
|
||||||
|
properties/3/spawn = true
|
||||||
|
properties/3/replication_mode = 1
|
||||||
|
|
||||||
[node name="Player" type="CharacterBody3D" groups=["combat"]]
|
[node name="Player" type="CharacterBody3D" groups=["combat"]]
|
||||||
physics_interpolation_mode = 1
|
physics_interpolation_mode = 1
|
||||||
@@ -356,3 +377,8 @@ max_db = -7.0
|
|||||||
|
|
||||||
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
|
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
|
||||||
replication_config = SubResource("SceneReplicationConfig_h27ep")
|
replication_config = SubResource("SceneReplicationConfig_h27ep")
|
||||||
|
|
||||||
|
[node name="PawnInput" type="MultiplayerSynchronizer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
replication_config = SubResource("SceneReplicationConfig_pnc3q")
|
||||||
|
script = ExtResource("22_pnc3q")
|
||||||
|
|||||||
114
test minimap.tres
Normal file
BIN
visuals/images/icons/enemy_trap_marker.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
41
visuals/images/icons/enemy_trap_marker.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bdo6instl47uf"
|
||||||
|
path.s3tc="res://.godot/imported/enemy_trap_marker.png-1c5b7ca7cafa418b711651f11cd5afcf.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://visuals/images/icons/enemy_trap_marker.png"
|
||||||
|
dest_files=["res://.godot/imported/enemy_trap_marker.png-1c5b7ca7cafa418b711651f11cd5afcf.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
|
||||||
BIN
visuals/images/icons/friendly_trap_marker.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
41
visuals/images/icons/friendly_trap_marker.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c6wke2vs8rfyd"
|
||||||
|
path.s3tc="res://.godot/imported/friendly_trap_marker.png-620ca5c48decec71f2637c2f41c9f3ba.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://visuals/images/icons/friendly_trap_marker.png"
|
||||||
|
dest_files=["res://.godot/imported/friendly_trap_marker.png-620ca5c48decec71f2637c2f41c9f3ba.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
|
||||||
BIN
visuals/images/icons/item_marker.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
41
visuals/images/icons/item_marker.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cwcbb81pte2jc"
|
||||||
|
path.s3tc="res://.godot/imported/item_marker.png-753303dddb4bc5ecbad519650475a1a6.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://visuals/images/icons/item_marker.png"
|
||||||
|
dest_files=["res://.godot/imported/item_marker.png-753303dddb4bc5ecbad519650475a1a6.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
|
||||||
BIN
visuals/images/icons/pawn_marker.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
41
visuals/images/icons/pawn_marker.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://co81os2o2bn28"
|
||||||
|
path.s3tc="res://.godot/imported/pawn_marker.png-317a3f6c0d3d6deb510efaddbd7ef0d2.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://visuals/images/icons/pawn_marker.png"
|
||||||
|
dest_files=["res://.godot/imported/pawn_marker.png-317a3f6c0d3d6deb510efaddbd7ef0d2.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
|
||||||
27
visuals/materials/maptile.tres
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=6 format=3 uid="uid://dljweksgxvqv6"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" uid="uid://dtq021j73hhht" path="res://visuals/shaders/maptile.gdshader" id="1_o0obt"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_o0obt"]
|
||||||
|
offsets = PackedFloat32Array(0)
|
||||||
|
colors = PackedColorArray(0, 0, 0, 1)
|
||||||
|
|
||||||
|
[sub_resource type="GradientTexture1D" id="GradientTexture1D_2ho3f"]
|
||||||
|
gradient = SubResource("Gradient_o0obt")
|
||||||
|
width = 1
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_2ho3f"]
|
||||||
|
offsets = PackedFloat32Array(0, 0.245, 0.56, 0.8025, 1)
|
||||||
|
colors = PackedColorArray(0, 0, 0.003921569, 1, 1.6845763e-06, 0, 0.54036456, 1, 0.0007814509, 0.22053, 0.7667125, 1, 0.00022246034, 0.29345024, 0.68059045, 1, 0, 0.49560964, 0.86397636, 1)
|
||||||
|
|
||||||
|
[sub_resource type="GradientTexture1D" id="GradientTexture1D_lvjv7"]
|
||||||
|
gradient = SubResource("Gradient_2ho3f")
|
||||||
|
width = 1024
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_o0obt")
|
||||||
|
shader_parameter/albedo_texture = SubResource("GradientTexture1D_2ho3f")
|
||||||
|
shader_parameter/height_gradient = SubResource("GradientTexture1D_lvjv7")
|
||||||
|
shader_parameter/vertical_offset = 9999.0
|
||||||
|
shader_parameter/vertical_range = 6.0
|
||||||
28
visuals/shaders/maptile.gdshader
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode blend_mix, depth_prepass_alpha, cull_disabled;
|
||||||
|
|
||||||
|
uniform sampler2D albedo_texture : filter_nearest;
|
||||||
|
uniform sampler2D height_gradient;
|
||||||
|
uniform float vertical_offset;
|
||||||
|
uniform float vertical_range : hint_range(1.0, 12.0, 1.0);
|
||||||
|
varying vec3 world_position;
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
// Called for every vertex the material is visible on.
|
||||||
|
world_position = (MODEL_MATRIX * vec4(VERTEX, 1)).xyz;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
float h = (world_position.y - vertical_offset)/vertical_range;
|
||||||
|
vec2 uv = vec2(clamp(h, 0.001, 1.0),0.5);
|
||||||
|
vec4 color = texture(height_gradient, uv);
|
||||||
|
float alpha = texture(albedo_texture, UV).a;
|
||||||
|
ALBEDO = color.rgb;
|
||||||
|
ALPHA = alpha;
|
||||||
|
// Called for every pixel the material is visible on.
|
||||||
|
}
|
||||||
|
|
||||||
|
//void light() {
|
||||||
|
// // Called for every pixel for every light affecting the material.
|
||||||
|
// // Uncomment to replace the default light processing function with this one.
|
||||||
|
//}
|
||||||
1
visuals/shaders/maptile.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dtq021j73hhht
|
||||||