Scene-free terrain placement service: terrain-name -> TileSet-ID resolution, plan building/gating/application, and signal emission. Keeps the terrain paint path directly unit-testable. Usage: var service := TerrainPlacementService2D.new() service.configure(building_state, building_settings) var report := service.try_place_terrain_by_name(&"dungeon_floor", cell, map, owner)
Source: addons/grid_placement/systems/building/terrain/terrain_placement_service_2d.gd
Syntax
class TerrainPlacementService2D extends TerrainServiceContract