Table of Contents

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_set
p_terrain
cell

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

map
target_cell
terrain_set
terrain

Returns

build_plan_multi

func build_plan_multi(map: Object, p_cells: Array[Vector2i], terrain_set: int, terrain: int) -> TerrainPlacementPlan:

Parameters

map
p_cells
terrain_set
terrain

Returns

apply_plan

func apply_plan(map: Object, plan: TerrainPlacementPlan, ignore_empty_terrains: bool = false, update_internals: bool = true) -> bool:

Parameters

map
plan
ignore_empty_terrains
update_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

map
target_cell
terrain_set
terrain
ignore_empty_terrains
update_internals

Returns

resolve_terrain_by_name

static func resolve_terrain_by_name(tile_set: TileSet, terrain_name: StringName) -> Dictionary:

Parameters

tile_set
terrain_name

Returns