From a175b22377ccf7422cab5928f181e3996a4f29b3 Mon Sep 17 00:00:00 2001 From: kayomn Date: Fri, 27 Jan 2023 22:44:28 +0000 Subject: [PATCH] Replace placeholder meshes with tiles for interior map editing --- local_player.scn | 2 +- map_editor.scn | 4 +- map_editor/tile_cursor.gdshader | 12 ++ map_editor/tile_cursor.res | 3 + tiling/tile.gd | 21 +++ mesh_grid.gd => tiling/tile_grid.gd | 174 +++++++++++++----- tiling/tiles/dungeon_01_pipehole_tile.res | 3 + tiling/tiles/dungeon_01_tiling_tile.res | 3 + .../tiles/limestone_dungeon/hole_albedo.png | 3 + .../limestone_dungeon/hole_albedo.png.import | 36 ++++ .../tiles/limestone_dungeon/hole_height.png | 3 + .../limestone_dungeon/hole_height.png.import | 36 ++++ .../tiles/limestone_dungeon/hole_material.res | 3 + .../tiles/limestone_dungeon/hole_normal.png | 3 + .../limestone_dungeon/hole_normal.png.import | 36 ++++ tiling/tiles/limestone_dungeon/hole_orm.png | 3 + .../limestone_dungeon/hole_orm.png.import | 36 ++++ .../tiles/limestone_dungeon/piping_albedo.png | 3 + .../piping_albedo.png.import | 36 ++++ .../tiles/limestone_dungeon/piping_height.png | 3 + .../piping_height.png.import | 36 ++++ .../limestone_dungeon/piping_material.res | 3 + .../tiles/limestone_dungeon/piping_normal.png | 3 + .../piping_normal.png.import | 36 ++++ tiling/tiles/limestone_dungeon/piping_orm.png | 3 + .../limestone_dungeon/piping_orm.png.import | 36 ++++ .../tiles/limestone_dungeon/tiling_albedo.png | 3 + .../tiling_albedo.png.import | 36 ++++ .../tiles/limestone_dungeon/tiling_height.png | 3 + .../tiling_height.png.import | 36 ++++ .../limestone_dungeon/tiling_material.res | 3 + .../tiles/limestone_dungeon/tiling_normal.png | 3 + .../tiling_normal.png.import | 36 ++++ tiling/tiles/limestone_dungeon/tiling_orm.png | 3 + .../limestone_dungeon/tiling_orm.png.import | 36 ++++ 35 files changed, 650 insertions(+), 49 deletions(-) create mode 100644 map_editor/tile_cursor.gdshader create mode 100644 map_editor/tile_cursor.res create mode 100644 tiling/tile.gd rename mesh_grid.gd => tiling/tile_grid.gd (51%) create mode 100644 tiling/tiles/dungeon_01_pipehole_tile.res create mode 100644 tiling/tiles/dungeon_01_tiling_tile.res create mode 100755 tiling/tiles/limestone_dungeon/hole_albedo.png create mode 100644 tiling/tiles/limestone_dungeon/hole_albedo.png.import create mode 100755 tiling/tiles/limestone_dungeon/hole_height.png create mode 100644 tiling/tiles/limestone_dungeon/hole_height.png.import create mode 100644 tiling/tiles/limestone_dungeon/hole_material.res create mode 100755 tiling/tiles/limestone_dungeon/hole_normal.png create mode 100644 tiling/tiles/limestone_dungeon/hole_normal.png.import create mode 100644 tiling/tiles/limestone_dungeon/hole_orm.png create mode 100644 tiling/tiles/limestone_dungeon/hole_orm.png.import create mode 100755 tiling/tiles/limestone_dungeon/piping_albedo.png create mode 100644 tiling/tiles/limestone_dungeon/piping_albedo.png.import create mode 100755 tiling/tiles/limestone_dungeon/piping_height.png create mode 100644 tiling/tiles/limestone_dungeon/piping_height.png.import create mode 100644 tiling/tiles/limestone_dungeon/piping_material.res create mode 100755 tiling/tiles/limestone_dungeon/piping_normal.png create mode 100644 tiling/tiles/limestone_dungeon/piping_normal.png.import create mode 100644 tiling/tiles/limestone_dungeon/piping_orm.png create mode 100644 tiling/tiles/limestone_dungeon/piping_orm.png.import create mode 100755 tiling/tiles/limestone_dungeon/tiling_albedo.png create mode 100644 tiling/tiles/limestone_dungeon/tiling_albedo.png.import create mode 100755 tiling/tiles/limestone_dungeon/tiling_height.png create mode 100644 tiling/tiles/limestone_dungeon/tiling_height.png.import create mode 100644 tiling/tiles/limestone_dungeon/tiling_material.res create mode 100755 tiling/tiles/limestone_dungeon/tiling_normal.png create mode 100644 tiling/tiles/limestone_dungeon/tiling_normal.png.import create mode 100644 tiling/tiles/limestone_dungeon/tiling_orm.png create mode 100644 tiling/tiles/limestone_dungeon/tiling_orm.png.import diff --git a/local_player.scn b/local_player.scn index 876b659..b10cd97 100644 --- a/local_player.scn +++ b/local_player.scn @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4361765e205d45ccecaeb578065b3eec5aefab8f9a2484631bbd7004fa9eddf4 +oid sha256:cdc150f7614a20d1a925aebcbba25105d3cf046f2f70deb2b68951fa6bc46dc8 size 679 diff --git a/map_editor.scn b/map_editor.scn index be7e50c..e6f4a04 100644 --- a/map_editor.scn +++ b/map_editor.scn @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68750f91463548b5d57b6c96322ba6a0a3b33f1b7948b8bed812b369f46c64af -size 10540 +oid sha256:35daad0fb39d23f098b2849489292c5e5a5dccbffffb2a866e74d82d64085cdd +size 10675 diff --git a/map_editor/tile_cursor.gdshader b/map_editor/tile_cursor.gdshader new file mode 100644 index 0000000..e41f94c --- /dev/null +++ b/map_editor/tile_cursor.gdshader @@ -0,0 +1,12 @@ +shader_type spatial; +render_mode unshaded, blend_add, cull_disabled; + +uniform sampler2D source_texture; + +uniform vec4 modulate: source_color = vec4(1.0); + +void fragment() { + vec4 source = texture(source_texture, UV); + ALBEDO = (source.rgb * modulate.rgb); + ALPHA = source.a; +} \ No newline at end of file diff --git a/map_editor/tile_cursor.res b/map_editor/tile_cursor.res new file mode 100644 index 0000000..2d23433 --- /dev/null +++ b/map_editor/tile_cursor.res @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b9240206e13ccff017900a7262637147f1931f9e950e2c1b0efb45523e03bd5 +size 901 diff --git a/tiling/tile.gd b/tiling/tile.gd new file mode 100644 index 0000000..2b172a5 --- /dev/null +++ b/tiling/tile.gd @@ -0,0 +1,21 @@ +class_name Tile extends Resource + +## +## +## +enum Kind { + FLOOR, + WALL, +} + +## +## +## +@export +var kind := Kind.FLOOR + +## +## +## +@export +var mesh: Mesh = null diff --git a/mesh_grid.gd b/tiling/tile_grid.gd similarity index 51% rename from mesh_grid.gd rename to tiling/tile_grid.gd index 06b1c3e..f22a672 100644 --- a/mesh_grid.gd +++ b/tiling/tile_grid.gd @@ -1,4 +1,4 @@ -class_name MeshGrid extends Node3D +class_name TileGrid extends Node3D const _CHUNK_SIZE := 32 @@ -8,17 +8,22 @@ const _GRID_ORIGIN := Vector2(0.5, 0.5) ## Baked block of meshes making up a segment of the grid. ## class Chunk: + var _floor_meshes: Array[Mesh] = [] + var _multimesh_instances: Array[MultiMeshInstance] = [] - var _meshes: Array[Mesh] = [] + var _wall_meshes: Array[Mesh] = [] func _init() -> void: - _meshes.resize(_CHUNK_SIZE * _CHUNK_SIZE) + var buffer_size := _CHUNK_SIZE * _CHUNK_SIZE + + _floor_meshes.resize(buffer_size) + _wall_meshes.resize(buffer_size) ## ## Invalidates the mesh block, re-baking its contents from the current mesh data set. ## - func invalidate(mesh_grid: MeshGrid, coordinate: Vector2i) -> void: + func invalidate(tile_grid: TileGrid, coordinate: Vector2i) -> void: # TODO: Once this is all lowered into native code, look for ways to parallelize the loops. for multimesh_instance in _multimesh_instances: RenderingServer.free_rid(multimesh_instance._instance_rid) @@ -28,10 +33,23 @@ class Chunk: # Normalize mesh instance data for the chunk. var transforms_by_mesh := {} - var grid_size := mesh_grid.size + var grid_size := tile_grid.size - for i in _meshes.size(): - var mesh := _meshes[i] + for i in _floor_meshes.size(): + var mesh := _floor_meshes[i] + + if mesh != null: + if not(mesh in transforms_by_mesh): + transforms_by_mesh[mesh] = [] + + transforms_by_mesh[mesh].append(Transform3D(Basis.IDENTITY, Vector3( + (float(coordinate.x * _CHUNK_SIZE) + (i % _CHUNK_SIZE)) - + (float(grid_size.x) * _GRID_ORIGIN.x), 0.0, + (float(coordinate.y * _CHUNK_SIZE) + (i / _CHUNK_SIZE)) - + (float(grid_size.y) * _GRID_ORIGIN.y)))) + + for i in _wall_meshes.size(): + var mesh := _wall_meshes[i] if mesh != null: if not(mesh in transforms_by_mesh): @@ -44,8 +62,8 @@ class Chunk: (float(grid_size.y) * _GRID_ORIGIN.y)))) # (Re)-bake into multimesh instances for the chunk. - var scenario_rid := mesh_grid.get_world_3d().scenario - var global_transform := mesh_grid.global_transform + var scenario_rid := tile_grid.get_world_3d().scenario + var global_transform := tile_grid.global_transform for chunk_mesh in transforms_by_mesh: var multimesh_instance := MultiMeshInstance.new( @@ -55,17 +73,27 @@ class Chunk: _multimesh_instances.append(multimesh_instance) ## - ## Sets the mesh location in the chunk at the relative [code]coordinatess[/code] to + ## 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_mesh(coordinates: Vector2i, mesh: Mesh) -> void: - _meshes[(_CHUNK_SIZE * coordinates.y) + coordinates.x] = mesh + func set_floor_mesh(coordinates: Vector2i, mesh: Mesh) -> void: + _floor_meshes[(_CHUNK_SIZE * coordinates.y) + coordinates.x] = mesh + + ## + ## 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, mesh: Mesh) -> void: + _wall_meshes[(_CHUNK_SIZE * coordinates.y) + coordinates.x] = mesh ## -## Specialized multi-mesh instance convenience for use within the mesh grid and its chunks. +## Specialized multi-mesh instance convenience for use within the tile grid and its chunks. ## class MultiMeshInstance: var _instance_rid := RID() @@ -97,7 +125,7 @@ var _chunks: Array[Chunk] = [] var _chunks_size := Vector2i.ZERO ## -## Size of the mesh grid (in engine units). +## Size of the tile grid (in engine units). ## @export var size: Vector2i: @@ -123,18 +151,40 @@ func _notification(what: int) -> void: multimesh_instance.set_offset_transform(global_transform) ## -## Clears the entire mesh grid to only contain [code]mesh[/code]. -## -## [code]null[/code] may be past to [code]mesh[/code] for clearing the mesh grid to nothing. +## Clears the entirety of the tile grid to only contain [code]tile[/code]. ## ## For clearing a specific region of the mesh grid, see [method fill_mesh]. ## -func clear_mesh(mesh: Mesh) -> void: - for y in size.y: - for x in size.x: - var coordinate := Vector2i(x, y) +func clear_tiles(tile: Tile) -> 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 - _get_chunk(coordinate / _CHUNK_SIZE).set_mesh(coordinate % _CHUNK_SIZE, mesh) + chunk.set_floor_mesh(chunk_coordinates, null) + chunk.set_wall_mesh(chunk_coordinates, null) + + else: + var mesh := tile.mesh + + match tile.kind: + Tile.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, mesh) + + Tile.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, mesh) for y in _chunks_size.y: for x in _chunks_size.x: @@ -143,9 +193,7 @@ func clear_mesh(mesh: Mesh) -> void: _get_chunk(chunk_coordinate).invalidate(self, chunk_coordinate) ## -## Clears the region of the mesh grid at [code]area[/code] to only contain [code]mesh[/code]. -## -## [code]null[/code] may be past to [code]mesh[/code] for filling the region to nothing. +## Clears the region of the tile grid at [code]area[/code] to only contain [code]tile[/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- @@ -153,20 +201,46 @@ func clear_mesh(mesh: Mesh) -> void: ## ## For clearing the whole of the mesh grid, see [method clear_mesh]. ## -func fill_mesh(area: Rect2i, mesh: Mesh) -> void: +func fill_tiles(area: Rect2i, tile: Tile) -> 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): - var coordinate := Vector2i(x, y) - var chunk_coordinate := coordinate / _CHUNK_SIZE + 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 - _get_chunk(chunk_coordinate).set_mesh(coordinate % _CHUNK_SIZE, mesh) - filled_chunks.set_bitv(chunk_coordinate, true) + chunk.set_floor_mesh(local_coordinates, null) + chunk.set_wall_mesh(local_coordinates, null) + filled_chunks.set_bitv(chunk_coordinates, true) + + else: + var mesh := tile.mesh + + match tile.kind: + Tile.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, mesh) + filled_chunks.set_bitv(chunk_coordinate, true) + + Tile.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, mesh) + filled_chunks.set_bitv(chunk_coordinate, true) for y in _chunks_size.y: for x in _chunks_size.x: @@ -175,35 +249,43 @@ func fill_mesh(area: Rect2i, mesh: Mesh) -> void: _get_chunk(chunk_coordinate).invalidate(self, chunk_coordinate) +## +## +## func get_area() -> Rect2i: return Rect2i(Vector2i.ZERO, size) ## -## Plots a single mesh at [code]coordinates[/code] to be [code]mesh[/code], overwriting whatever it +## Plots a single tile at [code]coordinates[/code] to be [code]tile[/code], overwriting whatever it ## previously contained. ## -## [code]null[/code] may be past to [code]mesh[/code] for clearing the mesh grid to nothing. -## ## *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- ## right. ## ## For bulk-setting many meshes at once, see [method fill_mesh] and [method clear_mesh]. ## -func plot_mesh(coordinates: Vector2i, mesh: Mesh) -> void: +func plot_tile(coordinates: Vector2i, tile: Tile) -> void: assert(get_area().has_point(coordinates), "coordinate must be within grid") var chunk_coordinates := coordinates / _CHUNK_SIZE var chunk := _get_chunk(chunk_coordinates) - chunk.set_mesh(coordinates % _CHUNK_SIZE, mesh) - chunk.invalidate(self, chunk_coordinates) + if tile == null: + var local_coordinates := coordinates % _CHUNK_SIZE -## -## Returns [code]world_position[/code] converted into a coordinate aligned with the [MeshGrid]. -## -## Note that [code]world_position[/code] values not within the [MeshGrid] will produce grid -## coordinates outside of the [MeshGrid] bounds as well. -## -func world_to_grid(world_position: Vector2) -> Vector2i: - return Vector2i((world_position + (Vector2(size) * _GRID_ORIGIN)).floor()) + chunk.set_floor_mesh(local_coordinates, null) + chunk.set_wall_mesh(local_coordinates, null) + chunk.invalidate(self, chunk_coordinates) + + else: + var mesh := tile.mesh + + match tile.kind: + Tile.Kind.FLOOR: + chunk.set_floor_mesh(coordinates % _CHUNK_SIZE, mesh) + chunk.invalidate(self, chunk_coordinates) + + Tile.Kind.WALL: + chunk.set_wall_mesh(coordinates % _CHUNK_SIZE, mesh) + chunk.invalidate(self, chunk_coordinates) diff --git a/tiling/tiles/dungeon_01_pipehole_tile.res b/tiling/tiles/dungeon_01_pipehole_tile.res new file mode 100644 index 0000000..86cfdae --- /dev/null +++ b/tiling/tiles/dungeon_01_pipehole_tile.res @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5c0e60900e9e99ba19aa91bd4ae3480f793612edb55d8d99d0fac69c00f0d67 +size 131934 diff --git a/tiling/tiles/dungeon_01_tiling_tile.res b/tiling/tiles/dungeon_01_tiling_tile.res new file mode 100644 index 0000000..5615154 --- /dev/null +++ b/tiling/tiles/dungeon_01_tiling_tile.res @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc799687c0d79256370e57b1b005fe4bcf989e17f88bbf72eb275b7d0f0dfd01 +size 456 diff --git a/tiling/tiles/limestone_dungeon/hole_albedo.png b/tiling/tiles/limestone_dungeon/hole_albedo.png new file mode 100755 index 0000000..9522f38 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/hole_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65be5005d966729b3249802ba1ee1b075c7f03b14376e2e6a81a3b015d85e884 +size 144301 diff --git a/tiling/tiles/limestone_dungeon/hole_albedo.png.import b/tiling/tiles/limestone_dungeon/hole_albedo.png.import new file mode 100644 index 0000000..7a9cc55 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/hole_albedo.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3m7gvnsmb4g" +path.s3tc="res://.godot/imported/hole_albedo.png-397908bd54a00ad5ae5c4ebd2e6a6712.s3tc.ctex" +path.etc2="res://.godot/imported/hole_albedo.png-397908bd54a00ad5ae5c4ebd2e6a6712.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/hole_albedo.png" +dest_files=["res://.godot/imported/hole_albedo.png-397908bd54a00ad5ae5c4ebd2e6a6712.s3tc.ctex", "res://.godot/imported/hole_albedo.png-397908bd54a00ad5ae5c4ebd2e6a6712.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 diff --git a/tiling/tiles/limestone_dungeon/hole_height.png b/tiling/tiles/limestone_dungeon/hole_height.png new file mode 100755 index 0000000..22ac595 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/hole_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f37d7351c25c1d701726f311957dccd380f74dd918f12f328674467a3a552044 +size 113592 diff --git a/tiling/tiles/limestone_dungeon/hole_height.png.import b/tiling/tiles/limestone_dungeon/hole_height.png.import new file mode 100644 index 0000000..7c740fb --- /dev/null +++ b/tiling/tiles/limestone_dungeon/hole_height.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8p7qvcrfsio7" +path.s3tc="res://.godot/imported/hole_height.png-33e0c22a7ec549d3b4415f6535e75389.s3tc.ctex" +path.etc2="res://.godot/imported/hole_height.png-33e0c22a7ec549d3b4415f6535e75389.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/hole_height.png" +dest_files=["res://.godot/imported/hole_height.png-33e0c22a7ec549d3b4415f6535e75389.s3tc.ctex", "res://.godot/imported/hole_height.png-33e0c22a7ec549d3b4415f6535e75389.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 diff --git a/tiling/tiles/limestone_dungeon/hole_material.res b/tiling/tiles/limestone_dungeon/hole_material.res new file mode 100644 index 0000000..d2918a2 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/hole_material.res @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e83ce69c0fbddff9183f20a73d7880a73cafc6454d4a829215ddb17224f73a9 +size 1096 diff --git a/tiling/tiles/limestone_dungeon/hole_normal.png b/tiling/tiles/limestone_dungeon/hole_normal.png new file mode 100755 index 0000000..fac6c12 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/hole_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4db5e7fa31cc065fa3fbac525c04ddf74824d5e4f7a891c5aa84689fb530ffb9 +size 343721 diff --git a/tiling/tiles/limestone_dungeon/hole_normal.png.import b/tiling/tiles/limestone_dungeon/hole_normal.png.import new file mode 100644 index 0000000..18a1ddc --- /dev/null +++ b/tiling/tiles/limestone_dungeon/hole_normal.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4eby3i7q2wts" +path.s3tc="res://.godot/imported/hole_normal.png-48d612f86efe0b8b5c20262f0d4e848a.s3tc.ctex" +path.etc2="res://.godot/imported/hole_normal.png-48d612f86efe0b8b5c20262f0d4e848a.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/hole_normal.png" +dest_files=["res://.godot/imported/hole_normal.png-48d612f86efe0b8b5c20262f0d4e848a.s3tc.ctex", "res://.godot/imported/hole_normal.png-48d612f86efe0b8b5c20262f0d4e848a.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 diff --git a/tiling/tiles/limestone_dungeon/hole_orm.png b/tiling/tiles/limestone_dungeon/hole_orm.png new file mode 100644 index 0000000..b7800a2 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/hole_orm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bd0e2cf8d124f047a835fc143563107b41b0a45a427d1f767d8be5d7470db24 +size 56105 diff --git a/tiling/tiles/limestone_dungeon/hole_orm.png.import b/tiling/tiles/limestone_dungeon/hole_orm.png.import new file mode 100644 index 0000000..4013c77 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/hole_orm.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvqqmbf6r1jfm" +path.s3tc="res://.godot/imported/hole_orm.png-4f40ed9d2832b8b97cb8bb14a110f509.s3tc.ctex" +path.etc2="res://.godot/imported/hole_orm.png-4f40ed9d2832b8b97cb8bb14a110f509.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/hole_orm.png" +dest_files=["res://.godot/imported/hole_orm.png-4f40ed9d2832b8b97cb8bb14a110f509.s3tc.ctex", "res://.godot/imported/hole_orm.png-4f40ed9d2832b8b97cb8bb14a110f509.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 diff --git a/tiling/tiles/limestone_dungeon/piping_albedo.png b/tiling/tiles/limestone_dungeon/piping_albedo.png new file mode 100755 index 0000000..ff4666c --- /dev/null +++ b/tiling/tiles/limestone_dungeon/piping_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d289f998cf9317afa37ed8519a2a7ab06638aa92a8ce57dc242cf20b60066b36 +size 623939 diff --git a/tiling/tiles/limestone_dungeon/piping_albedo.png.import b/tiling/tiles/limestone_dungeon/piping_albedo.png.import new file mode 100644 index 0000000..ceadb5d --- /dev/null +++ b/tiling/tiles/limestone_dungeon/piping_albedo.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yu0p5ryoh7gr" +path.s3tc="res://.godot/imported/piping_albedo.png-d117bd6aedaaed5af7d5b88d016dd068.s3tc.ctex" +path.etc2="res://.godot/imported/piping_albedo.png-d117bd6aedaaed5af7d5b88d016dd068.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/piping_albedo.png" +dest_files=["res://.godot/imported/piping_albedo.png-d117bd6aedaaed5af7d5b88d016dd068.s3tc.ctex", "res://.godot/imported/piping_albedo.png-d117bd6aedaaed5af7d5b88d016dd068.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 diff --git a/tiling/tiles/limestone_dungeon/piping_height.png b/tiling/tiles/limestone_dungeon/piping_height.png new file mode 100755 index 0000000..5469c2e --- /dev/null +++ b/tiling/tiles/limestone_dungeon/piping_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da8a57606972d7c93e21f14d20b08a35f3af7618fd76cc27db650f789db013f2 +size 241457 diff --git a/tiling/tiles/limestone_dungeon/piping_height.png.import b/tiling/tiles/limestone_dungeon/piping_height.png.import new file mode 100644 index 0000000..b40aae7 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/piping_height.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://byw6qkgod61ip" +path.s3tc="res://.godot/imported/piping_height.png-f888453774e014a184ce92a9b1a3c1ba.s3tc.ctex" +path.etc2="res://.godot/imported/piping_height.png-f888453774e014a184ce92a9b1a3c1ba.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/piping_height.png" +dest_files=["res://.godot/imported/piping_height.png-f888453774e014a184ce92a9b1a3c1ba.s3tc.ctex", "res://.godot/imported/piping_height.png-f888453774e014a184ce92a9b1a3c1ba.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 diff --git a/tiling/tiles/limestone_dungeon/piping_material.res b/tiling/tiles/limestone_dungeon/piping_material.res new file mode 100644 index 0000000..49b0f8a --- /dev/null +++ b/tiling/tiles/limestone_dungeon/piping_material.res @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acbc392315b2a7eb7b98524556b3243bd30c51a9b8a35657d6e686ffeaca22b8 +size 1094 diff --git a/tiling/tiles/limestone_dungeon/piping_normal.png b/tiling/tiles/limestone_dungeon/piping_normal.png new file mode 100755 index 0000000..fca4ab2 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/piping_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:028cb62c715456b29a27a5b306e7c66b61525f5fd90799df79587f8381499030 +size 755707 diff --git a/tiling/tiles/limestone_dungeon/piping_normal.png.import b/tiling/tiles/limestone_dungeon/piping_normal.png.import new file mode 100644 index 0000000..d4a5564 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/piping_normal.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bypqkn1tm036p" +path.s3tc="res://.godot/imported/piping_normal.png-0c487b0c66ff253b09c1ba11ef156621.s3tc.ctex" +path.etc2="res://.godot/imported/piping_normal.png-0c487b0c66ff253b09c1ba11ef156621.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/piping_normal.png" +dest_files=["res://.godot/imported/piping_normal.png-0c487b0c66ff253b09c1ba11ef156621.s3tc.ctex", "res://.godot/imported/piping_normal.png-0c487b0c66ff253b09c1ba11ef156621.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 diff --git a/tiling/tiles/limestone_dungeon/piping_orm.png b/tiling/tiles/limestone_dungeon/piping_orm.png new file mode 100644 index 0000000..50c5416 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/piping_orm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d453be063b9e2f82aca00deb9ac54df40ffe4fe55fd59b8078be7417f354e7d6 +size 109618 diff --git a/tiling/tiles/limestone_dungeon/piping_orm.png.import b/tiling/tiles/limestone_dungeon/piping_orm.png.import new file mode 100644 index 0000000..950835d --- /dev/null +++ b/tiling/tiles/limestone_dungeon/piping_orm.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bkpucv0ydae5v" +path.s3tc="res://.godot/imported/piping_orm.png-e22115d9c1ce0eff6ab03d386d564a38.s3tc.ctex" +path.etc2="res://.godot/imported/piping_orm.png-e22115d9c1ce0eff6ab03d386d564a38.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/piping_orm.png" +dest_files=["res://.godot/imported/piping_orm.png-e22115d9c1ce0eff6ab03d386d564a38.s3tc.ctex", "res://.godot/imported/piping_orm.png-e22115d9c1ce0eff6ab03d386d564a38.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 diff --git a/tiling/tiles/limestone_dungeon/tiling_albedo.png b/tiling/tiles/limestone_dungeon/tiling_albedo.png new file mode 100755 index 0000000..8ff1619 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/tiling_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:770bae54ae4a1152791a26dfd1f38e0a0201cf3ec36ed85fe6f8122de4e76ed0 +size 1488729 diff --git a/tiling/tiles/limestone_dungeon/tiling_albedo.png.import b/tiling/tiles/limestone_dungeon/tiling_albedo.png.import new file mode 100644 index 0000000..003b1bc --- /dev/null +++ b/tiling/tiles/limestone_dungeon/tiling_albedo.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bydc62557j2d0" +path.s3tc="res://.godot/imported/tiling_albedo.png-335e15cc73fb0bac27ce85e385dd7ecf.s3tc.ctex" +path.etc2="res://.godot/imported/tiling_albedo.png-335e15cc73fb0bac27ce85e385dd7ecf.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/tiling_albedo.png" +dest_files=["res://.godot/imported/tiling_albedo.png-335e15cc73fb0bac27ce85e385dd7ecf.s3tc.ctex", "res://.godot/imported/tiling_albedo.png-335e15cc73fb0bac27ce85e385dd7ecf.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 diff --git a/tiling/tiles/limestone_dungeon/tiling_height.png b/tiling/tiles/limestone_dungeon/tiling_height.png new file mode 100755 index 0000000..44b0087 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/tiling_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c43403b399253578c9e2bfd1b686d4f45fe45712be7de31405fbd53c40b70c43 +size 419947 diff --git a/tiling/tiles/limestone_dungeon/tiling_height.png.import b/tiling/tiles/limestone_dungeon/tiling_height.png.import new file mode 100644 index 0000000..f6c0938 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/tiling_height.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://didp3nfacohwd" +path.s3tc="res://.godot/imported/tiling_height.png-db37ee0c7501cd36b201bbde42feaaab.s3tc.ctex" +path.etc2="res://.godot/imported/tiling_height.png-db37ee0c7501cd36b201bbde42feaaab.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/tiling_height.png" +dest_files=["res://.godot/imported/tiling_height.png-db37ee0c7501cd36b201bbde42feaaab.s3tc.ctex", "res://.godot/imported/tiling_height.png-db37ee0c7501cd36b201bbde42feaaab.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=7 +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 diff --git a/tiling/tiles/limestone_dungeon/tiling_material.res b/tiling/tiles/limestone_dungeon/tiling_material.res new file mode 100644 index 0000000..a7545e6 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/tiling_material.res @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3cb64bcceb9fb42ca25497863766b4aa17af678cae11b396253c7ebc54d18bc +size 1091 diff --git a/tiling/tiles/limestone_dungeon/tiling_normal.png b/tiling/tiles/limestone_dungeon/tiling_normal.png new file mode 100755 index 0000000..329738b --- /dev/null +++ b/tiling/tiles/limestone_dungeon/tiling_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa6c031538c5459b5394d5e8ef7bfe5a58d8e5da62013ea4b3c9c5c54cdbeebd +size 1264636 diff --git a/tiling/tiles/limestone_dungeon/tiling_normal.png.import b/tiling/tiles/limestone_dungeon/tiling_normal.png.import new file mode 100644 index 0000000..aad3f5b --- /dev/null +++ b/tiling/tiles/limestone_dungeon/tiling_normal.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cv8yiluvc6mol" +path.s3tc="res://.godot/imported/tiling_normal.png-7e412b02fac9515815ce4cb07e3cb04b.s3tc.ctex" +path.etc2="res://.godot/imported/tiling_normal.png-7e412b02fac9515815ce4cb07e3cb04b.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/tiling_normal.png" +dest_files=["res://.godot/imported/tiling_normal.png-7e412b02fac9515815ce4cb07e3cb04b.s3tc.ctex", "res://.godot/imported/tiling_normal.png-7e412b02fac9515815ce4cb07e3cb04b.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 diff --git a/tiling/tiles/limestone_dungeon/tiling_orm.png b/tiling/tiles/limestone_dungeon/tiling_orm.png new file mode 100644 index 0000000..5a4878f --- /dev/null +++ b/tiling/tiles/limestone_dungeon/tiling_orm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94cc0c47f71b977eaa12a70147cf85b48b51cbf0106e984d6e62a056a9e1c0d4 +size 431771 diff --git a/tiling/tiles/limestone_dungeon/tiling_orm.png.import b/tiling/tiles/limestone_dungeon/tiling_orm.png.import new file mode 100644 index 0000000..b7f9248 --- /dev/null +++ b/tiling/tiles/limestone_dungeon/tiling_orm.png.import @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://leoab2fjmxgk" +path.s3tc="res://.godot/imported/tiling_orm.png-d4a1309df6c98d9d7a8bcda0e97488e6.s3tc.ctex" +path.etc2="res://.godot/imported/tiling_orm.png-d4a1309df6c98d9d7a8bcda0e97488e6.etc2.ctex" +metadata={ +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true +} + +[deps] + +source_file="res://tiling/tiles/limestone_dungeon/tiling_orm.png" +dest_files=["res://.godot/imported/tiling_orm.png-d4a1309df6c98d9d7a8bcda0e97488e6.s3tc.ctex", "res://.godot/imported/tiling_orm.png-d4a1309df6c98d9d7a8bcda0e97488e6.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