kaige_editor 0.1.0

Editor for KaiGE
# KaiGE Editor

- [ ] Core Functionalities
    - [ ] Scene Hierarchy
        - Display a tree view to navigate and manage game objects, their components, and parent-child relationships.
        - Allow creation, deletion, renaming, and reordering of objects.
    - [ ] Component Inspector
        - Display editable properties of selected objects and their components (e.g., transform, materials, meshes).
        - Handle different component types appropriately.
    - [ ] Viewport
        - Render a real-time preview of the game scene, allowing for visual editing and manipulation.
- [ ] Essential UI Elements
    - [ ] Menus and Toolbars
        - Provide common actions like saving, loading, undo/redo, and project settings.
    - [ ] Layout Panels
        - Organize UI elements effectively using containers like SidePanel, TopBottomPanel, and Window.
    - [ ] Input Fields
        - Allow text input for properties like names, values, and file paths.
    - [ ] Buttons and Toggles
        - Trigger actions and alter settings.
    - [ ] Dropdowns and Lists
        - Select from predefined options.
    - [ ] File Dialogs
        - Load and save assets (models, textures, sounds).
- [ ] Integration with Game Engine
    - [ ] Frame Loop
        - Integrate egui's rendering and input handling into your game engine's main loop.
    - [ ] Data Exchange
        - Establish mechanisms to reflect game engine data in the UI (e.g., scene hierarchy, component properties) and vice versa.
    - [ ] Event Handling
        - Handle UI events (e.g., button clicks, value changes) and trigger appropriate actions in the game engine.
- [ ] Additional Considerations
    - [ ] Custom Widgets
        - Consider creating custom widgets for specialized editing tasks (e.g., material editors, curve editors).
    - [ ] Performance Optimization
        - Profile and optimize UI rendering and interactions for smooth performance, especially in complex scenes.
    - [ ] Hot Reloading
        - Implement features to enable live changes to game code and assets without restarting the editor.
    - [ ] User Experience
        - Design an intuitive and user-friendly interface with clear visual cues and consistent interactions.