Scene-free object placement service. Owns the object build/place flow without requiring a scene node. Wraps [PlacementBuildOrchestrator.run_build] directly so host-path object placement is scene-free. Lifecycle: [codeblock] var service := ObjectPlacementService.new() service.configure(states, settings, indicator_context) service.create_preview(placeable) var report := service.try_build(placeable, PlacementEnums.PlacementType.SINGLE) service.clear_preview() [/codeblock] Hosted by [GridPlacementHost] via [PlacementServiceGroup].
Source: addons/grid_placement/services/object_placement_service.gd
Syntax
class ObjectPlacementService extends RefCountedMembers
| Name | Kind | Summary |
|---|---|---|
SERVICE_NAME | Field | SSOT for this service's gameplay-facing issue messages. Both the service and its tests reference these constants so the player-facing text and the service tag never drift apart. |
MSG_OVERLAPS_COMMITTED | Field | |
MSG_INDICATOR_MANAGER_MISSING | Field | |
SIM_MIN_VALIDATIONS | Field | Ordered-sim work budgets (see [method simulate_ordered_cells]). A run validates at most SIM_MAX_VALIDATIONS seats and iterates at most maxi(SIM_MIN_SCANNED, validations SIM_SCANNED_PER_VALIDATION) cells, where validations = mini(SIM_MAX_VALIDATIONS, maxi(SIM_MIN_VALIDATIONS, cap SIM_VALIDATIONS_PER_PLACEMENT)) and cap is the placement cap (or the default drag budget when uncapped). The floor covers dense legit gestures with margin (a 60x60 smithy drag needs ~276 validations for 7 accepts); the ceiling bounds hostile fields. Deterministic counts, so preview and commit truncate identically. |
SIM_VALIDATIONS_PER_PLACEMENT | Field | |
SIM_MAX_VALIDATIONS | Field | |
SIM_MIN_SCANNED | Field | |
SIM_SCANNED_PER_VALIDATION | Field | |
set_preview_diagnostic_sink | Method | |
configure | Method | |
set_world_registry | Method | |
set_states | Method | |
dispose | Method | |
get_runtime_issues | Method | |
create_preview | Method | |
get_preview | Method | |
set_invalid_marks_suppressed | Method | |
get_last_report | Method | |
clear_preview | Method | |
try_build | Method | |
manager | Property | |
missing_report | Property | |
active_preview | Property | |
missing_preview_report | Property | |
seat_map | Property | |
missing_map_report | Property | |
missing_tileset_report | Property | |
preview_local | Property | |
anchor_mode | Property | |
entry_ignore | Property | |
profile_ignore | Property | |
footprint | Property | |
authority_report | Property | |
ctx | Property | |
simulate_ordered_cells | Method | |
accepted_cells | Property | |
accepted_rects | Property | |
anchor_mode | Property | |
footprint | Property | |
preview | Property | |
manager | Property | |
can_validate | Property | |
saved_local | Property | |
entry_ignore | Property | |
profile_ignore | Property | |
live_rotation | Property | |
anchor_offset | Property | |
setup_done | Property | |
capped | Property | |
effective_cap | Property | |
validation_budget | Property | |
scan_budget | Property | |
scanned | Property | |
validated | Property | |
cell | Property | |
seated_pos | Property | |
rect | Property | |
seat_before | Property | |
effective_drag_cap | Method | |
budget | Property | |
footprint | Property | |
tiles | Property | |
manager | Property | |
targeting_state | Property | |
category_rules | Property | |
lifecycle | Property | |
unregister_placed_node | Method | |
update_placed_node | Method | |
action_data | Property |