Team Cereustooling wiki

Move, rotate and snap objects with the Blender-style keys

Checkedagainst the code on 2026-11-12 11:36

The Map Editor viewport has Blender-style keys: G, R and S start a move, rotate or scale that follows the mouse. There is also a Blender-style rotate gizmo, a key to drop objects onto the ground, and a panel that lists every key. All keys below were read from the code.

Before you start

  • View > Blender-style Keys is on (it is by default; setting MapEditor_Blender_Keys).
  • The mouse is over the viewport and the viewport has focus. Keys act on the viewport selection.
  • Blender's Z is up. Here Z is the game's Y (up) and Y is the game's Z.

Move, rotate or scale

  1. Select one or more objects.
  2. Press G (move), R (rotate) or S (scale). The selection follows the mouse and a line of text at the viewport shows the amount and the lock.
  3. Optional: press X, Y or Z to lock to that world axis. Press the same key again for the selection's own (local) axis. A third press frees it. Shift+X/Y/Z locks to the plane without that axis (move and scale only).
  4. Optional: type a number for an exact amount: metres, degrees or a scale factor.
  5. Press Enter or left click to confirm. Press Esc or right click to cancel.

A confirmed transform is one undo step.

Rotate details:

  • With no axis, R turns around the view direction.
  • Press R again while rotating for a trackball rotate. R once more goes back.
  • Pressing an axis key during a trackball switches back to a plain rotate around that axis.

Push and pull with the scroll wheel

While moving (G), the mouse wheel pushes the selection away from the camera (wheel up) or pulls it closer (down). One notch is a tenth of the selection's distance from the camera. Hold Shift for a hundredth.

  • Free move: along the line from the camera through the selection.
  • Locked to an axis: along that axis. Locked to world Z: straight up and down.
  • Locked to a plane: within that plane.

The rotate gizmo

When the gizmo is in rotate mode (Shift+E by default), Smithbox's rotate rings are replaced by a Blender-style gizmo:

  • A coloured ring: drag to turn around that axis. Only the half facing the camera is drawn.
  • The white outer ring: drag to turn around the view.
  • Inside the sphere: drag to tumble freely (trackball).

Let go of the mouse to apply. Ctrl snaps, Shift is finer, right click cancels. It follows the gizmo's World / Local space setting. Turn it off with the Blender rotate gizmo checkbox in the Shortcuts panel (setting MapEditor_Blender_Rotate_Gizmo). It is only shown when gizmos are drawn at all.

Snap to the surface

  • End drops the selection onto the surface below it.
  • Shift+End also tilts it to the slope and keeps its facing.

These work whether or not the Blender-style keys are on, with focus on the viewport or the map tree. Surfaces are the triangles of the loaded maps' assets and map pieces and the hit collision. A message says how many objects moved and how many had nothing below them. One undo step.

The Object Palette's Align to slope option does the same at placement, see place-an-object.md.

Selecting and deselecting by click

  • Click an object: select it alone.
  • Click the one selected object again: deselect it.
  • Click empty space: clear the selection.
  • Ctrl+click or Shift+click: add the object, or take it out if it is already selected.
  • In a larger selection, a plain click narrows it to the clicked object.

The Shortcuts panel

View > Shortcuts Panel shows a window titled Shortcuts (on by default). It has the Blender-style keys and Blender rotate gizmo checkboxes and three tables: Blender-style, During move / rotate / scale and Smithbox (Smithbox's own keys as currently bound). Smithbox's own keys are rebound under Shortcuts in the top menu bar. The Blender-style keys are fixed.

Key table

Blender-style keys (mouse over the viewport, nothing being dragged):

Keys Action
G Move the selection with the mouse
R Rotate the selection around the view direction (R again: trackball)
S Scale the selection
Shift+D Duplicate, then move the copies
X Delete the selection (replaces Pull to Camera)
Alt+R Clear rotation
Alt+S Clear scale
H Hide the selection in the editor
Alt+H Show everything again
Alt+A Deselect all
Numpad . Frame the selection
Ctrl+Shift+Z Redo
End Drop the selection onto the ground below it
Shift+End Drop onto the ground and tilt to match the slope (keeps facing)

During a move, rotate or scale:

Keys Action
X / Y / Z Lock to that world axis (Z is up); again for the selection's own axis; a third time frees it
Shift+X / Y / Z Lock to the plane without that axis (move and scale)
0-9 . - Type an exact amount: metres, degrees (anticlockwise seen from the axis) or a scale factor
Backspace Remove the last typed character
Ctrl (hold) Snap: 1 m, 5 degrees, x0.1
Ctrl+Shift (hold) Finer snap: 0.1 m, 1 degree, x0.01
Shift (hold) Precision: the mouse moves the transform a tenth as far
R while rotating Trackball rotate; R again goes back
Mouse wheel (move) Push the selection away (up) or pull it closer (down); Shift for small steps
G / R / S Switch between move, rotate and scale
Enter / Left click Confirm (one undo step)
Esc / Right click Cancel

Smithbox defaults that matter here (can be rebound):

Keys Action
Shift+W / Shift+E / Shift+G Gizmo: move / rotate / scale mode
Ctrl+R Reset rotation
Alt+1 Toggle the orange selection tint
Esc Deselect all
X Pull the selection to the camera (only when the Blender-style keys are off)

What goes wrong

  • A key does nothing. The mouse is not over the viewport, a text field has focus, or a mouse button is held.
  • X deleted my object. With the Blender-style keys on, X deletes instead of Pull to Camera. Ctrl+Z undoes it.
  • Alt+R cleared the rotation. With the keys on, Alt+R clears rotation instead of Smithbox's rotate on X.
  • "No collision found below the selection". Nothing is loaded under the object. Load the map that holds the ground.

Through the MCP bridge

modal_transform runs a G / R / S transform with an axis, a typed amount or a wheel push. rotate_gizmo drags a part of the rotate gizmo. The bridge also has a snap_to_surface tool, but smithbox_mcp.py does not wrap it. See mcp-bridge.md.

Source files this page documents (4)
  • smithbox:src/Smithbox.Program/Editors/Map Editor/Tools/Blender Keys/
  • smithbox:src/Smithbox.Program/Editors/Map Editor/Tools/Surface Snap/SurfaceSnap.cs
  • smithbox:src/Smithbox.Program/Editors/Viewport/Framework/ClickSelection.cs
  • smithbox:src/Smithbox.Program/Editors/Map Editor/MapEditorScreen.cs

Changed one of these? Update this page: smithbox/move-rotate-snap.md (how).