Grid Placement has two object coordinate modes:
- GRID — snap to a 2D tile/3D GridMap lattice and use grid-keyed occupancy/mounts.
- SMOOTH — place at world-space positions with footprint overlap validation and optional world-space sockets.
GRID is the default. Use SMOOTH only when free positioning is part of the desired behavior.
Choose GRID when
- objects must tile or align predictably;
- cell/footprint occupancy is gameplay-significant;
- 3D structures use CELL, EDGE, or FACE/socket mounts;
- fences/walls/corners should share canonical grid edges;
- deterministic grid coordinates matter for rules/save data.
2D terrain painting is also grid-based, but it is a separate terrain workflow rather than SMOOTH-vs-GRID object placement.
Choose SMOOTH when
- exact cursor/world position matters more than cell alignment;
- clutter/organic props should not look grid-locked;
- 3D GridMap cells are too coarse for the object;
- object-to-object joins should use optional world-space sockets rather than CELL/EDGE/FACE keys.
SMOOTH still validates occupancy. “Free placement” means free coordinates, not “ignore collisions/overlap.”
Switching mode
Coordinate mode belongs to the PlacementSession:
session.placement_coordinate_mode= PlacementEnums.PlacementCoordinateMode.SMOOTH
session.placement_coordinate_mode= PlacementEnums.PlacementCoordinateMode.GRIDThis is independent from interaction actions such as place/move/demolish.
Footprints
SMOOTH entries need an explicit non-zero world footprint so overlap checks have geometry to validate.
entry.footprint_2d= Vector2(32,32)
entry.footprint_3d_world= Vector3(2,2,2)Missing footprint data should fail closed rather than silently allowing overlapping placement.
GRID uses the entry's grid footprint/mount occupancy instead.
Occupancy model
| Mode | Primary occupancy authority |
|---|---|
| GRID | Canonical cell/footprint/EDGE/FACE keys in the shared placement world. |
| SMOOTH | World-space footprint occupancy in the shared placement world. |
Optional physics queries can add environmental obstacle/support checks, but physics bodies are not a replacement for plugin placement identity/occupancy.
GRID and SMOOTH objects share the same placement world, so cross-mode conflicts can be rejected consistently where the supported bounds/evidence overlap.
3D mounts vs world sockets
Do not mix the two concepts:
- GRID EDGE/FACE — lattice-authoritative mount keys.
- SMOOTH sockets — provider-owned world-space snap points.
A placeable may support both workflows through configuration, but a GRID edge is not the same occupancy key as a SMOOTH socket.
Move, remove, save, restore
Both modes participate in the normal lifecycle:
- move validates the new position before changing authoritative occupancy;
- cancel leaves the committed object unchanged;
- demolition removes placement/occupancy state;
- save/restore rebuilds GRID, SMOOTH, mounts, and identity as one coordinated placement world.
See Save and Load.
Quick decision table
| Need | Use |
|---|---|
| Tile/cell aligned building | GRID |
| CELL/EDGE/FACE modular structure | GRID |
| 2D terrain brush | 2D terrain workflow (grid-based) |
| Free furniture/clutter | SMOOTH |
| Organic 3D prop | SMOOTH |
| World-space magnetic object join | SMOOTH + sockets |
| Building valid on sloped support but still upright | GRID + slope/support policy |