Compare commits

..

No commits in common. "interiors-overhaul" and "main" have entirely different histories.

105 changed files with 743 additions and 1147 deletions

2
.gitattributes vendored
View File

@ -5,5 +5,3 @@
*.ttf filter=lfs diff=lfs merge=lfs -text
*.scn filter=lfs diff=lfs merge=lfs -text
*.res filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text

View File

@ -4,22 +4,23 @@ importer="texture"
type="CompressedTexture2D"
uid="uid://bqih4uf556hba"
path.s3tc="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.ctex"
path.etc2="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://icon.png"
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.ctex"]
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.ctex", "res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://chujdd7dvyclj"
path.s3tc="res://.godot/imported/detail_albedo.png-9f445a992dc42ff5e245033c09348a9d.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/detail_albedo.png"
dest_files=["res://.godot/imported/detail_albedo.png-9f445a992dc42ff5e245033c09348a9d.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b6qji7ybqaga2"
path.s3tc="res://.godot/imported/detail_displacement.png-47cde77fb53fc7ae6babfbbfef6cdb4f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/detail_displacement.png"
dest_files=["res://.godot/imported/detail_displacement.png-47cde77fb53fc7ae6babfbbfef6cdb4f.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://waqtv8flqslo"
path.s3tc="res://.godot/imported/detail_normal.png-7595efd28a96c6bf905bfa3c115551eb.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/detail_normal.png"
dest_files=["res://.godot/imported/detail_normal.png-7595efd28a96c6bf905bfa3c115551eb.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://interior/base/dungeon_01/detail_normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://drq7jupbmwjil"
path.s3tc="res://.godot/imported/detail_roughness.png-a65497af25f070db34e2dc4c6cdc9e62.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/detail_roughness.png"
dest_files=["res://.godot/imported/detail_roughness.png-a65497af25f070db34e2dc4c6cdc9e62.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c18mqalexrvc7"
path.s3tc="res://.godot/imported/floor_albedo.png-599373c4c817157e929da39c9a51e0ca.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/floor_albedo.png"
dest_files=["res://.godot/imported/floor_albedo.png-599373c4c817157e929da39c9a51e0ca.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/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

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dfqtk4fo4t06c"
path.s3tc="res://.godot/imported/floor_displacement.png-f55e2b97692cdec8c2f27530099f39e7.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/floor_displacement.png"
dest_files=["res://.godot/imported/floor_displacement.png-f55e2b97692cdec8c2f27530099f39e7.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://tjepq8p30cxx"
path.s3tc="res://.godot/imported/floor_normal.png-7eb4d134761af85dcd1aaa7f0004dc65.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/floor_normal.png"
dest_files=["res://.godot/imported/floor_normal.png-7eb4d134761af85dcd1aaa7f0004dc65.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://interior/base/dungeon_01/floor_normal.png"
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
interior/floors/dungeon_01/floor_orm.png (Stored with Git LFS)

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://gry3ow88pjud"
path.s3tc="res://.godot/imported/floor_orm.png-ad734700b85932ea8fe8e780643641b4.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/floor_orm.png"
dest_files=["res://.godot/imported/floor_orm.png-ad734700b85932ea8fe8e780643641b4.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvmabp7btg0wo"
path.s3tc="res://.godot/imported/pillar_albedo.png-5307fa2f26f1bff72deafa48c97429c8.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/pillar_albedo.png"
dest_files=["res://.godot/imported/pillar_albedo.png-5307fa2f26f1bff72deafa48c97429c8.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://y3fjjegrdm5t"
path.s3tc="res://.godot/imported/pillar_displacement.png-86e9892e28aca9f87c864a28e6dfa2b7.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/pillar_displacement.png"
dest_files=["res://.godot/imported/pillar_displacement.png-86e9892e28aca9f87c864a28e6dfa2b7.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Binary file not shown.

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dgteu01p0yvb1"
path.s3tc="res://.godot/imported/pillar_normal.png-3acce01d6d5a45e72d80bc85d1cccfeb.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://interior/floors/dungeon_01/pillar_normal.png"
dest_files=["res://.godot/imported/pillar_normal.png-3acce01d6d5a45e72d80bc85d1cccfeb.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://interior/base/dungeon_01/pillar_normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bm2n01vq8gfr6"
path="res://.godot/imported/pillar_roughness.png-0687f96b048e5362061de3455df15e28.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://interior/floors/dungeon_01/pillar_roughness.png"
dest_files=["res://.godot/imported/pillar_roughness.png-0687f96b048e5362061de3455df15e28.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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
interior/floors/dungeon_01/tiles.glb (Stored with Git LFS)

Binary file not shown.

View File

@ -1,209 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://4bd55k678gi7"
path="res://.godot/imported/tiles.glb-14a9c594afd12965ca2410ae30c0dee5.scn"
[deps]
source_file="res://interior/floors/dungeon_01/tiles.glb"
dest_files=["res://.godot/imported/tiles.glb-14a9c594afd12965ca2410ae30c0dee5.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=false
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"Detail": {
"use_external/enabled": true,
"use_external/path": "res://interior/base/dungeon_01/detail_material.res"
},
"Floor": {
"use_external/enabled": true,
"use_external/path": "res://interior/base/dungeon_01/floor_material.res"
},
"Pillar": {
"use_external/enabled": true,
"use_external/path": "res://interior/base/dungeon_01/pillar_material.res"
}
},
"meshes": {
"tiles_corner_north_east": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_corner_north_east.res"
},
"tiles_corner_north_west": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_corner_north_west.res"
},
"tiles_corner_south_east": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_corner_south_east.res"
},
"tiles_corner_south_west": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_corner_south_west.res"
},
"tiles_edge_east": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_edge_east.res"
},
"tiles_edge_north": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_edge_north.res"
},
"tiles_edge_south": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_edge_south.res"
},
"tiles_edge_west": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_edge_west.res"
},
"tiles_endcap_east": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_endcap_east.res"
},
"tiles_endcap_north": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_endcap_north.res"
},
"tiles_endcap_south": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_endcap_south.res"
},
"tiles_endcap_west": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_endcap_west.res"
},
"tiles_fill": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_fill.res"
},
"tiles_island": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_island.res"
},
"tiles_path_horizontal": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_path_horizontal.res"
},
"tiles_path_vertical": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/base/dungeon_01/tiles_path_vertical.res"
}
}
}
gltf/embedded_image_handling=0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
interior/floors/dungeon_01/tiles_fill.res (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,49 +0,0 @@
class_name InteriorFloor extends Resource
@export
var corner_north_east_mesh: Mesh = null
@export
var corner_north_west_mesh: Mesh = null
@export
var corner_south_east_mesh: Mesh = null
@export
var corner_south_west_mesh: Mesh = null
@export
var edge_east_mesh: Mesh = null
@export
var edge_north_mesh: Mesh = null
@export
var edge_south_mesh: Mesh = null
@export
var edge_west_mesh: Mesh = null
@export
var endcap_east_mesh: Mesh = null
@export
var endcap_north_mesh: Mesh = null
@export
var endcap_south_mesh: Mesh = null
@export
var endcap_west_mesh: Mesh = null
@export
var fill_mesh: Mesh = null
@export
var island_mesh: Mesh = null
@export
var path_horizontal_mesh: Mesh = null
@export
var path_vertical_mesh: Mesh = null

BIN
interior/floors/wood_platforms/tiles.glb (Stored with Git LFS)

Binary file not shown.

View File

@ -1,145 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://diwceah8n7mya"
path="res://.godot/imported/tiles.glb-06c35114c4978742b880d24bfe15f3d9.scn"
[deps]
source_file="res://interior/floors/wood_platforms/tiles.glb"
dest_files=["res://.godot/imported/tiles.glb-06c35114c4978742b880d24bfe15f3d9.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"meshes": {
"tiles_corner_north_east": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_corner_north_east.res"
},
"tiles_corner_north_west": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_corner_north_west.res"
},
"tiles_corner_south_east": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_corner_south_east.res"
},
"tiles_corner_south_west": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_corner_south_west.res"
},
"tiles_endcap_east&edge_east": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_endcap_east&edge_east.res"
},
"tiles_endcap_north&edge_north": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_endcap_north&edge_north.res"
},
"tiles_endcap_south&edge_south": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_endcap_south&edge_south.res"
},
"tiles_endcap_west&edge_west": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_endcap_west&edge_west.res"
},
"tiles_fill&path_horizontal": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_fill&path_horizontal.res"
},
"tiles_island": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_island.res"
},
"tiles_path_vertical": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://interior/floors/wood_platforms/tiles_path_vertical.res"
}
}
}
gltf/embedded_image_handling=1

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,200 +2,173 @@ class_name InteriorMap extends Node3D
const _CHUNK_SIZE := 32
const _HALF_PI := PI / 2
const _GRID_ORIGIN := Vector2(0.5, 0.5)
##
## Cardinal orientation referencing the direction of a tile.
##
##
enum FloorTile {
ISLAND,
ENDCAP_WEST,
ENDCAP_NORTH,
CORNER_NORTH_WEST,
ENDCAP_EAST,
PATH_HORIZONTAL,
CORNER_NORTH_EAST,
EDGE_NORTH,
ENDCAP_SOUTH,
CORNER_SOUTH_WEST,
PATH_VERTICAL,
EDGE_WEST,
CORNER_SOUTH_EAST,
EDGE_SOUTH,
EDGE_EAST,
FILL,
}
enum Orientation {
EAST = 2 ** 0,
SOUTH = 2 ** 1,
WEST = 2 ** 2,
NORTH = 2 ** 3,
NORTH,
EAST,
SOUTH,
WEST,
}
##
## Baked block of meshes making up a segment of the grid.
##
class Chunk:
var _coordinates := Vector2i.ZERO
var _floor_meshes: Array[Mesh] = []
var _interior_map: InteriorMap = null
var _floor_orientation := PackedInt32Array()
var _renderables_by_mesh := {}
var _multi_mesh_instances: Array[MultiMeshInstance] = []
func _init(interior_map: InteriorMap, coordinates: Vector2i) -> void:
_interior_map = interior_map
_coordinates = coordinates
var _wall_meshes: Array[Mesh] = []
var _wall_orientation := PackedInt32Array()
func _init() -> void:
var buffer_size := _CHUNK_SIZE * _CHUNK_SIZE
_floor_meshes.resize(buffer_size)
_floor_orientation.resize(buffer_size)
_wall_meshes.resize(buffer_size)
_wall_orientation.resize(buffer_size)
##
## Invalidates the mesh block, re-baking its contents from the current mesh data set.
##
func invalidate() -> void:
_renderables_by_mesh.clear()
func invalidate(interior_map: InteriorMap, coordinate: Vector2i) -> void:
# TODO: Once this is all lowered into native code, look for ways to parallelize the loops.
for multi_mesh_instance in _multi_mesh_instances:
RenderingServer.free_rid(multi_mesh_instance._instance_rid)
RenderingServer.free_rid(multi_mesh_instance._multimesh_rid)
var floor_map := _interior_map._floor_map
var map_size := _interior_map.size
var offset := _coordinates * _CHUNK_SIZE
var positions_by_mesh := {}
var map_area := Rect2i(Vector2.ZERO, map_size)
_multi_mesh_instances.clear()
for y in _CHUNK_SIZE:
var map_row_offset := (map_size.y * y)
# Normalize mesh instance data for the chunk.
var transforms_by_mesh := {}
var grid_size := interior_map.size
var half_pi := PI / 2
for x in _CHUNK_SIZE:
var map_coordinates := offset + Vector2i(x, y)
for i in _floor_meshes.size():
var mesh := _floor_meshes[i]
if map_area.has_point(map_coordinates):
var interior_floor := floor_map[map_row_offset + map_coordinates.x]
if mesh != null:
if not(mesh in transforms_by_mesh):
transforms_by_mesh[mesh] = []
if interior_floor != null:
var tile := 0
transforms_by_mesh[mesh].append(Transform3D(
Basis.IDENTITY.rotated(Vector3.UP, half_pi * _floor_orientation[i]), Vector3(
(float(coordinate.x * _CHUNK_SIZE) + (i % _CHUNK_SIZE)) -
(float(grid_size.x) * _GRID_ORIGIN.x) + 0.5, 0.0,
(float(coordinate.y * _CHUNK_SIZE) + (i / _CHUNK_SIZE)) -
(float(grid_size.y) * _GRID_ORIGIN.y) + 0.5)))
for i in Orientation.values().size():
var map_neighbor := map_coordinates + Vector2i(
roundi(cos(i * PI / 2.0)), roundi(sin(i * PI / 2.0)))
for i in _wall_meshes.size():
var mesh := _wall_meshes[i]
if map_area.has_point(map_neighbor):
tile += int(floor_map[(map_size.y * map_neighbor.y) + map_neighbor.x] == interior_floor) * 2 ** i
if mesh != null:
if not(mesh in transforms_by_mesh):
transforms_by_mesh[mesh] = []
var mesh: Mesh = null
transforms_by_mesh[mesh].append(Transform3D(
Basis.IDENTITY.rotated(Vector3.UP, half_pi * _wall_orientation[i]), Vector3(
(float(coordinate.x * _CHUNK_SIZE) + (i % _CHUNK_SIZE)) -
(float(grid_size.x) * _GRID_ORIGIN.x) + 0.5, 0.0,
(float(coordinate.y * _CHUNK_SIZE) + (i / _CHUNK_SIZE)) -
(float(grid_size.y) * _GRID_ORIGIN.y) + 0.5)))
match tile:
FloorTile.ISLAND: mesh = interior_floor.island_mesh
FloorTile.ENDCAP_WEST: mesh = interior_floor.endcap_west_mesh
FloorTile.ENDCAP_NORTH: mesh = interior_floor.endcap_north_mesh
FloorTile.CORNER_NORTH_WEST: mesh = interior_floor.corner_north_west_mesh
FloorTile.ENDCAP_EAST: mesh = interior_floor.endcap_east_mesh
FloorTile.PATH_HORIZONTAL: mesh = interior_floor.path_horizontal_mesh
FloorTile.CORNER_NORTH_EAST: mesh = interior_floor.corner_north_east_mesh
FloorTile.EDGE_NORTH: mesh = interior_floor.edge_north_mesh
FloorTile.ENDCAP_SOUTH: mesh = interior_floor.endcap_south_mesh
FloorTile.CORNER_SOUTH_WEST: mesh = interior_floor.corner_south_west_mesh
FloorTile.PATH_VERTICAL: mesh = interior_floor.path_vertical_mesh
FloorTile.EDGE_WEST: mesh = interior_floor.edge_west_mesh
FloorTile.CORNER_SOUTH_EAST: mesh = interior_floor.corner_south_east_mesh
FloorTile.EDGE_SOUTH: mesh = interior_floor.edge_south_mesh
FloorTile.EDGE_EAST: mesh = interior_floor.edge_east_mesh
FloorTile.FILL: mesh = interior_floor.fill_mesh
# (Re)-bake into multimesh instances for the chunk.
var scenario_rid := interior_map.get_world_3d().scenario
var global_transform := interior_map.global_transform
if mesh != null:
if not(mesh in positions_by_mesh):
positions_by_mesh[mesh] = PackedVector2Array()
for chunk_mesh in transforms_by_mesh:
var multi_mesh_instance := MultiMeshInstance.new(
scenario_rid, chunk_mesh.get_rid(), transforms_by_mesh[chunk_mesh])
positions_by_mesh[mesh].append(Vector2(x, y))
multi_mesh_instance.set_offset(global_transform)
_multi_mesh_instances.append(multi_mesh_instance)
# (Re)-bake tiles into multimesh instances for the chunk.
var scenario_rid := _interior_map.get_world_3d().scenario
##
## Sets the floor mesh in the chunk at the location relative [code]coordinatess[/code] to
## [code]mesh[/code].
##
## *Note* that [method Chunk.invalidate] must be called at some point after to visually update
## the chunk.
##
func set_floor_mesh(coordinates: Vector2i, orientation: Orientation, mesh: Mesh) -> void:
var index := (_CHUNK_SIZE * coordinates.y) + coordinates.x
for mesh in positions_by_mesh:
var positions: PackedVector2Array = positions_by_mesh[mesh]
_floor_orientation[index] = orientation
_floor_meshes[index] = mesh
if not(positions.is_empty()):
var position_count := positions.size()
var renderable := Renderable.new(scenario_rid, mesh.get_rid(), position_count)
##
## Sets the wall mesh in the chunk at the location relative [code]coordinatess[/code] to
## [code]mesh[/code].
##
## *Note* that [method Chunk.invalidate] must be called at some point after to visually update
## the chunk.
##
func set_wall_mesh(coordinates: Vector2i, orientation: Orientation, mesh: Mesh) -> void:
var index := (_CHUNK_SIZE * coordinates.y) + coordinates.x
for i in position_count:
var position := positions[i]
renderable.set_instance_transform(i, Transform3D(Basis.IDENTITY, Vector3(
((float(offset.x) + position.x) - (float(map_size.x) * _GRID_ORIGIN.x)) + 0.5,
0.0,
((float(offset.y) + position.y) - (float(map_size.y) * _GRID_ORIGIN.y)) + 0.5)))
_renderables_by_mesh[mesh] = renderable
func set_transform(transform: Transform3D) -> void:
for mesh in _renderables_by_mesh:
_renderables_by_mesh[mesh].set_transform(transform)
func set_visible(visible: bool) -> void:
for mesh in _renderables_by_mesh:
_renderables_by_mesh[mesh].set_visible(visible)
_wall_orientation[index] = orientation
_wall_meshes[index] = mesh
##
## Specialized multi-mesh instance convenience for use within the tile grid and its chunks.
##
##
class Renderable:
class MultiMeshInstance:
var _instance_rid := RID()
var _multimesh_rid := RID()
func _init(scenario_rid: RID, mesh_rid: RID, transform_count: int) -> void:
func _init(scenario_rid: RID, mesh_rid: RID, transforms: Array) -> void:
_multimesh_rid = RenderingServer.multimesh_create()
_instance_rid = RenderingServer.instance_create2(_multimesh_rid, scenario_rid)
RenderingServer.multimesh_set_mesh(_multimesh_rid, mesh_rid)
var transform_count := transforms.size()
RenderingServer.multimesh_allocate_data(_multimesh_rid,
transform_count, RenderingServer.MULTIMESH_TRANSFORM_3D, true)
func _notification(what: int) -> void:
match what:
NOTIFICATION_PREDELETE:
RenderingServer.free_rid(_instance_rid)
RenderingServer.free_rid(_multimesh_rid)
for i in transform_count:
RenderingServer.multimesh_instance_set_transform(_multimesh_rid, i, transforms[i])
##
## Sets the transform of the instance to [code]offset[/code].
##
##
func set_instance_transform(instance_index: int, transform: Transform3D) -> void:
RenderingServer.multimesh_instance_set_transform(_multimesh_rid, instance_index, transform)
func set_offset(offset: Transform3D) -> void:
RenderingServer.instance_set_transform(_instance_rid, offset)
##
## Sets the visibility of the instance to [code]is_visible[/code].
##
##
func set_visible(visible: bool) -> void:
RenderingServer.instance_set_visible(_instance_rid, visible)
##
##
##
func set_transform(transform: Transform3D) -> void:
RenderingServer.instance_set_transform(_instance_rid, transform)
func set_visible(is_visible: bool) -> void:
RenderingServer.instance_set_visible(_instance_rid, is_visible)
var _chunks: Array[Chunk] = []
var _chunks_size := Vector2i.ZERO
var _floor_map: Array[InteriorFloor] = []
##
## Size of the tile grid (in engine units).
##
@export
var size: Vector2i:
set(value):
var chunk_size_factor := float(_CHUNK_SIZE)
_chunks.resize(int(ceilf(value.x / chunk_size_factor) * ceilf(value.y / chunk_size_factor)))
for i in _chunks.size():
_chunks[i] = Chunk.new()
_chunks_size = Vector2i((value / float(_CHUNK_SIZE)).ceil())
_floor_map.resize(value.x * value.y)
_chunks.resize(_chunks_size.x * _chunks_size.y)
for y in _chunks_size.y:
for x in _chunks_size.x:
_chunks[(y * _CHUNK_SIZE) + x] = Chunk.new(self, Vector2i(x, y))
size = value
func _get_chunk(chunk_coordinate: Vector2i) -> Chunk:
@ -205,11 +178,13 @@ func _notification(what: int) -> void:
match what:
NOTIFICATION_TRANSFORM_CHANGED:
for chunk in _chunks:
chunk.set_transform(global_transform)
for multi_mesh_instance in chunk._multi_mesh_instances:
multi_mesh_instance.set_offset_transform(global_transform)
NOTIFICATION_VISIBILITY_CHANGED:
for chunk in _chunks:
chunk.set_visible(visible)
for multi_mesh_instance in chunk._multi_mesh_instances:
multi_mesh_instance.set_visible(visible)
##
## Clears the entirety of the tile grid to only contain tiles of instance [code]tile[/code] pointing
@ -217,17 +192,46 @@ func _notification(what: int) -> void:
##
## For clearing a specific region of the mesh grid, see [method fill_mesh].
##
func clear() -> void:
for i in _floor_map.size():
_floor_map[i] = null
func clear_tiles(orientation: Orientation, tile: InteriorTile) -> void:
if tile == null:
for y in size.y:
for x in size.x:
var coordinates := Vector2i(x, y)
var chunk := _get_chunk(coordinates / _CHUNK_SIZE)
var chunk_coordinates := coordinates % _CHUNK_SIZE
chunk.set_floor_mesh(chunk_coordinates, orientation, null)
chunk.set_wall_mesh(chunk_coordinates, orientation, null)
else:
var mesh := tile.mesh
match tile.kind:
InteriorTile.Kind.FLOOR:
for y in size.y:
for x in size.x:
var coordinate := Vector2i(x, y)
_get_chunk(coordinate / _CHUNK_SIZE).\
set_floor_mesh(coordinate % _CHUNK_SIZE, orientation, mesh)
InteriorTile.Kind.WALL:
for y in size.y:
for x in size.x:
var coordinate := Vector2i(x, y)
_get_chunk(coordinate / _CHUNK_SIZE).\
set_floor_mesh(coordinate % _CHUNK_SIZE, orientation, mesh)
for y in _chunks_size.y:
for x in _chunks_size.x:
_get_chunk(Vector2i(x, y)).invalidate()
var chunk_coordinate := Vector2i(x, y)
_get_chunk(chunk_coordinate).invalidate(self, chunk_coordinate)
##
## Clears the region of the tile grid at [code]area[/code] to only contain instances of
## [code]interior_floor[/code].
## [code]tile[/code] pointing in the orientation of [code]orientation[/code].
##
## *Note* that [code]area[/code] *must* be within the area of the of the mesh grid, where
## [code]Vector2i.ZERO[/code] is the top-left and [member size] [code]- 1[/code] is the bottom-
@ -235,25 +239,70 @@ func clear() -> void:
##
## For clearing the whole of the mesh grid, see [method clear_mesh].
##
func fill_floor(area: Rect2i, interior_floor: InteriorFloor) -> void:
assert(Rect2i(Vector2i.ZERO, size).encloses(area), "area must be within grid")
func fill_tiles(area: Rect2i, orientation: Orientation, tile: InteriorTile) -> void:
assert(get_area().encloses(area), "area must be within grid")
var filled_chunks := BitMap.new()
filled_chunks.resize(_chunks_size)
for y in range(area.position.y, area.end.y):
for x in range(area.position.x, area.end.x):
_floor_map[(size.y * (y / _CHUNK_SIZE)) + (x / _CHUNK_SIZE)] = interior_floor
if tile == null:
for y in range(area.position.y, area.end.y):
for x in range(area.position.x, area.end.x):
var coordinates := Vector2i(x, y)
var chunk_coordinates := coordinates / _CHUNK_SIZE
var chunk := _get_chunk(coordinates / _CHUNK_SIZE)
var local_coordinates := coordinates % _CHUNK_SIZE
chunk.set_floor_mesh(local_coordinates, orientation, null)
chunk.set_wall_mesh(local_coordinates, orientation, null)
filled_chunks.set_bitv(chunk_coordinates, true)
else:
var mesh := tile.mesh
if tile.fixed_orientation:
orientation = Orientation.NORTH
match tile.kind:
InteriorTile.Kind.FLOOR:
for y in range(area.position.y, area.end.y):
for x in range(area.position.x, area.end.x):
var coordinate := Vector2i(x, y)
var chunk_coordinate := coordinate / _CHUNK_SIZE
_get_chunk(chunk_coordinate).set_floor_mesh(
coordinate % _CHUNK_SIZE, orientation, mesh)
filled_chunks.set_bitv(chunk_coordinate, true)
InteriorTile.Kind.WALL:
for y in range(area.position.y, area.end.y):
for x in range(area.position.x, area.end.x):
var coordinate := Vector2i(x, y)
var chunk_coordinate := coordinate / _CHUNK_SIZE
_get_chunk(chunk_coordinate).set_wall_mesh(
coordinate % _CHUNK_SIZE, orientation, mesh)
filled_chunks.set_bitv(chunk_coordinate, true)
for y in _chunks_size.y:
for x in _chunks_size.x:
if filled_chunks.get_bit(x, y):
_get_chunk(Vector2i(x, y)).invalidate()
var chunk_coordinate := Vector2i(x, y)
_get_chunk(chunk_coordinate).invalidate(self, chunk_coordinate)
##
## Plots a single tile at [code]coordinates[/code] to be an instance of [code]interior_floor[/code],
## overwriting whatever it previously contained.
## Returns the area of the interior map based on its current size.
##
func get_area() -> Rect2i:
return Rect2i(Vector2i.ZERO, size)
##
## Plots a single tile at [code]coordinates[/code] to be an instance of [code]tile[/code] pointing
## in the orientation of [code]orientation[/code], overwriting whatever it previously contained.
##
## *Note* that [code]coordinates[/code] *must* be within the area of the of the mesh grid, where
## [code]Vector2i.ZERO[/code] is the top-left and [member size] [code]- 1[/code] is the bottom-
@ -261,9 +310,30 @@ func fill_floor(area: Rect2i, interior_floor: InteriorFloor) -> void:
##
## For bulk-setting many meshes at once, see [method fill_mesh] and [method clear_mesh].
##
func plot_floor(coordinates: Vector2i, interior_floor: InteriorFloor) -> void:
assert(Rect2i(Vector2i.ZERO, size).has_point(coordinates), "coordinate must be within grid")
func plot_tile(coordinates: Vector2i, orientation: Orientation, tile: InteriorTile) -> void:
assert(get_area().has_point(coordinates), "coordinate must be within grid")
_floor_map[(size.y * coordinates.y) + coordinates.x] = interior_floor
var chunk_coordinates := coordinates / _CHUNK_SIZE
var chunk := _get_chunk(chunk_coordinates)
_get_chunk(coordinates / _CHUNK_SIZE).invalidate()
if tile == null:
var local_coordinates := coordinates % _CHUNK_SIZE
chunk.set_floor_mesh(local_coordinates, orientation, null)
chunk.set_wall_mesh(local_coordinates, orientation, null)
chunk.invalidate(self, chunk_coordinates)
else:
var mesh := tile.mesh
if tile.fixed_orientation:
orientation = Orientation.NORTH
match tile.kind:
InteriorTile.Kind.FLOOR:
chunk.set_floor_mesh(coordinates % _CHUNK_SIZE, orientation, mesh)
chunk.invalidate(self, chunk_coordinates)
InteriorTile.Kind.WALL:
chunk.set_wall_mesh(coordinates % _CHUNK_SIZE, orientation, mesh)
chunk.invalidate(self, chunk_coordinates)

29
interior/interior_tile.gd Normal file
View File

@ -0,0 +1,29 @@
class_name InteriorTile extends Resource
##
## Identifier for the kind of interior tile.
##
enum Kind {
FLOOR,
WALL,
}
##
## Flag for determining if the tile is affected by orientations specified in an [InteriorMap].
##
@export
var fixed_orientation := false
##
## See [enum Kind].
##
## Interior tiles of different kinds will not conflict when placing them.
##
@export
var kind := Kind.FLOOR
##
## Used to visualize the interior tile.
##
@export
var mesh: Mesh = null

BIN
interior/tiles/dungeon_01_pipehole_tile.res (Stored with Git LFS) Normal file

Binary file not shown.

BIN
interior/tiles/dungeon_01_tiling_tile.res (Stored with Git LFS) Normal file

Binary file not shown.

BIN
interior/tiles/limestone_dungeon/hole_albedo.png (Stored with Git LFS) Executable file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://3m7gvnsmb4g"
path.s3tc="res://.godot/imported/hole_albedo.png-ef88dfc602c85c58e849d6654804eb67.s3tc.ctex"
path.etc2="res://.godot/imported/hole_albedo.png-ef88dfc602c85c58e849d6654804eb67.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/hole_albedo.png"
dest_files=["res://.godot/imported/hole_albedo.png-ef88dfc602c85c58e849d6654804eb67.s3tc.ctex", "res://.godot/imported/hole_albedo.png-ef88dfc602c85c58e849d6654804eb67.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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
interior/tiles/limestone_dungeon/hole_height.png (Stored with Git LFS) Executable file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8p7qvcrfsio7"
path.s3tc="res://.godot/imported/hole_height.png-875fd265b9470b3f52656ba603fc8eae.s3tc.ctex"
path.etc2="res://.godot/imported/hole_height.png-875fd265b9470b3f52656ba603fc8eae.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/hole_height.png"
dest_files=["res://.godot/imported/hole_height.png-875fd265b9470b3f52656ba603fc8eae.s3tc.ctex", "res://.godot/imported/hole_height.png-875fd265b9470b3f52656ba603fc8eae.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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
interior/tiles/limestone_dungeon/hole_material.res (Stored with Git LFS) Normal file

Binary file not shown.

BIN
interior/tiles/limestone_dungeon/hole_normal.png (Stored with Git LFS) Executable file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c4eby3i7q2wts"
path.s3tc="res://.godot/imported/hole_normal.png-9c2f1eac05804bab609d1c67adcf7dba.s3tc.ctex"
path.etc2="res://.godot/imported/hole_normal.png-9c2f1eac05804bab609d1c67adcf7dba.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/hole_normal.png"
dest_files=["res://.godot/imported/hole_normal.png-9c2f1eac05804bab609d1c67adcf7dba.s3tc.ctex", "res://.godot/imported/hole_normal.png-9c2f1eac05804bab609d1c67adcf7dba.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://tiles/tiles/limestone_dungeon/hole_normal.png"
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
interior/tiles/limestone_dungeon/hole_orm.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dvqqmbf6r1jfm"
path.s3tc="res://.godot/imported/hole_orm.png-00b1427da2cca528c854a97655dfff24.s3tc.ctex"
path.etc2="res://.godot/imported/hole_orm.png-00b1427da2cca528c854a97655dfff24.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/hole_orm.png"
dest_files=["res://.godot/imported/hole_orm.png-00b1427da2cca528c854a97655dfff24.s3tc.ctex", "res://.godot/imported/hole_orm.png-00b1427da2cca528c854a97655dfff24.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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
interior/tiles/limestone_dungeon/piping_albedo.png (Stored with Git LFS) Executable file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://yu0p5ryoh7gr"
path.s3tc="res://.godot/imported/piping_albedo.png-e55409f9baf27938796d954b957086ac.s3tc.ctex"
path.etc2="res://.godot/imported/piping_albedo.png-e55409f9baf27938796d954b957086ac.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/piping_albedo.png"
dest_files=["res://.godot/imported/piping_albedo.png-e55409f9baf27938796d954b957086ac.s3tc.ctex", "res://.godot/imported/piping_albedo.png-e55409f9baf27938796d954b957086ac.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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
interior/tiles/limestone_dungeon/piping_height.png (Stored with Git LFS) Executable file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://byw6qkgod61ip"
path.s3tc="res://.godot/imported/piping_height.png-d458ffb714345b35977ee0de9b01359f.s3tc.ctex"
path.etc2="res://.godot/imported/piping_height.png-d458ffb714345b35977ee0de9b01359f.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/piping_height.png"
dest_files=["res://.godot/imported/piping_height.png-d458ffb714345b35977ee0de9b01359f.s3tc.ctex", "res://.godot/imported/piping_height.png-d458ffb714345b35977ee0de9b01359f.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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
interior/tiles/limestone_dungeon/piping_material.res (Stored with Git LFS) Normal file

Binary file not shown.

BIN
interior/tiles/limestone_dungeon/piping_normal.png (Stored with Git LFS) Executable file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bypqkn1tm036p"
path.s3tc="res://.godot/imported/piping_normal.png-4b6b5fc6d6cbc5e05f054f9e19463644.s3tc.ctex"
path.etc2="res://.godot/imported/piping_normal.png-4b6b5fc6d6cbc5e05f054f9e19463644.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/piping_normal.png"
dest_files=["res://.godot/imported/piping_normal.png-4b6b5fc6d6cbc5e05f054f9e19463644.s3tc.ctex", "res://.godot/imported/piping_normal.png-4b6b5fc6d6cbc5e05f054f9e19463644.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://tiles/tiles/limestone_dungeon/piping_normal.png"
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
interior/tiles/limestone_dungeon/piping_orm.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bkpucv0ydae5v"
path.s3tc="res://.godot/imported/piping_orm.png-7131df07403ecb346d6a4793ca7929cb.s3tc.ctex"
path.etc2="res://.godot/imported/piping_orm.png-7131df07403ecb346d6a4793ca7929cb.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/piping_orm.png"
dest_files=["res://.godot/imported/piping_orm.png-7131df07403ecb346d6a4793ca7929cb.s3tc.ctex", "res://.godot/imported/piping_orm.png-7131df07403ecb346d6a4793ca7929cb.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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
interior/tiles/limestone_dungeon/tiling_albedo.png (Stored with Git LFS) Executable file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bydc62557j2d0"
path.s3tc="res://.godot/imported/tiling_albedo.png-1570a8acdedf3400258f8b15e49e5d5b.s3tc.ctex"
path.etc2="res://.godot/imported/tiling_albedo.png-1570a8acdedf3400258f8b15e49e5d5b.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/tiling_albedo.png"
dest_files=["res://.godot/imported/tiling_albedo.png-1570a8acdedf3400258f8b15e49e5d5b.s3tc.ctex", "res://.godot/imported/tiling_albedo.png-1570a8acdedf3400258f8b15e49e5d5b.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

View File

@ -3,23 +3,24 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://didp3nfacohwd"
path.s3tc="res://.godot/imported/dungeon_01_tiles_height.png-7733c18dddd7d5bf80deae891d3de52e.s3tc.ctex"
path.s3tc="res://.godot/imported/tiling_height.png-2ead72b43d4a6de847e50bcbd8e8c7f7.s3tc.ctex"
path.etc2="res://.godot/imported/tiling_height.png-2ead72b43d4a6de847e50bcbd8e8c7f7.etc2.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/base/dungeon_01_tiles_height.png"
dest_files=["res://.godot/imported/dungeon_01_tiles_height.png-7733c18dddd7d5bf80deae891d3de52e.s3tc.ctex"]
source_file="res://interior/tiles/limestone_dungeon/tiling_height.png"
dest_files=["res://.godot/imported/tiling_height.png-2ead72b43d4a6de847e50bcbd8e8c7f7.s3tc.ctex", "res://.godot/imported/tiling_height.png-2ead72b43d4a6de847e50bcbd8e8c7f7.etc2.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true

BIN
interior/tiles/limestone_dungeon/tiling_material.res (Stored with Git LFS) Normal file

Binary file not shown.

BIN
interior/tiles/limestone_dungeon/tiling_normal.png (Stored with Git LFS) Executable file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cv8yiluvc6mol"
path.s3tc="res://.godot/imported/tiling_normal.png-877f08b7359b5aba3ea7d5681fd4e5a9.s3tc.ctex"
path.etc2="res://.godot/imported/tiling_normal.png-877f08b7359b5aba3ea7d5681fd4e5a9.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/tiling_normal.png"
dest_files=["res://.godot/imported/tiling_normal.png-877f08b7359b5aba3ea7d5681fd4e5a9.s3tc.ctex", "res://.godot/imported/tiling_normal.png-877f08b7359b5aba3ea7d5681fd4e5a9.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://tiles/tiles/limestone_dungeon/tiling_normal.png"
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
interior/tiles/limestone_dungeon/tiling_orm.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://leoab2fjmxgk"
path.s3tc="res://.godot/imported/tiling_orm.png-48bc1a5d8b2eae43d49ed818fa664d0d.s3tc.ctex"
path.etc2="res://.godot/imported/tiling_orm.png-48bc1a5d8b2eae43d49ed818fa664d0d.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://interior/tiles/limestone_dungeon/tiling_orm.png"
dest_files=["res://.godot/imported/tiling_orm.png-48bc1a5d8b2eae43d49ed818fa664d0d.s3tc.ctex", "res://.godot/imported/tiling_orm.png-48bc1a5d8b2eae43d49ed818fa664d0d.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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
map_editor.scn (Stored with Git LFS)

Binary file not shown.

View File

@ -0,0 +1,14 @@
[remap]
importer="image"
type="Image"
uid="uid://drok88h02tdre"
path="res://.godot/imported/brush_hard_circle_mask.png-b5b7b3c7aa50923306e69fd4680a2d65.image"
[deps]
source_file="res://map_editor/brush_hard_circle_mask.png"
dest_files=["res://.godot/imported/brush_hard_circle_mask.png-b5b7b3c7aa50923306e69fd4680a2d65.image"]
[params]

View File

@ -1,14 +0,0 @@
[remap]
importer="image"
type="Image"
uid="uid://drok88h02tdre"
path="res://.godot/imported/hard_circle.png-2d3b8f0159bd6330a1549c444b8f6be1.image"
[deps]
source_file="res://map_editor/brush_masks/hard_circle.png"
dest_files=["res://.godot/imported/hard_circle.png-2d3b8f0159bd6330a1549c444b8f6be1.image"]
[params]

View File

@ -1,14 +0,0 @@
[remap]
importer="image"
type="Image"
uid="uid://bbdh4btpg08do"
path="res://.godot/imported/soft_circle.png-39b5c5475559f344ab34a03d8778f285.image"
[deps]
source_file="res://map_editor/brush_masks/soft_circle.png"
dest_files=["res://.godot/imported/soft_circle.png-39b5c5475559f344ab34a03d8778f285.image"]
[params]

View File

@ -0,0 +1,14 @@
[remap]
importer="image"
type="Image"
uid="uid://bbdh4btpg08do"
path="res://.godot/imported/brush_soft_circle_mask.png-f4362d74cca7ee83b36212049a3b11fb.image"
[deps]
source_file="res://map_editor/brush_soft_circle_mask.png"
dest_files=["res://.godot/imported/brush_soft_circle_mask.png-f4362d74cca7ee83b36212049a3b11fb.image"]
[params]

Some files were not shown because too many files have changed in this diff Show More