Placement entry for instancing scene objects into the game world. Carries a [member packed_scene] plus object-specific tool/rule overrides. The canonical replacement for the v5 Placeable class. Runtime-instantiated: games call ScenePlacementEntry.new() to populate catalogs and the engine reads it on placement passes. Do not mark @tool.
Source: addons/grid_placement/placement/placeable/scene_placement_entry.gd
Syntax
class ScenePlacementEntry extends PlacementEntryMembers
| Name | Kind | Summary |
|---|---|---|
display_name | Property | Display name for in-game reading. |
packed_scene | Property | Scene to instance when placed. |
profiles | Property | Placement profiles for grouping entries with shared behavior. Profiles carry their own [member PlacementProfile.placement_rules] and [member PlacementProfile.supported_object_tools] that layer into the three-tier rule/tool resolution. |
snap_profile_3d | Property | Optional 3D snap-category metadata (family + accept-list). Consulted by [ObjectPlacementService3D] when validating 3D placements; ignored in 2D. |
footprint_2d | Property | Footprint in 2D world units (x, y) for smooth/free placement mode. The object occupies this axis-aligned rectangle centered on its position. Required for smooth placement; default [Vector2.ZERO] makes smooth placement fail closed until a footprint is configured. |
footprint_3d | Property | Footprint in GridMap cells (x, z) for 3D grid placement. The targeted cell is the footprint's minimum corner; validation checks occupancy, ground, and the active support policy across every covered column. Ignored in 2D. |
footprint_3d_world | Property | Footprint in 3D world units (x, y, z) for smooth/free placement mode. The object occupies this axis-aligned box centered on its position. Required for smooth 3D placement; default [Vector3.ZERO] means no footprint and the service will fail closed. |
seam_bounds_3d | Property | Authored mesh truth for GRID seam closure, in entry-local space unrotated: the visual AABB of packed_scene's meshes. Consumed only when the snap profile enables seam_close_to_partner; default empty means unset and the closure is a no-op. A GdUnit contract test asserts these bounds still match the live mesh, so the data cannot rot silently. |
custom_min_support_ratio | Property | -1 means inherit ObjectPlacementSettings3D.min_support_ratio. |
custom_world_up_clearance | Property | -1 means inherit ObjectPlacementSettings3D.world_up_clearance. |
custom_max_support_planarity_error | Property | -1 means inherit ObjectPlacementSettings3D.max_support_planarity_error. |
custom_max_unsupported_edge_ratio | Property | -1 means inherit ObjectPlacementSettings3D.max_unsupported_edge_ratio. |
custom_require_center_support | Property | -1 = inherit, 0 = do not require center support, 1 = require center support. |
tool_override_mode | Property | How this entry's [member tool_overrides] interact with its profiles' [member PlacementProfile.supported_object_tools]. See [enum ToolOverrideMode]. |
tool_overrides | Property | Tools added or removed depending on [member tool_override_mode]. - [enum INHERIT]: ignored (profiles provide the full list) - [enum REPLACE]: this list IS the full tool set - [enum ADD]: these are unioned with profile tools - [enum REMOVE]: these are subtracted from profile tools |
catalog_locked | Property | When true, catalog UI shows this entry as locked (not selectable). Used by demos to illustrate an unlock-gated placeable without a grey placeholder. |
get_build_costs | Method | |
get_display_name | Method | |
get_load_data | Method | |
load_resource | Method | |
get_packed_root_name | Method | |
resolve_object_tools | Method | |
get_editor_issues | Method | |
get_runtime_issues | Method | |
UID | Field | |
FILE_PATH | Field |