Typed host-level contract for GridPlacementHost dispatch results. Wraps heterogeneous downstream service result objects (PlacementReport, TerrainDemolishData, ValidationResults, ManipulationData, etc.) behind a stable host-owned API so that tests and debugging code do not depend on raw service-specific types. Use is_successful and get_issues() for the host-level outcome; use inner_result only for diagnostics.
Source: addons/grid_placement/systems/host/host_dispatch_result.gd
Syntax
class HostDispatchResult extends RefCountedMembers
| Name | Kind | Summary |
|---|---|---|
lifecycle_result | Property | Canonical placement-domain lifecycle result for a terminal dispatch. An empty sentinel carries a compatibility token, not a terminal attempt. |
inner_result | Property | The original downstream service result (PlacementReport, TerrainDemolishData, etc.). Prefer the typed host API for test assertions; use this only for detailed diagnostics. |
is_successful | Property | Whether the dispatch completed without errors. |
failure_summary | Property | Human-readable failure summary when the dispatch failed. Aggregated from the inner result's issue/message properties. |
action_type | Property | The action kind that was dispatched (PLACE, DEMOLISH, MOVE, etc.). |
is_empty | Property | Whether this result represents a no-op (no dispatch occurred). True when the host aborted before reaching any service method. |
no_dispatch_reason | Property | Reason the host produced a no-dispatch sentinel. This is not a lifecycle reason: no terminal placement attempt was created. The named causes are the ones the host can observe on its own input seam; a confirm that none of them explains stays INPUT_RESOLVED_NONE rather than being guessed into one of them. The gesture was resolved, but nothing was selected to act on. This is the most common swallowed click: a PLACE-mode confirm with no scene entry and no terrain in the palette. The confirm arrived while no placement, MOVE, or DEMOLISH mode was active (OFF or INFO), so the intent mapper dropped it by design. The confirm press landed on a GUI control. The positioner sees it in _input before the GUI consumes it, so the host's _unhandled_input never runs for it; the positioner reports it through GridPlacementHost.record_ui_consumed_gesture(). |
NO_DISPATCH_REASON_NAMES | Field | |
empty | Method | |
lifecycle | Property | |
r | Property | |
no_dispatch_reason_name | Method | |
get_lifecycle_result | Method | |
get_issues | Method | |
get_surface_of | Method | |
get_snapped_y | Method | |
get_snapped_cell | Method | |
from_report | Method | |
from_demolish_data | Method | |
missing | Property | |
ok | Property | |
msg | Property | |
lifecycle | Property | |
from_validation_results | Method | |
missing | Property | |
issues | Property | |
msg | Property | |
lifecycle | Property | |
from_manipulation_data | Method | |
missing | Property | |
ok | Property | |
msg | Property | |
lifecycle | Property | |
pi_children | Property | |
pi | Property |