Skip to content

Class

PlacementValidation3D

Generated GDScript class reference for GridPlacement.PlacementValidation3D.

Status
Current
Version
v6.2.0
Source updated
2026-09-24
Generated on
2026-10-01

Read-only 3D placement validity policy seam. Runtime placement and development proof tooling consume this evaluator through one shared policy implementation. Everything here is static and side-effect free: callers supply explicit read-only state and receive typed reasons, per-cell evidence, and the resolved support facts used by preview/commit.

Source: addons/grid_placement/systems/building/3d/placement_validation_3d.gd

Syntax

class PlacementValidation3D extends RefCounted

Members

NameKindSummary
GRID_BOUNDFieldTyped rejection reasons for one placement attempt. GridMap components are only addressable inside +/-2^20; cells at or past the bound (including the INT_MAX MISS sentinel) fail closed here so no GridMap call ever sees them.
SPAN_OVERLAP_EPSILONFieldMinimum span penetration (meters) that counts as an EDGE overlap. Touching end-to-end (zero-area contact) stays legal; true overlaps penetrate by decimeters, so a millimeter guard only absorbs float dust.
reasonsPropertyStructured result of one validation attempt. Bitmask of [enum Reason] flags.
issuesPropertyHuman-readable aggregate issue strings, layered on [member reasons].
cell_issuesPropertyCELL-only projection: footprint cell -> blocking issue strings.
footprint_cellsPropertyFootprint cells the CELL policy checked.
has_grid_surfacePropertyTrue once the column survey recorded [member grid_min_surface] and [member grid_max_surface] (0.0 when a bound had no ground).
grid_min_surfaceProperty
grid_max_surfaceProperty
support_modeProperty[enum ObjectPlacementSettings3D.SurfaceSupportMode], or -1 before the support stage ran.
support_authorityPropertyWhich policy decided support: &"gridmap", &"gridmap_fallback", &"physics", &"physics_required_unavailable", or empty before the support stage ran.
supportPropertyPhysics support evaluation, or null when physics was not sampled.
conflict_idPropertyFirst conflicting world record id, empty without a world conflict.
conflict_cellsProperty
snap_partner_dirsPropertyNeighbor directions holding a compatible snap partner.
unsupported_cellsPropertyFootprint cells lacking the attachment/wall/roof support they need.
cleared_decorPropertyLive clearable-decor roots the commit removes before instantiating.
evidencePropertyRead-only Dictionary projection of the typed evidence for diagnostics and proof tooling. Keys appear only for evidence that was recorded.
has_physics_anchorMethod
is_validMethod
has_reasonMethod
rejectMethod
reject_atMethod
add_cell_issueMethod
cell_issue_mapMethod
gridPropertyRead-only context for one validation attempt.
settingsProperty
world_3dPropertyPhysics world used only when surface support mode opts into physics.
world_registryProperty
preview_yaw_stepsProperty
mountsPropertyCommitted GRID mounts the attempt is checked against.
validate_cellMethod
resultProperty
cellsProperty
profileProperty
occupy_columnsProperty
surveyProperty
min_surfacePropertyGridMap surface range of one CELL footprint, read by the support stage.
max_surfaceProperty
missing_groundProperty
surveyProperty
floating_columnsProperty
keyProperty
occupantProperty
existingProperty
surfaceProperty
top_rowProperty
mountProperty
rootProperty
support_modeProperty
use_grid_authorityProperty
requiredProperty
samplesProperty
supportProperty
settingsProperty
requires_groundProperty
surfaceProperty
conflict_cellsProperty
first_conflictProperty
conflictProperty
snap_issueProperty
lackingProperty
partner_dirsProperty
lacking_supportProperty
lacking_spanProperty
validate_cell_mapMethod
validate_edgeMethod
resultProperty
edge_keyProperty
span_issueProperty
profileProperty
span_support_issueProperty
cell_keyProperty
spanProperty
unsupportedProperty
labelsProperty
cellsProperty
gridProperty
world_yProperty
local_minProperty
local_maxProperty
localProperty
local_spanProperty
run_axisProperty
cell_sizeProperty
min_cellProperty
radiusProperty
halfProperty
cellProperty
local_centerProperty
cell_rectProperty
outProperty
mountProperty
famProperty
overlay_columns_for_familyMethod
outProperty
is_same_type_edge_replaceMethod
occupying_familyProperty
profileProperty
occupantProperty
mountProperty
occupant_groupProperty
candidateProperty
nodeProperty
mountProperty
otherProperty
emptyProperty
sizeProperty
measuredProperty
centerProperty
localProperty
yawProperty
validate_faceMethod
resultProperty
face_keyProperty
height_bandProperty
occupancy_keyProperty
profileProperty
familyProperty
validate_topMethod
resultProperty
top_keyProperty
profileProperty
existing_familyProperty
can_stackProperty
deckProperty
wallsProperty
pairProperty
edge_keyProperty
familyProperty
validate_cornerMethod
resultProperty
keyProperty
profileProperty
validate_move_dropMethod
profileProperty
edge_keyProperty
edge_issuesProperty
face_keyProperty
cell_issuesProperty
cellsProperty
keyProperty
eastProperty
westProperty
east_westProperty
northProperty
southProperty
north_southProperty
emptyProperty
eastProperty
westProperty
east_westProperty
northProperty
southProperty
north_southProperty
emptyProperty
settingsProperty
settingsProperty
topologyProperty
candidatesProperty
cell_sizeProperty
centerProperty
pointProperty
TOUCH_EPSILONField
nodeProperty
boxProperty
hostProperty
x_neighborProperty
z_neighborProperty
x_cellsProperty
z_cellsProperty
x_yawProperty
z_yawProperty
nodeProperty
componentsProperty
instanceProperty
mountProperty
compatible_neighbor_dirsMethod
dirsProperty
WALL_SUPPORT_RADIUSFieldChebyshev radius (cells) of the wall-support zone for CELL pieces with [member PlacementSnapProfile3D.require_wall_support]. The house roof slopes span ~7.6 m from a 2x2 anchor, so the walls under the eaves sit up to 2 cells from the anchor cells; radius 2 keeps the canonical deck + wall ring green while a bare deck reads red.
footprint_cells_without_wall_supportMethod
lackingProperty
ROOF_SPAN_RADIUSFieldChebyshev radius (cells) of the roof-span zone for CELL pieces with [member PlacementSnapProfile3D.require_roof_span]. Roof slope meshes span ~7.6 m from a 2x2 anchor, so a gable capping the span end sits up to 3 cells from the nearest roof column; radius 4 keeps the canonical house green while a gable in a roofless ring reads red.
footprint_cells_without_roof_spanMethod
lackingProperty
zoneProperty
unionsProperty
anchor_keyProperty
yawProperty
mountProperty
seenProperty
zoneProperty
keyProperty
footprint_cells_without_supportMethod
lackingProperty
offsetsProperty
neighborProperty
neighbor_keyProperty
reasonProperty
issueProperty
lifecycle_reason_forMethod