2026-03-25 01:23:08 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <XCEngine/Core/Layer.h>
|
|
|
|
|
#include <XCEngine/Core/LayerStack.h>
|
|
|
|
|
#include <memory>
|
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
|
|
namespace XCEngine {
|
|
|
|
|
namespace Editor {
|
|
|
|
|
|
2026-03-25 15:35:00 +08:00
|
|
|
class IEditorContext;
|
2026-03-25 01:23:08 +08:00
|
|
|
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;
|
|
|
|
|
|
2026-03-25 15:35:00 +08:00
|
|
|
void SetContext(std::shared_ptr<IEditorContext> context);
|
2026-03-25 01:23:08 +08:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void setupDockspace();
|
|
|
|
|
void renderAllPanels();
|
|
|
|
|
|
2026-03-25 15:35:00 +08:00
|
|
|
std::shared_ptr<IEditorContext> m_context;
|
2026-03-25 01:23:08 +08:00
|
|
|
|
|
|
|
|
std::unique_ptr<MenuBar> m_menuBar;
|
|
|
|
|
std::unique_ptr<HierarchyPanel> m_hierarchyPanel;
|
|
|
|
|
std::unique_ptr<SceneViewPanel> m_sceneViewPanel;
|
|
|
|
|
std::unique_ptr<GameViewPanel> m_gameViewPanel;
|
|
|
|
|
std::unique_ptr<InspectorPanel> m_inspectorPanel;
|
|
|
|
|
std::unique_ptr<ConsolePanel> m_consolePanel;
|
|
|
|
|
std::unique_ptr<ProjectPanel> m_projectPanel;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|