Runtime service composition derived from [GridPlacementSettings]. Holds nullable domain services — the factory reads the game's settings to decide which services to instantiate. A terrain-only game omits [member manipulation_service]; a platformer omits [member terrain_service]. The group is [RefCounted] (not a [Resource]) because service composition is a runtime decision derived from existing settings, not editor-authored data. The settings already express domain decisions (e.g. [code]settings.manipulation == null[/code] means no manipulation). Lifecycle: [codeblock] var group := PlacementServiceGroupFactory.create_from_bundle(session.grid_placement_bundle, session) host.configure(session, group) # ... runtime ... group.dispose() [/codeblock]
Source: addons/grid_placement/services/placement_service_group.gd
Syntax
class PlacementServiceGroup extends RefCountedMembers
| Name | Kind | Summary |
|---|---|---|
terrain_service | Property | 6.0.0-211: terrain slot typed by capability contract. Concrete instance is 2D or 3D depending on factory injection. |
manipulation_service | Property | 6.0.0-211: manipulation slot typed by capability contract. |
grid_targeting_service | Property | 6.0.0-211: targeting slot typed by capability contract. |
brush_service | Property | 6.0.0-210/211: brush slot typed by capability contract. Factory refuses to attach a brush whose supported_dimensions() does not include the active dimension; 3D groups simply leave this null. |
brush_coordinator | Property | Typed 2D view of [member brush_service]: the host's 2D brush paths need [BrushCoordinator]-only methods. Null when no service is set or the service is a 3D-only implementation. |
refund_service | Property | Scene-free refund service. Null when manipulation not configured. |
drag_service | Property | Scene-free drag service. Always available (zero cost when unused). |
object_placement_service | Property | Scene-free object placement service. Owns the build/place flow without requiring a scene node — wraps [PlacementBuildOrchestrator] directly. Created when [GridPlacementSettings.building] is non-null for a 2D group. The internal 3D path uses its separate [ObjectPlacementService3D]. |
target_highlighter | Property | Scene-free hover highlighter. Tints the hovered target by mode and Manipulatable state (movable/demolishable/info colors). Created for 2D groups only: it modulates CanvasItems, so the 3D path (which owns its separate target_highlight_3d) leaves this null. |
register_terrain | Method | |
register_manipulation | Method | |
register_targeting | Method | |
register_brush | Method | |
get_object_placement_service_for_session | Method | |
session | Property | The session this group was configured from. |
configure | Method | |
swap_active_states | Method | |
dispose | Method | |
remove_session | Method | |
get_runtime_issues | Method |