aboutsummaryrefslogtreecommitdiff
path: root/client/map/map.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/map/map.gd')
-rw-r--r--client/map/map.gd16
1 files changed, 11 insertions, 5 deletions
diff --git a/client/map/map.gd b/client/map/map.gd
index fe8ddd66..5d6719e9 100644
--- a/client/map/map.gd
+++ b/client/map/map.gd
@@ -21,8 +21,8 @@ extends Node3D
var tile_by_pos: Dictionary = {} # Dictionary[String, [Vector2i, String, Tile, Array]]
var autobake = false
var currently_baked = false
-var floor_mesher := FloorMesher.new()
var floor_node := MeshInstance3D.new()
+var tile_factory = TileFactory.new()
func get_tile_name(pos: Vector2i): # -> String?
var e = tile_by_pos.get(str(pos))
@@ -35,7 +35,7 @@ func get_tile_instance(pos: Vector2i) -> Tile:
func set_tile(pos: Vector2i, name_: String, neighbors: Array = [null,null,null,null]) -> Tile:
clear_tile(pos)
- var tile := TileFactory.produce(name_, pos, neighbors, floor_mesher)
+ var tile := tile_factory.produce(name_, pos, neighbors)
add_child(tile)
tile.position = Vector3(pos.x, 0, pos.y)
tile_by_pos[str(pos)] = [pos, name_, tile, neighbors]
@@ -45,20 +45,26 @@ func clear_tile(pos: Vector2i):
var tile = get_tile_instance(pos)
if tile == null: return
if tile.item != null: tile.item.queue_free()
+ if tile is FloorLike:
+ var floor_mesher = tile_factory.floor_meshers.get(tile.fm_id())
+ if floor_mesher != null:
+ floor_mesher.remove_tile(pos)
+ tile.queue_free()
tile_by_pos.erase(str(pos))
tile.name += "_queued_free"
- tile.queue_free()
- floor_mesher.remove_tile(pos)
@onready var voxelgi: VoxelGI = $VoxelGI
func _ready():
Settings.hook_changed("graphics.gi", false, apply_gi_setting)
floor_node.material_override = preload("res://map/tiles/floor_material.tres")
+ for fm in tile_factory.floor_meshers.values():
+ add_child(fm.mesh_instance)
add_child(floor_node)
func flush() -> void:
- if floor_mesher != null: floor_node.mesh = floor_mesher.flush()
+ for fm in tile_factory.floor_meshers.values():
+ fm.flush()
gi_bake()
func apply_gi_setting(state):