class_name World extends Node3D func _ready() -> void: Input.mouse_mode = Input.MOUSE_MODE_CAPTURED EntityManager.create_block.connect(create_block.bind()) EntityManager.drop_block.connect(create_dropped_block.bind()) _initialize_ground() create_block("001", Vector3(0, 1, -3)) create_block("002", Vector3(1, 1, -3)) create_block("003", Vector3(2, 1, -3)) create_block("004", Vector3(3, 1, -3)) create_dropped_block("001", Vector3(0, 1, -2)) create_dropped_block("002", Vector3(1, 1, -2)) create_dropped_block("003", Vector3(2, 1, -2)) create_dropped_block("004", Vector3(3, 1, -2)) func create_block(id: String, block_position: Vector3) -> void: var block: Block = Globals.BLOCK_PREFAB.instantiate() block.position = block_position block.set_id(id) add_child(block) func create_dropped_block(id: String, block_position: Vector3) -> void: var block: DroppedBlock = Globals.DROPPED_BLOCK_PREFAB.instantiate() add_child(block) block.initialize(id, block_position) func _initialize_ground() -> void: for x: int in range(-10, 11): for z: int in range(-10, 11): var ground_position: Vector3 = Vector3(x, 0, z) var random: int = randi_range(0, 1) if random: # Just for testing.. Would probably make mmore sense to just call create_block() directly if still in World EntityManager.create_block.emit("001", ground_position) else: EntityManager.create_block.emit("002", ground_position)