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 RefCountedMembers
| Name | Kind | Summary |
|---|---|---|
GRID_BOUND | Field | Typed rejection reasons for one placement attempt. A footprint tile has no supporting wall within [const WALL_SUPPORT_RADIUS]. A roof cap tile sits outside [const ROOF_SPAN_RADIUS] of any roof slope. The anchor cell sits outside the GridMap bounds. A footprint cell has no accepting COLUMN provider directly underneath it ([member PlacementSnapProfile3D.require_column_support]). 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_EPSILON | Field | Minimum 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. |
reasons | Property | Structured result of one validation attempt. Bitmask of [enum Reason] flags. |
issues | Property | Human-readable aggregate issue strings, layered on [member reasons]. |
cell_issues | Property | CELL-only projection: footprint cell -> blocking issue strings. |
footprint_cells | Property | Footprint cells the CELL policy checked. |
has_grid_surface | Property | True once the column survey recorded [member grid_min_surface] and [member grid_max_surface] (0.0 when a bound had no ground). |
grid_min_surface | Property | |
grid_max_surface | Property | |
support_mode | Property | [enum ObjectPlacementSettings3D.SurfaceSupportMode], or -1 before the support stage ran. |
support_authority | Property | Which policy decided support: &"gridmap", &"gridmap_fallback", &"physics", &"physics_required_unavailable", or empty before the support stage ran. |
support | Property | Physics support evaluation, or null when physics was not sampled. |
conflict_id | Property | First conflicting world record id, empty without a world conflict. |
conflict_cells | Property | |
snap_partner_dirs | Property | Neighbor directions holding a compatible snap partner. |
unsupported_cells | Property | Footprint cells lacking the attachment/wall/roof support they need. |
cleared_decor | Property | Live clearable-decor roots the commit removes before instantiating. |
evidence | Property | Read-only Dictionary projection of the typed evidence for diagnostics and proof tooling. Keys appear only for evidence that was recorded. |
has_physics_anchor | Method | |
is_valid | Method | |
has_reason | Method | |
reject | Method | |
reject_at | Method | |
add_cell_issue | Method | |
cell_issue_map | Method | |
grid | Property | Read-only context for one validation attempt. |
settings | Property | |
world_3d | Property | Physics world used only when surface support mode opts into physics. |
world_registry | Property | |
preview_yaw_steps | Property | |
mounts | Property | Committed GRID mounts the attempt is checked against. |
excluded_node | Property | A live node treated as ABSENT by every host lookup, without mutating [member mounts]. Lets a caller ask the counterfactual a removal needs: "would this CORNER still be hosted if [param mounts] had no [member excluded_node]?". Null for ordinary validation, where nothing is excluded and every committed mount counts. (#1529) |
validate_cell | Method | |
result | Property | |
cells | Property | |
profile | Property | |
occupy_columns | Property | |
survey | Property | |
min_surface | Property | GridMap surface range of one CELL footprint, read by the support stage. |
max_surface | Property | |
missing_ground | Property | |
survey | Property | |
floating_columns | Property | |
key | Property | |
occupant | Property | |
existing | Property | |
surface | Property | |
top_row | Property | |
mount | Property | |
root | Property | |
support_mode | Property | |
use_grid_authority | Property | |
required | Property | |
samples | Property | |
support | Property | |
settings | Property | |
requires_ground | Property | |
surface | Property | |
conflict_cells | Property | |
first_conflict | Property | |
conflict | Property | |
snap_issue | Property | |
lacking | Property | |
partner_dirs | Property | |
lacking_support | Property | |
lacking_span | Property | |
lacking_column | Property | |
validate_cell_map | Method | |
validate_edge | Method | |
result | Property | |
edge_key | Property | |
span_issue | Property | |
support_issue | Property | |
profile | Property | |
span_support_issue | Property | |
cell_key | Property | |
edge_requires_support | Method | |
profile | Property | |
edge_has_hosts | Method | |
cell_has_hosts | Method |