Typed projection bundle for one committed Grid Placement record. Replaces the internal Dictionary that carried every projection payload under opaque StringName keys. Known projections are statically typed fields; unknown names (test hooks, future adapters) ride in _extra so the registry stays open without losing type safety on the hot paths. Save boundary note: only smooth_consumed (via to_save_data) and mount_socket (via mount.to_dict()) cross the save boundary. Runtime objects (smooth_occupancy, grid_occupancy entries) are rebuilt on restore and never serialized here.
Source: addons/grid_placement/services/placement_world_projections.gd
Syntax
class PlacementWorldProjections extends RefCountedMembers
| Name | Kind | Summary |
|---|---|---|
identity_lookup | Property | |
mount_socket | Property | |
grid_occupancy | Property | 3D GRID cells, or a 2D Entry2D when the record is 2D GRID. Variant by contract: the registry never inspects it, adapters own the payload. |
smooth_occupancy | Property | SMOOTH occupancy entry (Entry3D / Entry2D) or null. Variant by contract. |
has_smooth_consumed | Property | Presence is tracked separately: writers store the key even when no socket is consumed, mirroring the legacy Dictionary, so counts stay stable. |
smooth_consumed | Property | |
mount_provider_faces | Property | |
has_edge_socket | Property | |
edge_socket | Property | |
has_face_socket | Property | |
face_socket | Property | |
has_top_socket | Property | |
top_socket | Property | |
has_corner_socket | Property | |
corner_socket | Property | |
has_surface_socket | Property | |
surface_socket | Property | |
has_generation_callback | Property | |
generation_callback | Property | |
empty | Method | |
from_variant | Method | |
duplicate | Method | |
has_projection | Method | |
get_projection | Method | |
set_projection | Method | |
erase_projection | Method | |
projection_keys | Method | |
projection_count | Method | |
is_empty | Method | |
clear | Method | |
to_dict | Method |