Sets: save a selection under a name and place it again anywhere, on any map.
- The library gets an OBJECTS / SETS switch. SETS saves the selected
objects as a set and lists the saved sets to place or delete (Delete asks
for a second press).
- A set is a park file in <profile>/object_sets/<name>.park.json, so it
shares the park format, its 2 MB limit and its name rules. Positions are
relative to the set's anchor: the middle of its footprint, at its lowest
origin.
- Placing follows the cursor as one wire cube per object, on surfaces or
the grid plane; the mouse wheel turns it by the angle step. A click
pastes the whole set: one undo step, under the paste path's object and
session limits. Sets with objects missing from the catalog cannot be
placed.
- A placed or pasted group is then selected with the move gizmo.
Editing groups:
- Local axes work for multi-selections. A placed set's axes are the
rotation it was placed with, plus every later turn; any other group uses
its last selected object's rotation. Applying a moved group does not snap
its own rotation to the angle grid.
- Duplicate (button or Ctrl+D) copies every selected object at its saved
position, rotation and scale, one grid step along X, as one paste.
- On a server with object scaling off, pastes (sets, duplicates, Ctrl+V)
are made at 1x.
Tests cover set storage (anchor, round trip, replace, names, damaged files,
delete), saving and placing a set through the UI (surface, wheel, one
paste, no live preview), selecting it with its own axes, moving it along
them, and duplicating with and without scaling.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fixes in the stock park editor that a multi-object edit (a paste, an undo,
a loaded park mod) runs into:
- Pasted objects lost their world link. A paste creates its objects one by
one and saves them when the whole edit completes, but the placements
runtime reconciles after every create and unlinked rows whose id was not
saved yet. Every create unlinked the ones before it: only the last pasted
object could be selected, moved or deleted, and deleting the others
removed them from the layout but left them standing in the world. The
reconcile now counts the editor's pending layout as saved.
- Scale was lost on paste, undo and park-mod load. The native create recipe
has no scale lane, so a created object spawns at 1x. Only the placement
preview resized it afterwards; a create step with a scale now becomes a
move, verified by the server tick's readback like any move.
- Scale was lost on level reload. Restored objects spawn at 1x and the
pose poll then saved 1x over the saved scale. Restores with a scale are
resized on the next server tick, and the poll leaves them alone until the
resize is read back.
- Delete did nothing with several objects selected. Delete (key or button)
now removes the whole selection as one edit and one undo step.
Tests: the transaction fixture's create now spawns at 1x like the game and
reconciles after every create like placement_finish_batch; new checks
cover pasting a scaled group, every pasted object keeping its link, moving
and rotating a pasted group, and multi-delete with undo.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Server: object scaling can be turned off
A dedicated server can stop players resizing the objects they place.
- "allow_object_scaling" in the config's "players" section (default true),
and "object-scaling on|off" from the console or an admin. A change is
saved and applies at once.
- Off: the server shares every player's objects at their own size, whatever
that player's game sent. Admins can still resize theirs, as with the
object limit.
- The roster tells each game. In the park editor of a player on such a
server the SCALE mode is not offered, its Y shortcut does nothing, the
scale box is disabled with a note saying why, and what is placed or edited
is its own size.
- An object resized before the setting was turned off is its own size for
everyone else straight away; its owner sees it resized until they edit it.