Specialized [ManipulationData] for the terrain DEMOLISH action. Carries the terrain name, cells to erase, target map, and cell count for demolish operations. Exposes a [method veto] hook that listeners can call from the [signal PlacementState.pre_terrain_demolish] callback to cancel the demolition. Lifecycle (5.1.0-P): [codeblock] try_demolish_terrain: status = STARTED emit pre_terrain_demolish(data) # listeners may call data.veto() if data.vetoed: status = CANCELED return erase_cells() emit post_terrain_demolish(data) emit post_terrain_removed(data) status = FINISHED [/codeblock]
Source: addons/grid_placement/placement/terrain/terrain_demolish_data.gd
Syntax
class TerrainDemolishData extends ManipulationDataMembers
| Name | Kind | Summary |
|---|---|---|
terrain_name | Property | The terrain name being demolished (e.g. "dungeon_floor"). Resolved from the TileSet at erase time. |
cells | Property | The grid cells to erase. |
target_map | Property | The TileMapLayer where the terrain will be erased. |
cells_3d | Property | 3D variant: the GridMap cells to erase. Populated instead of [member cells] when the demolish targets a [GridMap]; build this shape with [method for_3d]. |
target_map_3d | Property | 3D variant: the GridMap where the terrain will be erased. |
build_cost | Property | BuildCost snapshot for the demolish — set by terrain_placement_service when the demolish is initiated, so refunder pool has a stable value at handler time. Null cost → no refund (legacy / no-cost terrains), per AGENTS.md non-blocking policy. |
for_3d | Method | |
empty_2d | Property | |
data | Property | |
is_3d | Method | |
cell_count | Method |