simvx.editor.panels.scene_tree¶
Scene Tree Panel – hierarchical view of the scene’s node tree.
Displays the node hierarchy from the edited scene, supports selection, right-click context menu, add/delete/duplicate/rename/copy/paste actions, and an Add Node dialog for creating new nodes by type. All mutating operations go through the UndoStack so they are fully reversible.
Module Contents¶
Classes¶
Displays and manages the node hierarchy of the edited scene. |
Functions¶
Register a custom node type so it appears in the Add Node dialog. |
Data¶
API¶
- simvx.editor.panels.scene_tree.__all__¶
[‘SceneTreePanel’, ‘register_addable_type’]
- simvx.editor.panels.scene_tree.register_addable_type(name: str, cls: type, icon: str = '⊕')¶
Register a custom node type so it appears in the Add Node dialog.
Args: name: Display name in the dialog (e.g.
"TicTacToeGame"). cls: The node class to instantiate when selected. icon: Optional text icon (default: circled plus).
- class simvx.editor.panels.scene_tree.SceneTreePanel(editor_state: simvx.editor.state.EditorState, **kwargs)¶
Bases:
simvx.core.ControlDisplays and manages the node hierarchy of the edited scene.
Features: - TreeView reflecting scene node hierarchy - Text icons per node type - Filter bar in the header - Right-click context menu (Add, Delete, Duplicate, Rename, Copy, Paste) - Keyboard shortcuts (Del, F2, Ctrl+D, Ctrl+C, Ctrl+V) - All mutations go through UndoStack - Syncs with EditorState.selection - Add Node dialog overlay for choosing node type
Signals: node_reparented: Emitted as (node, old_parent, new_parent) after reparent.
Initialization
- HEADER_HEIGHT¶
28.0
- node_reparented¶
‘Signal(…)’
- ready()¶
Wire up signals after the node enters the tree.
- open_add_node_dialog()¶
Open the Add Node type dialog. Can be called externally (e.g. from menus).
- reparent_node(node: simvx.core.Node, new_parent: simvx.core.Node)¶
Reparent node under new_parent with undo support.
- process(dt: float)¶
Update child positions each frame to follow panel size.
- draw(renderer)¶
- size_x¶
‘Property(…)’
- size_y¶
‘Property(…)’
- property size: simvx.core.math.types.Vec2¶
- get_theme() simvx.core.ui.core.Theme¶
- get_rect() tuple[float, float, float, float]¶
- get_global_rect() tuple[float, float, float, float]¶
- is_point_inside(point) bool¶
- set_anchor_preset(preset: simvx.core.ui.core.AnchorPreset)¶
- set_focus()¶
- grab_focus()¶
- release_focus()¶
- has_focus() bool¶
- focus_next_control()¶
- focus_previous_control()¶
- grab_mouse()¶
- release_mouse()¶
- set_drag_preview(control: simvx.core.ui.core.Control)¶
- draw_popup(renderer)¶
- is_popup_point_inside(point) bool¶
- popup_input(event)¶
- dismiss_popup()¶
- z_index¶
‘Property(…)’
- z_as_relative¶
‘Property(…)’
- property absolute_z_index: int¶
- property position: simvx.core.math.types.Vec2¶
- property rotation: float¶
- property rotation_degrees: float¶
- property scale: simvx.core.math.types.Vec2¶
- property global_position: simvx.core.math.types.Vec2¶
- property global_rotation: float¶
- property global_scale: simvx.core.math.types.Vec2¶
- property forward: simvx.core.math.types.Vec2¶
- property right: simvx.core.math.types.Vec2¶
- translate(offset: tuple[float, float] | numpy.ndarray)¶
- rotate(radians: float)¶
- rotate_deg(degrees: float)¶
- look_at(target: tuple[float, float] | numpy.ndarray)¶
- transform_points(points: list[simvx.core.math.types.Vec2]) list[simvx.core.math.types.Vec2]¶
- draw_polygon(renderer, points: list[simvx.core.math.types.Vec2], closed=True, color=None)¶
- wrap_screen(margin: float = 20)¶
- script_error_raised¶
‘Signal(…)’
- classmethod __init_subclass__(**kwargs)¶
- property name: str¶
- property process_mode: simvx.core.descriptors.ProcessMode¶
- reset_error() None¶
- add_child(node: simvx.core.node.Node) simvx.core.node.Node¶
- remove_child(node: simvx.core.node.Node)¶
- reparent(new_parent: simvx.core.node.Node)¶
- get_node(path: str) simvx.core.node.Node¶
- find_child(name: str, recursive: bool = False) simvx.core.node.Node | None¶
- find(node_type: type) simvx.core.node.Node | None¶
- property path: str¶
- add_to_group(group: str)¶
- remove_from_group(group: str)¶
- is_in_group(group: str) bool¶
- enter_tree() None¶
- exit_tree() None¶
- physics_process(dt: float) None¶
- input_event(event: simvx.core.events.InputEvent) None¶
- input(event: simvx.core.events.TreeInputEvent) None¶
- unhandled_input(event: simvx.core.events.TreeInputEvent) None¶
- start_coroutine(gen: simvx.core.descriptors.Coroutine) simvx.core.descriptors.CoroutineHandle¶
- stop_coroutine(gen_or_handle)¶
- destroy()¶
- queue_free¶
None
- property tree: simvx.core.scene_tree.SceneTree¶
- get_tree() simvx.core.scene_tree.SceneTree¶
- __getitem__(key: str)¶
- classmethod get_properties() dict[str, simvx.core.descriptors.Property]¶
- get_settings¶
None
- __repr__()¶