Scene-free 3D object placement service. Owns preview/commit orchestration for 3D sessions. CELL validity is delegated to PlacementValidation3D, including optional physics-backed surface support; EDGE/FACE/TOP/socket policy remains on the same shared validation seam.
Source: addons/grid_placement/systems/building/3d/object_placement_service_3d.gd
Syntax
class ObjectPlacementService3D extends RefCounted
Members
| Name | Kind | Summary |
|---|
object_placed | Signal | |
preview_validity_changed | Signal | |
active_entry_changed | Signal | |
MISS | Field | |
move_refusal_has_dependents | Field | Refusal text for a provider that cannot move because other pieces are mounted on it. Same wording contract as the host move/rotate gate (ManipulationSettings.failed_object_has_dependents) so the player reads one message for one rule, whichever layer refuses. |
ObjectPlacementValidationCache3D | Field | Same-frame CELL validation cache (see object_placement_validation_cache_3d.gd). Preview, commit, and diagnostics reuse one evaluation per frame through it. |
get_last_move_drop_result | Method | |
set_preview_diagnostic_sink | Method | |
set_decision_diagnostic_sink | Method | |
configure | Method | |
switching_world | Property | |
configure_lifecycle | Method | |
get_settings | Method | |
get_grid | Method | |
is_configured | Method | |
is_bound_to_context | Method | |
set_active_entry | Method | |
get_active_entry | Method | |
use_session | Method | |
get_session_id | Method | |
forget_session | Method | |
clear_session_preview | Method | |
capture_preview_slot | Method | |
restore_preview_slot | Method | |
update_preview_cell | Method | |
is_preview_valid | Method | |
get_preview_ghost | Method | |
get_preview_replaced_node | Method | |
is_span_preview_active | Method | |
get_span_preview_cell_map | Method | |
get_preview_cell | Method | |
clear_preview | Method | |
rotate_preview | Method | |
get_preview_yaw_steps | Method | |
preview_yaw_degrees | Method | |
validate_cell_map | Method | |
cached_cell_map | Method | |
| Method | |
validate_cell | Method | |
validate_cell_result | Method | |
find_overlay_columns_for_family | Method | |
is_position_grounded | Method | |
get_validation_executions | Method | |
reset_validation_counter | Method | |
position | Property | |
basis | Property | |
profile | Property | |
| Property | |
try_place_report | Method | |
cells | Property | |
max_surface | Property | |
surface_name | Property | |
surface | Property | |
try_place_at | Method | |
is_cell_occupied | Method | |
is_cell_overlay | Method | |
get_placed_node | Method | |
get_family_at | Method | |
get_overlay_family | Method | |
get_overlay_families | Method | |
get_placed_count | Method | |
is_edge_occupied | Method | |
get_edge_family | Method | |
get_edge_node | Method | |
snap_edge_to_run | Method | |
is_corner_occupied | Method | |
is_face_registered | Method | |
is_face_occupied | Method | |
ObjectPlacementMountFamily3D | Field | Mount-family CELL placement (edge, top, corner, face): validation, preview and commit. See object_placement_mount_family_3d.gd. The public surface below stays on this service; each method forwards to the collaborator. |
ObjectPlacementPreviewCore3D | Field | |
validate_edge | Method | |
can_replace_edge | Method | |
get_edge_occupant_mount | Method | |
resolve_cell_span | Method | |
update_preview_cell_span | Method | |
get_preview_edge | Method | |
edge_span_cells | Method | |
update_preview_edge | Method | |
try_place_at_edge | Method | |
try_place_report_edge | Method | |
validate_face | Method | |
update_preview_face | Method | |
try_place_at_face | Method | |
try_place_report_face | Method | |
is_top_occupied | Method | |
validate_top | Method | |
validate_corner | Method | |
update_preview_top | Method | |
update_preview_corner | Method | |
try_place_at_top | Method | |
try_place_at_corner | Method | |
try_place_report_top | Method | |
try_place_report_corner | Method | |
instance_id | Property | |
projections | Property | |
provider_faces | Property | |
projections | Property | |
provider_faces | Property | |
ObjectPlacementOccupancyGate3D | Field | Occupancy admission — can this entry claim this socket? See object_placement_occupancy_gate_3d.gd. Extracted from this file (#1472): the five predicates were one policy already shared by the CELL and socket commit paths, the live move preview, and save rehydration. The gate reads occupancy only and never mutates it, so this service stays the sole writer. |
world_aabb_for_mount | Method | |
unregister_placed_node | Method | |
unregister_placed_node_local | Method | |
local_snapshot | Property | |
world_record | Property | |
snapshot | Property | |
has_live_mount_dependents | Method | |
get_last_move_refusal | Method | |
would_projection_apply_for_move | Method | |
update_placed_node | Method | |
delta | Property | |
step | Property | |
dispose | Method | |
clear_placement_registries | Method | |
snapshot_placement_state | Method | |
restore_placement_state | Method | |
rehydrate_cell_object | Method | |
yaw_steps | Property | |
profile | Property | |
cells | Property | |
mount | Property | |
occupancy_evidence | Property | |
rehydrate_corner_object | Method | |
rehydrate_face_object | Method | |
rehydrate_top_object | Method | |
get_save_metadata | Method | |
get_placed_nodes | Method | |
get_mounts | Method | |
cell_from_world_position | Method | |
cell_from_world_point | Method | |