Godot Version
4.3.dev3
Question
I have a wrapper class to control how a certain TileMap node is accessed. This wrapper class has the following content.
class_name OutputTileMapWrapper
extends Node2D
enum Terrain { BORDER, WALL, FLOOR, MIDDLE_TONE_FLOOR, DARK_FLOOR, BRIGHT_FLOOR, BRICK_FLOOR, WATER}
enum Layer { FLOOR, BORDER }
@export var scale_factor := 3
@onready var _output_tile_map: TileMap = $OutputTileMap
func set_floor_cells(cells: Dictionary) -> void:
var output_cells := _convert_to_output_map(cells)
BetterTerrain.set_cells(_output_tile_map, Layer.FLOOR, output_cells.keys(), Terrain.MIDDLE_TONE_FLOOR)
BetterTerrain.update_terrain_cells(_output_tile_map, Layer.FLOOR, output_cells.keys())
func set_border_cells(cells: Dictionary) -> void:
var output_cells := _convert_to_output_map(cells)
BetterTerrain.set_cells(_output_tile_map, Layer.BORDER, output_cells.keys(), Terrain.BORDER)
BetterTerrain.set_cells(_output_tile_map, Layer.BORDER, output_cells.keys(), Terrain.BORDER)
func _convert_to_output_map(cells: Dictionary) -> Dictionary:
var out := {}
for cell: Vector2i in cells:
var output_cell := cell * scale_factor
for x: int in scale_factor:
for y: int in scale_factor:
var coords := output_cell + Vector2i(x, y)
out[coords] = null
return out
I get a reference to this wrapper class using @export var output_tile_map_wrapper: OutputTileMapWrapper
and I have assigned it in the inspector.
When I try to call the set_floor_cells
from anothe class it says
Invalid call. Nonexistent function 'set_floor_cells' in base 'Node2D (OutputTileMapWrapper).
Why does this happen? I can even click the function call and it brings me to the wrapper class.