# Editor Overview This document outlines the in-app editor UI, its panels, and common workflows. ## Launching the Editor - Start the app with the editor flag enabled. - The editor UI appears as dockable panels around the Game Window. ## Layout - DockSpace host with a top menu bar. - You can drag and drop to move panels around. - Panels: Game Window, Scene, Assets, Inspector, Log Viewer. ## Menu Bar ### Game - Quit: request a clean shutdown. ### Scene - New: clear the current scene. - Load: load a scene from a TOML-like file path. - Save As: save the current scene to a file path. ### View - Toggle Log Viewer, Scene, and Inspector panels. - Toggle Assets panel. ## Game Window - Renders the current scene view. - Resizes with the available docked panel space. ## Scene Panel - Displays the entity hierarchy as a tree. - Drag and drop entities to re-parent. - Drop on the bottom target to clear parent. - Create Entity and Delete Selected controls. ## Inspector Panel - Shows components for the selected entity. - Add Component dropdown lists only components not yet on the entity. - Remove buttons appear on removable components. ### Components - Tag: rename the entity. - Transform: position, scale, rotation (degrees in UI). - Velocity: linear and angular velocity. - Model Renderer: model id, shader id, color, outline. - Texture: texture id. - UV Transform: scale, offset, rotation (radians). - Script: per-entity script path and enabled toggle. - Camera: position, target, up, FOV, projection, helper actions. - Light: direction, color, intensity, helper presets. - Material: material id. - Render Pass: order, depth flags, shader id. - World Transform: read-only computed transform. ## Assets Panel - Browse loaded textures, shaders, models, and materials. - Load assets by key and path, or create primitive models. - Unload assets by key. ## Log Viewer - Shows engine log output in real time. ## Shortcuts - Ctrl+Q: Quit - Ctrl+L: Toggle Log Viewer - Ctrl+N: New Scene - Ctrl+O: Load Scene - Ctrl+S: Save Scene ## Notes - Scene Save and Load use file path text fields. - Components can be assigned via asset keys in the inspector; numeric IDs remain as a fallback. - World Transform is computed from hierarchy and local transforms and is read-only. - UV Transform values are passed as shader uniforms `uvScale`, `uvOffset`, and `uvRotation` when present. ## Scene Scripts - Scene scripts are loaded by the scene system and run once per scene. - The editor lets you set a scene-level script path in the Scene panel. - Preferred scene callbacks: `SceneInit()`, `SceneUpdate(float dt)`, `SceneShutdown()`. - Legacy callbacks still work: `Init()`, `Update(float dt)`, `Shutdown()`. ## ScriptComponent - ScriptComponent runs a per-entity script module. - Set the script path in the Inspector and toggle enabled. - Preferred callbacks: `EntityInit(uint entity)`, `EntityUpdate(uint entity, float dt)`, `EntityShutdown(uint entity)`. - Legacy callbacks still work: `Init(uint entity)`, `Update(uint entity, float dt)`, `Shutdown(uint entity)`. - Subject to change