Runs Grid Placement: handles input, switches modes, and does the placing, moving, and demolishing. Add one to your scene and assign grid_placement_bundle. Each player has a PlacementSession; for split-screen, register one session per player with the same host.
Source: addons/grid_placement/systems/host/grid_placement_host.gd
Syntax
class GridPlacementHost extends NodeMembers
| Name | Kind | Summary |
|---|---|---|
grid_placement_bundle | Property | Grid Placement configuration for the whole game. |
session | Property | Optional session this host configures itself from at _ready(). Assign it to skip the controller-side bootstrap; leave it empty when a controller owns session lifetime (split-screen, save/load, runtime-created sessions). |
auto_configure | Property | When true, _ready() composes the services from session and binds the scene's consumers. Off by default: a controller that configures the host itself must not compose services twice. |
auto_create_3d_feedback | Property | When true (default), the host creates the 3D placement feedback nodes (indicator manager, target highlight, indicator layer) itself in 3D mode. Set false to instance them manually for custom wiring. |
auto_create_2d_feedback | Property | When true (default), the host creates the 2D placement feedback node (indicator manager) itself in 2D mode. Set false to instance it manually. |
object_placement_settings_3d | Property | Settings for the 3D object service that auto_configure builds. Null falls back to the defaults. A service bound by the scene wins over it. |
HostLifecycleEmitter | Field | Lifecycle-result emission, attempt-id minting, and telemetry recording (see host_lifecycle_emitter.gd). Extracted to keep this hotspot under its line ceiling; owns the bus, the allocator, and the diagnostic recorder, so the public methods below stay thin delegates. |
get_lifecycle_bus | Method | |
get_diagnostic_records | Method | |
record_preview_diagnostic | Method | |
record_decision_diagnostic | Method | |
get_latest_diagnostics_json | Method | |
clear_diagnostics | Method | |
refresh_diagnostic_detail | Method | |
DEFAULT_MAX_BRUSH_CELLS | Field | |
find_host_from | Method | |
register_session | Method | |
unregister_session | Method | |
get_session_for_controller | Method | |
bind_scene_consumers | Method | |
watch_scene_consumers | Method | |
HostSceneConsumerBinder | Field | Scene-consumer binding collaborator (bind/watch bookkeeping + typed dispatch). |
HostSessionRetire | Field | Session retirement collaborator (cancel live gestures, layer stash, programmatic exit), extracted to keep this hotspot under its line ceiling. Owns state + behavior + lifecycle; the two public API methods below stay thin delegates. |
get_active_sessions | Method | |
get_session_registry_count | Method | |
configure | Method | |
collect_startup_diagnostics | Method | |
report_startup_diagnostics | Method | |
get_smooth_coordinator | Method | |
HostBrushShapePolicy | Field | Brush shape rules: which shape a session may use, and how scene_entry and terrain selection move it (see host_brush_shape_policy.gd). |
HostSurfacePreview2D | Field | 2D surface-preview collaborator (shared stacking-socket ledger + the per-frame seat), extracted to keep this hotspot under its line ceiling. |
get_surface_registry_2d | Method | |
is_ready | Method | |
get_runtime_issues | Method | |
get_session | Method | |
get_settings | Method | |
get_actions | Method | |
get_templates | Method | |
get_runtime_checks | Method | |
get_input_handler | Method | |
get_last_dispatch_result | Method | |
record_ui_consumed_gesture | Method | |
record_external_dispatch_result | Method | |
dispatch_smooth_placement | Method | |
get_smooth_occupancy_registry_2d | Method | |
get_smooth_occupancy_registry_3d | Method | |
get_placement_world_registry_3d | Method | |
get_placement_world_registry | Method | |
get_lifecycle_allocator | Method | |
get_placement_world_id | Method | |
get_placement_session_id | Method | |
snapshot_lifecycle | Method | |
restore_lifecycle | Method | |
set_object_placement_service_3d | Method | |
get_object_placement_service_3d | Method | |
get_indicator_manager_3d | Method | |
get_target_highlight_3d | Method | |
get_indicator_layer_3d | Method | |
get_indicator_manager_2d | Method | |
get_object_placement_service_3d_for_session | Method | |
get_smooth_placement_service_3d | Method | |
get_smooth_placement_service_2d | Method | |
get_place_machine | Method | |
cancel_all_drags | Method | |
enter_terrain_mode | Method | |
sync_brush_shape_to_terrain | Method | |
targeting | Property | |
owns_session | Method | |
select_entry_for_session | Method | |
machine | Property | |
object_service | Property | |
deselect_entry_for_session | Method | |
deselect_entry | Method | |
exit_placement_for_session | Method | |
select_terrain_for_session | Method | |
enter_place_router_for_session | Method | |
set_brush_shape_for_session | Method | |
get_brush_shape_for_session | Method | |
get_brush_state_for_session | Method | |
is_painting_terrain_for_session | Method | |
get_terrain_service_for_session | Method | |
get_terrain_preview_cells_for_session | Method | |
positioner | Property | |
state | Property | |
current_cell | Property | |
max_cells | Property | |
tile_shape | Property | |
estimate | Property | |
set_brush_shape | Method | |
get_terrain_service | Method | |
get_manipulation_service | Method | |
get_grid_targeting_service | Method | |
get_brush_coordinator | Method | |
get_refund_service | Method | |
get_drag_service | Method | |
get_object_placement_service | Method | |
HostTerrainPaint3D | Field | 3D terrain paint stroke: held-drag painting and the 3D terrain intent dispatch. See host_terrain_paint_3d.gd for the stroke state they share. |
HostTerrainDispatch | Field | Terrain intent routing (2D brush, single-cell place and demolish). The 3D drag intents reach _terrain_paint_3d. See host_terrain_dispatch.gd. |
states | Property | |
mode | Property | |
HostIntentRouter | Field | Intent-to-handler routing (see host_intent_router.gd). Extracted to keep this hotspot under its line ceiling; the host stays the input facade and wires one closure per intent, so the router owns the mapping and nothing else. Exactly one _unhandled_input entry point stays here. |
HostEyedropperDispatch | Field | Eyedropper collaborator. Created on first use so the host stays the single input facade and the pipette costs nothing until it is pressed. |
HostObjectShapeCommit | Field | Commits an object LINE/rectangle drag (see host_object_shape_commit.gd). |
HostObjectSpanCommit3D | Field | 3D object span commit (LINE / RECTANGLE drag released on the GRID). See host_object_span_commit_3d.gd. |
is_3d | Property | |
issue | Property | |
report | Property | |
report | Property | |
session | Property | |
report | Property | |
active_session | Property | |
attempt_id | Property | |
allocator | Property | |
lifecycle | Property | |
get_positioner_cell | Method | |
get_positioner_cell_3d | Method | |
get_terrain_target_cell_3d | Method | |
HostObjectPlacementDispatch | Field | Object-placement dispatch (see host_object_placement_dispatch.gd): preconditions, coordinate-mode routing, and the attempt-id lifetime around the build. Extracted to keep this hotspot under its line ceiling. The collaborator holds no session state and reaches no host private: every dependency below is passed in as a closure. |
result | Property | |
rebuild_smooth_occupancy_from_scene | Method | |
is_lenient_ground_move | Method | |
move_carry_ground_height | Method | |
begin_move_ground_carry | Method | |
move_drop_preview_valid | Method | |
HostMoveCarryPolicy | Field | 3D move ground-carry policy (leniency, carry height, drop preview, grounding). |
HostDispatchFailureAnnouncer | Field | |
HostManipulationDispatch | Field | |
wants_off_mode | Method |