refactor(editor): Phase 1 architecture refactoring

- Decouple Panel from Core::Layer (P0 issue resolved)
- Add EventBus with type-safe event system
- Add ISelectionManager interface with SelectionManagerImpl
- Add IEditorContext for dependency injection
- Update EditorLayer to use new architecture
- Update Application to create and inject EditorContext

New files:
- editor/src/Core/EventBus.h
- editor/src/Core/EditorEvents.h
- editor/src/Core/ISelectionManager.h
- editor/src/Core/SelectionManagerImpl.h
- editor/src/Core/IEditorContext.h
- editor/src/Core/EditorContextImpl.h

This enables future improvements: Undo/Redo, serialization, component extensibility.
This commit is contained in:
2026-03-25 15:35:00 +08:00
parent 3478fb414a
commit 56ec2e9b85
13 changed files with 941 additions and 20 deletions

View File

@@ -8,6 +8,7 @@
namespace XCEngine {
namespace Editor {
class IEditorContext;
class MenuBar;
class HierarchyPanel;
class SceneViewPanel;
@@ -27,13 +28,13 @@ public:
void onEvent(void* event) override;
void onImGuiRender() override;
void SetProjectPath(const std::string& path);
void SetContext(std::shared_ptr<IEditorContext> context);
private:
void setupDockspace();
void renderAllPanels();
std::string m_projectPath;
std::shared_ptr<IEditorContext> m_context;
std::unique_ptr<MenuBar> m_menuBar;
std::unique_ptr<HierarchyPanel> m_hierarchyPanel;