Class TerrainTilePainter
- Namespace
- GridPlacement.GDScript
- Assembly
- MoonBark.GridPlacement.GDScript.dll
Terrain-aware tile painting and refresh planning for TileMapLayer targets.
class TerrainTilePainter extends RefCounted
TerrainTilePainter
Fields
NEIGHBOR_OFFSETS
const NEIGHBOR_OFFSETS: Array[Vector2i] = [
Properties
target_cell
var target_cell: Vector2i = Vector2i.ZERO
target_cells
var target_cells: Array[Vector2i] = []
terrain_set
var terrain_set: int = -1
terrain
var terrain: int = -1
refresh_groups
var refresh_groups: Array[Dictionary] = []
skipped_neighbors
var skipped_neighbors: Array[Vector2i] = []
issues
var issues: Array[String] = []
existing_group
var existing_group: Dictionary = {}
cells
var cells: Array = existing_group["cells"]
count
var count = 0
plan
var plan = build_plan(map, target_cell, terrain_set, terrain)
tile_set
var tile_set: Object = map.get("tile_set")
terrain_sets_count
var terrain_sets_count: int = tile_set.get_terrain_sets_count()
terrains_count
var terrains_count: int = tile_set.get_terrains_count(terrain_set)
refreshed
var refreshed: Dictionary = {}
neighbor_cell
var neighbor_cell = target_cell + offset
terrain_info
var terrain_info = _get_cell_terrain_info(map, neighbor_cell)
neighbor_terrain_set
var neighbor_terrain_set: int = terrain_info["terrain_set"]
neighbor_terrain
var neighbor_terrain: int = terrain_info["terrain"]
plan
var plan = build_plan(map, target_cell, terrain_set, terrain)
set_count
var set_count: int = tile_set.get_terrain_sets_count()
terrain_count
var terrain_count: int = tile_set.get_terrains_count(s)
name
var name: StringName = tile_set.get_terrain_name(s, t)
info
var info: Dictionary = {
tile_data
var tile_data = map.get_cell_tile_data(cell)
Methods
set_logger
func set_logger(p_logger: PlacementLogger) -> void:
Parameters
p_logger
Returns
is_successful
func is_successful() -> bool:
Returns
add_issue
func add_issue(issue: String) -> void:
Parameters
issue
Returns
add_skipped_neighbor
func add_skipped_neighbor(cell: Vector2i) -> void:
Parameters
cell
Returns
add_refresh_cell
func add_refresh_cell(p_terrain_set: int, p_terrain: int, cell: Vector2i) -> void:
Parameters
p_terrain_setp_terraincell
Returns
get_refresh_cell_count
func get_refresh_cell_count() -> int:
Returns
build_plan
func build_plan(map: Object, target_cell: Vector2i, terrain_set: int, terrain: int) -> TerrainPlacementPlan:
Parameters
maptarget_cellterrain_setterrain
Returns
build_plan_multi
func build_plan_multi(map: Object, p_cells: Array[Vector2i], terrain_set: int, terrain: int) -> TerrainPlacementPlan:
Parameters
mapp_cellsterrain_setterrain
Returns
apply_plan
func apply_plan(map: Object, plan: TerrainPlacementPlan, ignore_empty_terrains: bool = false, update_internals: bool = true) -> bool:
Parameters
mapplanignore_empty_terrainsupdate_internals
Returns
paint_terrain
func paint_terrain(map: Object, target_cell: Vector2i, terrain_set: int, terrain: int, ignore_empty_terrains: bool = false, update_internals: bool = true) -> TerrainPlacementPlan:
Parameters
maptarget_cellterrain_setterrainignore_empty_terrainsupdate_internals
Returns
resolve_terrain_by_name
static func resolve_terrain_by_name(tile_set: TileSet, terrain_name: StringName) -> Dictionary:
Parameters
tile_setterrain_name