Scenes & Editing

Once a project is open, a File / Edit menu bar sits above the toolbar. This is milestone M2 of the roadmap.

File menu

ItemShortcutBehaviour
New Scene⌘/Ctrl NClear the world to a fresh Camera + Sun (untitled).
Open Scene…Native file picker; loads a *.scene.json.
Save⌘/Ctrl SSave to the current file. Untitled scenes fall through to Save As.
Save As…Native save dialog; becomes the new current file.
Close ProjectReturn to the Hub.

The window title shows the scene file, the project name, and a leading * when there are unsaved changes:

* main.scene.json — MyGame — SafiEngine

Unsaved-changes guard

New Scene, Open Scene, and Close Project check the dirty flag first. If the scene has unsaved edits, a modal asks Save / Discard / Cancel before continuing. The dirty flag is set by any authoring edit (it ignores Play-mode simulation) and cleared on save, load, or new.

Edit menu

ItemShortcutBehaviour
Undo⌘/Ctrl ZStep back through the undo ring (count shown).
Redo⌘/Ctrl ⇧ ZStep forward.
Cut⌘/Ctrl XCopy the selection, then delete it.
Copy⌘/Ctrl CSnapshot the selected entities to the clipboard.
Paste⌘/Ctrl VInstantiate the clipboard as new entities (fresh stable ids), selected.
DeleteDelete the selected entities.

Paste, duplicate, and prefab instancing all go through one engine helper, safi_scene_instantiate_snapshot, which turns a serialized snapshot into brand-new entities with fresh stable ids and rewires parent links within the pasted set.

Note: entity create / delete is not yet on the undo ring (M6 covers component edits). Undo of a paste or delete is a later item.

See also