Pure 3D placement geometry and key helpers, extracted from [ObjectPlacementService3D] so the edge/face math and the registry-key algebra live in one focused, stateless utility. Every method is static — the service passes in whatever context a helper needs (the GridMap, a pre-resolved surface height, the cell size) so the helpers never hold placement state.
Source: addons/grid_placement/systems/building/3d/object_placement_geometry_3d.gd
Syntax
class ObjectPlacementGeometry3D extends RefCountedMembers
| Name | Kind | Summary |
|---|---|---|
NO_GROUND | Field | Sentinel matching [constant GridMap.INVALID_CELL_ITEM] column keys. |
column_key | Method | |
resolve_surface_height | Method | |
resolve_surface_item_name | Method | |
placement_position | Method | |
footprint_cells | Method | |
nearest_edge | Method | |
face_normal_from_ray | Method | |
edge_position | Method | |
edge_yaw | Method | |
face_position | Method | |
face_yaw | Method | |
FACE_SOCKET_NODE_NAME | Field | Node name of the optional declared FACE mount socket on a provider scene root. Authored as a Node3D child whose origin sits on the wall's visible face plane with -Z pointing outward. When present, the service mates FACE consumers to this real surface instead of the cell-derived plane fallback. |
declared_face_socket | Method | |
face_mount_transform | Method | |
anchor | Property | |
anchor_local | Property | |
derived_face_mount_transform | Method | |
anchor | Property | |
outward_local | Property | |
yaw_from | Property | |
target | Property | |
yaw_to | Property | |
yaw | Property | |
rotated_socket_local | Property | |
rotated_socket_world | Property | |
anchor_local | Property | |
edge_key | Method | |
face_key | Method | |
face_occupancy_key | Method | |
is_cardinal_face_normal | Method | |
mount_height_band | Method |