Skip to content

Grid Placement v6.0

Smooth Placement

Smooth (non-grid) placement mode in Grid Placement 6.0.

Status
Current
Version
v6.0
Source updated
Active v6.0 guide line from Grid Placement repo
Generated on
2026-09-01

SMOOTH placement uses exact world-space positions instead of snapping object placement to the grid.

Use it for furniture, clutter, rocks, vegetation, or other objects where the grid should not determine the final position. GRID remains the better choice for lattice-aligned structures and CELL/EDGE/FACE mounts.

Enable SMOOTH

Coordinate mode is per session:

session.placement_coordinate_mode= PlacementEnums.PlacementCoordinateMode.SMOOTH

Switch back with PlacementCoordinateMode.GRID.

The coordinate mode is separate from place/move/demolish actions.

Configure a footprint

Every SMOOTH placeable needs a non-zero world footprint:

entry.footprint_2d= Vector2(32,32)
entry.footprint_3d_world= Vector3(2,2,2)

SMOOTH fails closed when the footprint is missing because the plugin cannot safely answer whether the target overlaps committed placement occupancy.

Validation model

SMOOTH placement uses plugin-owned placement occupancy as the primary object-overlap authority.

A commit normally checks:

  1. selected entry/configuration;
  2. target world position and footprint;
  3. overlap against committed placement occupancy;
  4. optional physics obstacles/support when configured;
  5. final commit and stable placement identity.

Physics is an additional environment check, not the only record of whether another Grid Placement object occupies the space.

2D and 3D

Capability 2D 3D
World footprint footprint_2d footprint_3d_world
Primary overlap shape rotated 2D bounds yaw-rotated 3D bounds
Optional physics obstacles supported supported
Ground/support sampling project-specific targeting/physics path optional ground/support ray/path
World-space object sockets supported, opt-in

3D ground/support

3D SMOOTH can optionally use physics to resolve/validate the supporting surface. Keep this separate from GRID slope/support policy:

  • GRID support answers whether a grid footprint/structure may occupy the target support.
  • SMOOTH support answers whether the free world-space target has acceptable ground/environment evidence.

If a configured ground/support check misses, commit should reject rather than silently invent a surface.

3D world-space sockets

SMOOTH sockets provide magnetic object-to-object joins without using GRID mount keys.

PlacementSnapProfile3D can publish/consume socket roles such as:

  • ENDS — end-to-end pieces such as fences;
  • PERIMETER — edge/perimeter joins;
  • FACE — provider face points;
  • UP — upward/top points.

The consumer's snaps_with still controls which provider families it accepts. Socket snapping remains opt-in; a zero snap radius/no published sockets leaves the object in free SMOOTH mode.

Example uses

  • fence panel → fence panel;
  • free-positioned floor → wall;
  • wall/floor perimeter → ceiling/platform piece.

A SMOOTH socket is not a GRID EDGE/FACE/TOP mount. GRID mounts and SMOOTH sockets use different occupancy identities.

Move and demolish

SMOOTH objects use the normal placement lifecycle:

  • Move: validate the new footprint while excluding the object being moved; update authoritative occupancy only on success.
  • Cancel: keep the committed object/state unchanged.
  • Demolish: remove the placement record and occupancy transactionally.

Rotation

SMOOTH occupancy is rotation-aware. The overlap bounds are derived from the rotated footprint so a long object rotated 90° does not keep its original unrotated occupancy shape.

Save and restore

SMOOTH objects receive stable placement identity and are restored through the same placement-world coordination as GRID objects and mounts.

Do not restore a standalone SMOOTH occupancy registry independently from the authoritative placement records. Use the supported restore coordinator for the dimension you are working in.

See Save and Load.

Optional physics obstacles

Set the relevant occupied/collision mask when game-world physics bodies should also block a SMOOTH target. Leave the optional physics check disabled when placement occupancy alone is the intended rule.

Keep collision masks explicit. A misconfigured mask should not be compensated for by weakening placement occupancy rules.

Common failures

Symptom Check
“No footprint configured” Set footprint_2d or footprint_3d_world.
Preview is blocked over empty-looking ground Inspect placement occupancy and optional physics masks.
3D object has wrong Y Check the configured ground/support path and collision mask.
Socket snap never activates Provider socket roles, consumer snaps_with, snap radius, provider identity.
Duplicate join is rejected Expected when the target socket is already occupied.
Restore creates conflicts/duplicates Use coordinated placement-world restore instead of rebuilding one registry independently.