class_name BrushTool extends EditorTool ## Paints a single tile id into a tile layer at (x, y[, z]). ## ## `args`: `layer` (int, default 0), `x` (int), `y` (int), `z` (int, ## default 0), `tile_id` (int). func _init() -> void: tool_id = "brush" func apply(core: EditorCore, args: Dictionary) -> Variant: var layer_idx: int = args.get("layer", 0) var x: int = args.get("x", 0) var y: int = args.get("y", 0) var z: int = args.get("z", 0) var tile_id: int = args.get("tile_id", 0) if not core.model.is_tile_in_bounds(layer_idx, x, y, z): return false var old_tile_id: int = core.model.get_tile_raw(layer_idx, x, y, z) if old_tile_id == tile_id: return false # no-op -- nothing to undo core.undo_redo.begin("Paint tile (%d,%d,%d) -> %d" % [x, y, z, tile_id]) core.undo_redo.add_do(core.model.set_tile_raw.bind(layer_idx, x, y, z, tile_id)) core.undo_redo.add_undo(core.model.set_tile_raw.bind(layer_idx, x, y, z, old_tile_id)) core.undo_redo.commit() return true