simvx.editor.state

Editor State — Central state manager for the editor.

Module Contents

Classes

EditorState

Central state manager holding all editor state.

API

class simvx.editor.state.EditorState[source]

Bases: simvx.core.file_state.FileStateMixin, simvx.editor.scene_file_ops.SceneFileOps, simvx.editor.script_ops.ScriptOps, simvx.editor.node_ops.NodeOps

Central state manager holding all editor state.

Acts as the single source of truth for the editor — panels read from and write to this object, coordinating via signals.

Scene-specific state (edited_scene, selection, undo_stack, editor_camera, viewport_mode, _modified) is delegated to the active scene tab via WorkspaceTabs. Fallback objects are used when no scene tab is active.

Operations are organised into mixins:

  • SceneFileOps — new/open/save scene, file dialogs, recent files

  • ScriptOps — attach/detach/create/save scripts

  • NodeOps — node CRUD, placement mode, scene title

Initialization

property edited_scene: simvx.core.SceneTree
property current_scene_path: pathlib.Path | None
property selection: simvx.core.Selection
property undo_stack: simvx.core.UndoStack
property editor_camera: simvx.core.EditorCamera3D
property viewport_mode: str
property project_root: str
property modified: bool
play_scene()[source]

Enter play mode on the active scene tab.

pause_scene()[source]

Toggle pause during play mode.

stop_scene()[source]

Exit play mode and restore the scene.

new_scene(root_type: type = Node, *, populate: bool = False)
open_scene(path: str | pathlib.Path)
save_scene(path: str | pathlib.Path | None = None)
set_script_text(text: str)
attach_script(node: simvx.core.Node, path: str)
detach_script(node: simvx.core.Node)
create_script(node: simvx.core.Node, template_name: str, class_name: str, rel_path: str) str | None
get_scene_title() str
find_node(path: str) simvx.core.Node | None
rename_node(node: simvx.core.Node, new_name: str)
set_node_property(node: simvx.core.Node, prop: str, value)
add_node(node: simvx.core.Node, parent: simvx.core.Node | None = None)
remove_node(node: simvx.core.Node)
duplicate_node(node: simvx.core.Node) simvx.core.Node | None
enter_place_mode(node_class: type)
cancel_place_mode()
place_node_at(x: float, y: float, parent: simvx.core.Node | None = None)