Placement Kit


Fit a hat, a backpack or a held tool to your character while the game runs, then paste the numbers into your code.

Anything that hangs off a bone or an attachment needs an offset: a position, a rotation, a scale. Guessing those numbers in a text editor costs a recompile per nudge. This kit gives you sliders in the running game and a Copy button that hands you the finished line, with the frame it was measured against named in the comment above it. Paste the line into your project, call ApplyTo on it, and the accessory sits where you put it.

Mounts resolve by model attachment name first (hold_R, hat), then by bone name (hand_R, spine_2), and fall back to the character root, so a renamed attachment never leaves you staring at an empty screen. The step toggle sets what the plus and minus buttons are worth: xfine divides the row's step by ten, coarse multiplies it, which on accessories is 0.025, 0.25 and 2.5 units. Reset returns a target to the transform it had when you registered it, not to zero.

The second half is scene authoring. Press B for ghost placement: props follow your aim, green where your own validity check allows them, and land as world-space placements. Export writes both populations at once, the character-relative offsets and the world placements, as JSON and as a paste-ready C# block.

The demo scene opens on a dressed citizen with a tool in the right hand, a hat on the head and a pack on the spine. To find it after install: in the Asset Browser select Everything and search placement_demo, or walk the sidebar to Libraries, fieldguide.placement, Assets, scenes. All three accessories are bone mounts re-pinned every frame, so they ride the idle animation instead of sliding with the root, and the tweak panel is already open because fitting them is what the scene is for. Every model it uses ships with the engine, so you need no art to start. Press P for the panel, B for placement, H to hide the key card.

Requirements: the kit reads two stock engine actions, attack1 to place and attack2 to orbit. A fresh s&box template project already has both and you have nothing to do. If your project's Input.config was trimmed, re-add attack1 on mouse1 and attack2 on mouse2, then stop and start play mode; restart the editor if they still do not register.

MIT, source-distributed. It compiles alone, references no other library and no game code, and reaches back into your project through a few small seams. Read it, edit it, delete the modules you do not need, starting with the Code/Demo folder.

One developer, extracted from the in-game placement workflow in Berm.

Kit page: https://sboxguide.dev/kits#placement-kit
Changelog: https://sboxguide.dev/changelog/placement-kit