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 RefCountedMembers
| 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 ([code]ManipulationSettings.failed_object_has_dependents[/code]) so the player reads one message for one rule, whichever layer refuses. |
get_last_move_drop_result | Method | |
set_preview_diagnostic_sink | Method | |
set_decision_diagnostic_sink | Method | |
configure | Method | |
configure_lifecycle | Method | |
get_settings | Method | |
get_grid | Method | |
is_configured | 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 | |
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 | |
footprint_is_entirely_void | 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 | |
footprint | 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 | |
validate_edge | Method | |
can_replace_edge | Method | |
get_edge_occupant_mount | Method | |
resolve_cell_span | Method | |
update_preview_cell_span | Method | |
update_preview_edge | Method | |
try_place_at_edge | Method | |
try_place_report_edge | Method | |
report | Property | |
issues | Property | |
node | Property | |
validate_face | Method | |
update_preview_face | Method | |
try_place_at_face | Method | |
try_place_report_face | Method | |
resolution | Property | |
is_top_occupied | Method |