Six MODELBEAST props: tank, valve, bucket, console, beacon, helm
Full queue lane this time (farm TCC fix verified working, all six via hunyuan3d_mlx). attach_model() swaps interactable primitives for fitted GLBs; place_prop() for world set-pieces; primitive fallbacks kept. Models are raw hunyuan output (~100MB total) — decimation pass later if repo weight matters. Integration passing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
BIN
assets/models/beacon.glb
Normal file
42
assets/models/beacon.glb.import
Normal file
@ -0,0 +1,42 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dtlq3fx567v8u"
|
||||
path="res://.godot/imported/beacon.glb-3513a65128c3782a8d43b86437e287f9.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/beacon.glb"
|
||||
dest_files=["res://.godot/imported/beacon.glb-3513a65128c3782a8d43b86437e287f9.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
assets/models/beacon_0.png
Normal file
|
After Width: | Height: | Size: 9.4 MiB |
43
assets/models/beacon_0.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://diu78yjigehbs"
|
||||
path="res://.godot/imported/beacon_0.png-e5f48377f73b61e37c6625831aa3b5fd.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "4a33f2c67335ed7b8bf1a3bbd378cbe8"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/beacon_0.png"
|
||||
dest_files=["res://.godot/imported/beacon_0.png-e5f48377f73b61e37c6625831aa3b5fd.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=1
|
||||
BIN
assets/models/beacon_1.png
Normal file
|
After Width: | Height: | Size: 7.5 MiB |
43
assets/models/beacon_1.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dra488vdpxom8"
|
||||
path="res://.godot/imported/beacon_1.png-73ed087984ac3fc3aaba6c09e24ef9c6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "c0403214754e84ef28778bd1b0de68ae"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/beacon_1.png"
|
||||
dest_files=["res://.godot/imported/beacon_1.png-73ed087984ac3fc3aaba6c09e24ef9c6.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=1
|
||||
BIN
assets/models/bucket.glb
Normal file
42
assets/models/bucket.glb.import
Normal file
@ -0,0 +1,42 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://b0qk358lfuwo5"
|
||||
path="res://.godot/imported/bucket.glb-e8ab7325004f9ad1443b5b4478e210c1.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/bucket.glb"
|
||||
dest_files=["res://.godot/imported/bucket.glb-e8ab7325004f9ad1443b5b4478e210c1.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
assets/models/bucket_0.png
Normal file
|
After Width: | Height: | Size: 5.9 MiB |
43
assets/models/bucket_0.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bue7suud3wre6"
|
||||
path="res://.godot/imported/bucket_0.png-71141ae25d0a814cdba97dd19050ef6e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "078934beeccb3b7aa8ae0b69063550c0"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/bucket_0.png"
|
||||
dest_files=["res://.godot/imported/bucket_0.png-71141ae25d0a814cdba97dd19050ef6e.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=1
|
||||
BIN
assets/models/bucket_1.png
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
43
assets/models/bucket_1.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c4goxcghhac82"
|
||||
path="res://.godot/imported/bucket_1.png-d241a160d46e4b5767d6b546f8846687.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "ff5efd4095b816714dc7f4776971640a"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/bucket_1.png"
|
||||
dest_files=["res://.godot/imported/bucket_1.png-d241a160d46e4b5767d6b546f8846687.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=1
|
||||
BIN
assets/models/console.glb
Normal file
42
assets/models/console.glb.import
Normal file
@ -0,0 +1,42 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://bt1vmagu0chn0"
|
||||
path="res://.godot/imported/console.glb-32a67e0988ed6b687d9ad73e565b165a.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/console.glb"
|
||||
dest_files=["res://.godot/imported/console.glb-32a67e0988ed6b687d9ad73e565b165a.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
assets/models/console_0.png
Normal file
|
After Width: | Height: | Size: 8.6 MiB |
43
assets/models/console_0.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cit6huc8vob6d"
|
||||
path="res://.godot/imported/console_0.png-bedd2d2a47e675a259632fa690d16b26.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "7ab037a42621a1c7736b2d0199c792a7"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/console_0.png"
|
||||
dest_files=["res://.godot/imported/console_0.png-bedd2d2a47e675a259632fa690d16b26.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=1
|
||||
BIN
assets/models/console_1.png
Normal file
|
After Width: | Height: | Size: 4.5 MiB |
43
assets/models/console_1.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://vjxdejsjc8yk"
|
||||
path="res://.godot/imported/console_1.png-214bb5bded1bbfac0e8a1e77cf12b018.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "32b866c21b764bf4db75811911839598"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/console_1.png"
|
||||
dest_files=["res://.godot/imported/console_1.png-214bb5bded1bbfac0e8a1e77cf12b018.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=1
|
||||
BIN
assets/models/helm.glb
Normal file
42
assets/models/helm.glb.import
Normal file
@ -0,0 +1,42 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://kf2nb5grxa00"
|
||||
path="res://.godot/imported/helm.glb-d8af94d005461fb60c69c9d06dcdda93.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/helm.glb"
|
||||
dest_files=["res://.godot/imported/helm.glb-d8af94d005461fb60c69c9d06dcdda93.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
assets/models/helm_0.png
Normal file
|
After Width: | Height: | Size: 6.4 MiB |
43
assets/models/helm_0.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bmxbyg878fmkt"
|
||||
path="res://.godot/imported/helm_0.png-3c378c3cdd0411bb9d86d4acf6b015a1.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "8a387cdd119acb84f8eccef6f2015ec8"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/helm_0.png"
|
||||
dest_files=["res://.godot/imported/helm_0.png-3c378c3cdd0411bb9d86d4acf6b015a1.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=1
|
||||
BIN
assets/models/helm_1.png
Normal file
|
After Width: | Height: | Size: 6.0 MiB |
43
assets/models/helm_1.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b70aqw174w0xr"
|
||||
path="res://.godot/imported/helm_1.png-627b65b67315758695a995026603b66c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "19d388e59cc2f30128bf86c603ffcdd5"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/helm_1.png"
|
||||
dest_files=["res://.godot/imported/helm_1.png-627b65b67315758695a995026603b66c.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=1
|
||||
BIN
assets/models/tank.glb
Normal file
42
assets/models/tank.glb.import
Normal file
@ -0,0 +1,42 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://c14ydwer1shn0"
|
||||
path="res://.godot/imported/tank.glb-76f82d6558c0a3a4a1c3aff1a8d57a88.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/tank.glb"
|
||||
dest_files=["res://.godot/imported/tank.glb-76f82d6558c0a3a4a1c3aff1a8d57a88.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
assets/models/tank_0.png
Normal file
|
After Width: | Height: | Size: 7.9 MiB |
43
assets/models/tank_0.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dad4sxe530ewq"
|
||||
path="res://.godot/imported/tank_0.png-0bfd23945c435e913f1b4de9f2941e60.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "1b9f110f69efd0db4d3e86a651542ff9"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/tank_0.png"
|
||||
dest_files=["res://.godot/imported/tank_0.png-0bfd23945c435e913f1b4de9f2941e60.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=1
|
||||
BIN
assets/models/tank_1.png
Normal file
|
After Width: | Height: | Size: 5.3 MiB |
43
assets/models/tank_1.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b0df8omsenlvx"
|
||||
path="res://.godot/imported/tank_1.png-cece4169e5d1203008084b4a9a2bb17f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "67f9f9e3f0b9eec29e7f975d81a9bfe7"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/tank_1.png"
|
||||
dest_files=["res://.godot/imported/tank_1.png-cece4169e5d1203008084b4a9a2bb17f.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=1
|
||||
BIN
assets/models/valve.glb
Normal file
42
assets/models/valve.glb.import
Normal file
@ -0,0 +1,42 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dlaqo3pxhylno"
|
||||
path="res://.godot/imported/valve.glb-ff1c2408c02630f6d2af244d320d3eb1.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/valve.glb"
|
||||
dest_files=["res://.godot/imported/valve.glb-ff1c2408c02630f6d2af244d320d3eb1.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
assets/models/valve_0.png
Normal file
|
After Width: | Height: | Size: 7.9 MiB |
43
assets/models/valve_0.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b7gop4bfdnib7"
|
||||
path="res://.godot/imported/valve_0.png-b4c1ad9c1ba5137b920b774fb8d47f3e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "2e9810e69c7d5d9de06a9110ab3d462e"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/valve_0.png"
|
||||
dest_files=["res://.godot/imported/valve_0.png-b4c1ad9c1ba5137b920b774fb8d47f3e.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=1
|
||||
BIN
assets/models/valve_1.png
Normal file
|
After Width: | Height: | Size: 6.1 MiB |
43
assets/models/valve_1.png.import
Normal file
@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bbn05qvmclmf1"
|
||||
path="res://.godot/imported/valve_1.png-4b77157fa13af74164771b3250639615.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "f2111d5ac282114066fe954dc57e3032"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/valve_1.png"
|
||||
dest_files=["res://.godot/imported/valve_1.png-4b77157fa13af74164771b3250639615.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=1
|
||||
67
src/main.gd
@ -268,6 +268,62 @@ func make_door(z: float) -> Node3D:
|
||||
return d
|
||||
|
||||
|
||||
var _models := {}
|
||||
|
||||
|
||||
func prop_scene(file: String) -> PackedScene:
|
||||
if _models.has(file):
|
||||
return _models[file]
|
||||
var path := "res://assets/models/" + file
|
||||
_models[file] = load(path) if FileAccess.file_exists(path) else null
|
||||
return _models[file]
|
||||
|
||||
|
||||
func _clamp_metals(p: Node3D) -> void:
|
||||
for mi in p.find_children("*", "MeshInstance3D", true, false):
|
||||
if mi.mesh:
|
||||
for si in mi.mesh.get_surface_count():
|
||||
var mt = mi.mesh.surface_get_material(si)
|
||||
if mt is BaseMaterial3D:
|
||||
mt.metallic = minf(mt.metallic, 0.2)
|
||||
|
||||
|
||||
func place_prop(file: String, pos: Vector3, target_h: float) -> bool:
|
||||
var ps := prop_scene(file)
|
||||
if not ps:
|
||||
return false
|
||||
_fit_prop(ps.instantiate(), pos, target_h)
|
||||
return true
|
||||
|
||||
|
||||
func attach_model(node: Node3D, file: String, target_h: float) -> bool:
|
||||
## swap an interactable's primitive mesh for a generated GLB (must be in tree)
|
||||
var ps := prop_scene(file)
|
||||
if not ps:
|
||||
return false
|
||||
for c in node.get_children():
|
||||
if c is MeshInstance3D:
|
||||
c.visible = false
|
||||
var p: Node3D = ps.instantiate()
|
||||
node.add_child(p)
|
||||
p.position = Vector3.ZERO
|
||||
_clamp_metals(p)
|
||||
var inv := node.global_transform.affine_inverse()
|
||||
var aabb := AABB()
|
||||
var first := true
|
||||
for mi in p.find_children("*", "MeshInstance3D", true, false):
|
||||
var b: AABB = (inv * mi.global_transform) * mi.get_aabb()
|
||||
aabb = b if first else aabb.merge(b)
|
||||
first = false
|
||||
if first:
|
||||
return true
|
||||
var sc := target_h / maxf(aabb.size.y, 0.01)
|
||||
p.scale = Vector3.ONE * sc
|
||||
var c2 := aabb.get_center()
|
||||
p.position = Vector3(-c2.x * sc, -aabb.position.y * sc, -c2.z * sc)
|
||||
return true
|
||||
|
||||
|
||||
var _post_scene: PackedScene = null
|
||||
var _post_checked := false
|
||||
|
||||
@ -283,11 +339,7 @@ func _fit_prop(p: Node3D, pos: Vector3, target_h: float) -> void:
|
||||
var b: AABB = mi.global_transform * mi.get_aabb()
|
||||
aabb = b if first else aabb.merge(b)
|
||||
first = false
|
||||
if mi.mesh:
|
||||
for si in mi.mesh.get_surface_count():
|
||||
var mt = mi.mesh.surface_get_material(si)
|
||||
if mt is BaseMaterial3D:
|
||||
mt.metallic = minf(mt.metallic, 0.2)
|
||||
_clamp_metals(p)
|
||||
if first:
|
||||
return
|
||||
var sc := target_h / maxf(aabb.size.y, 0.01)
|
||||
@ -507,7 +559,8 @@ func _build_objects() -> void:
|
||||
Vector3(7.2, 2.0, 25.8), PI / 2.0, 24, Color(1.0, 0.75, 0.3))
|
||||
|
||||
# --- segment D: valve, bucket, tank ---
|
||||
box(Vector3(-3.8, 1.4, 28), Vector3(0.5, 0.5, 0.5), Color(0.3, 0.5, 0.7)).material = glow(Color(0.25, 0.5, 0.9), 0.5)
|
||||
if not place_prop("valve.glb", Vector3(-3.5, 0, 28), 1.2):
|
||||
box(Vector3(-3.8, 1.4, 28), Vector3(0.5, 0.5, 0.5), Color(0.3, 0.5, 0.7)).material = glow(Color(0.25, 0.5, 0.9), 0.5)
|
||||
box(Vector3(-3.4, 0.9, 28), Vector3(0.12, 1.6, 0.12), Color(0.3, 0.5, 0.9)).material = glow(Color(0.3, 0.55, 1.0), 0.9) # stream
|
||||
var valve := ElementField.make("water", 1.3, Color(0.2, 0.4, 1.0, 0.10))
|
||||
valve.position = Vector3(-3.3, 0.8, 28)
|
||||
@ -517,11 +570,13 @@ func _build_objects() -> void:
|
||||
var bucket := I.Bucket.new()
|
||||
bucket.position = Vector3(-2.8, 0, 29)
|
||||
add_child(bucket)
|
||||
attach_model(bucket, "bucket.glb", 0.45)
|
||||
|
||||
var tank := I.Tank.new()
|
||||
tank.door = door4
|
||||
tank.position = Vector3(3.2, 0, 32.5)
|
||||
add_child(tank)
|
||||
attach_model(tank, "tank.glb", 1.35)
|
||||
tank.label = sign3d("GRAV TANK 0/2", Vector3(3.2, 1.9, 32.2))
|
||||
sign3d("SLUICE DOOR OPENS AT TANK 2/2. BUCKET LEAKS. HUSTLE.", Vector3(0, 2.7, 33.2), PI, 24)
|
||||
|
||||
|
||||
31
src/zones.gd
@ -187,6 +187,7 @@ static func hydro(m) -> void:
|
||||
var bucket2 := I.Bucket.new()
|
||||
bucket2.position = Vector3(22, 0, 50)
|
||||
m.add_child(bucket2)
|
||||
m.attach_model(bucket2, "bucket.glb", 0.45)
|
||||
m.box(Vector3(26, 2, 48.9), Vector3(0.3, 4, 5.8), Color.WHITE, null, false, "hydro_wall")
|
||||
m.box(Vector3(26, 2, 57.1), Vector3(0.3, 4, 5.8), Color.WHITE, null, false, "hydro_wall")
|
||||
m.box(Vector3(26, 3.5, 53), Vector3(0.3, 1, 2.4), Color.WHITE, null, false, "hydro_wall")
|
||||
@ -211,6 +212,7 @@ static func hydro(m) -> void:
|
||||
basin.position = Vector3(30, 0, 53)
|
||||
basin.on_full = func(): m.system_online("hydro")
|
||||
m.add_child(basin)
|
||||
m.attach_model(basin, "tank.glb", 1.35)
|
||||
basin.label = m.sign3d("MAINS PRESSURIZER 0/2", Vector3(29.4, 2.0, 52.4), -PI / 2.0, 26)
|
||||
m.sign3d("WATER MAINS PRESSURIZER — FEED IT AND THE SHIP DRINKS AGAIN.",
|
||||
Vector3(29, 2.9, 53.8), -PI / 2.0, 22, Color(0.5, 1.0, 0.5))
|
||||
@ -242,6 +244,7 @@ static func comms(m) -> void:
|
||||
"radio", 4.5, Color(0.8, 0.4, 1.0, 0.08), "broadcasting")
|
||||
beacon.position = Vector3(-7, 0.8, 64)
|
||||
m.add_child(beacon)
|
||||
m.attach_model(beacon, "beacon.glb", 0.5)
|
||||
m.box(Vector3(-7, 0.4, 64), Vector3(0.8, 0.8, 0.8), Color.WHITE, null, false, "comms_greeble")
|
||||
m.sign3d("PORTABLE BEACON — CHARGE TO BROADCAST.\nRADIO DOES NOT CARE ABOUT WALLS.", Vector3(-7, 2.2, 64.5), PI, 24, Color(0.8, 0.5, 1.0))
|
||||
|
||||
@ -289,7 +292,8 @@ static func bridge(m) -> void:
|
||||
m.add_child(o)
|
||||
|
||||
# captain's console + core socket
|
||||
m.box(Vector3(4.5, 0.6, 75.5), Vector3(3.4, 1.2, 1.0), Color(0.35, 0.25, 0.18))
|
||||
if not m.place_prop("console.glb", Vector3(4.5, 0, 75.7), 1.15):
|
||||
m.box(Vector3(4.5, 0.6, 75.5), Vector3(3.4, 1.2, 1.0), Color(0.35, 0.25, 0.18))
|
||||
var console := I.Trigger.new()
|
||||
console.prompt_text = "INSERT CORE PROCESSOR (ORBIT CORRECTION)"
|
||||
console.position = Vector3(4.5, 1.2, 75.5)
|
||||
@ -311,18 +315,19 @@ static func bridge(m) -> void:
|
||||
m.sign3d("DIAGNOSTIC KIOSK", Vector3(7.5, 1.9, 67.5), PI, 22)
|
||||
|
||||
# the helm — visible from day one, yours only at the end
|
||||
m.box(Vector3(2.2, 0.5, 77.0), Vector3(0.5, 1.0, 0.5), Color(0.3, 0.22, 0.16))
|
||||
var wheel := MeshInstance3D.new()
|
||||
var wm := TorusMesh.new()
|
||||
wm.inner_radius = 0.28
|
||||
wm.outer_radius = 0.42
|
||||
wheel.mesh = wm
|
||||
wheel.rotation.x = PI / 2.0
|
||||
wheel.position = Vector3(2.2, 1.25, 77.0)
|
||||
var wmat := StandardMaterial3D.new()
|
||||
wmat.albedo_color = Color(0.55, 0.35, 0.15)
|
||||
wheel.material_override = wmat
|
||||
m.add_child(wheel)
|
||||
if not m.place_prop("helm.glb", Vector3(2.2, 0, 77.0), 1.5):
|
||||
m.box(Vector3(2.2, 0.5, 77.0), Vector3(0.5, 1.0, 0.5), Color(0.3, 0.22, 0.16))
|
||||
var wheel := MeshInstance3D.new()
|
||||
var wm := TorusMesh.new()
|
||||
wm.inner_radius = 0.28
|
||||
wm.outer_radius = 0.42
|
||||
wheel.mesh = wm
|
||||
wheel.rotation.x = PI / 2.0
|
||||
wheel.position = Vector3(2.2, 1.25, 77.0)
|
||||
var wmat := StandardMaterial3D.new()
|
||||
wmat.albedo_color = Color(0.55, 0.35, 0.15)
|
||||
wheel.material_override = wmat
|
||||
m.add_child(wheel)
|
||||
var helm := I.Trigger.new()
|
||||
helm.prompt_text = "TAKE THE HELM"
|
||||
helm.position = Vector3(2.2, 1.2, 77.0)
|
||||
|
||||