#pragma once #include #include #include #include namespace XCEngine { namespace Editor { class IEditorContext; class MenuBar; class HierarchyPanel; class SceneViewPanel; class GameViewPanel; class InspectorPanel; class ConsolePanel; class ProjectPanel; class EditorLayer : public Core::Layer { public: EditorLayer(); ~EditorLayer() override = default; void onAttach() override; void onDetach() override; void onUpdate(float dt) override; void onEvent(void* event) override; void onImGuiRender() override; void SetContext(std::shared_ptr context); private: void setupDockspace(); void renderAllPanels(); std::shared_ptr m_context; std::unique_ptr m_menuBar; std::unique_ptr m_hierarchyPanel; std::unique_ptr m_sceneViewPanel; std::unique_ptr m_gameViewPanel; std::unique_ptr m_inspectorPanel; std::unique_ptr m_consolePanel; std::unique_ptr m_projectPanel; }; } }