- Editor CMakeLists.txt 链接 XCEngine 库 - 删除 editor/src/Core/GameObject.h (简化版) - SelectionManager 使用 Engine::Components::GameObject* - SceneManager 使用 Engine::Scene - HierarchyPanel 使用 Engine GameObject API - InspectorPanel 使用 Engine TransformComponent 注意: Engine RHI Shader 接口有编译错误需要修复
35 lines
1002 B
C++
35 lines
1002 B
C++
#pragma once
|
|
|
|
#include "Panel.h"
|
|
#include <XCEngine/Components/GameObject.h>
|
|
|
|
namespace UI {
|
|
|
|
class HierarchyPanel : public Panel {
|
|
public:
|
|
HierarchyPanel();
|
|
~HierarchyPanel();
|
|
|
|
void Render() override;
|
|
|
|
private:
|
|
void RenderSearchBar();
|
|
void RenderEntity(XCEngine::Components::GameObject* entity, const std::string& filter);
|
|
void RenderContextMenu(XCEngine::Components::GameObject* entity);
|
|
void RenderCreateMenu(XCEngine::Components::GameObject* parent);
|
|
void HandleDragDrop(XCEngine::Components::GameObject* entity);
|
|
void HandleKeyboardShortcuts();
|
|
bool PassesFilter(XCEngine::Components::GameObject* entity, const std::string& filter);
|
|
|
|
uint64_t m_selectionHandlerId = 0;
|
|
|
|
char m_searchBuffer[256] = "";
|
|
bool m_renaming = false;
|
|
XCEngine::Components::GameObject* m_renamingEntity = nullptr;
|
|
char m_renameBuffer[256] = "";
|
|
bool m_renameJustStarted = false;
|
|
XCEngine::Components::GameObject* m_dragSource = nullptr;
|
|
};
|
|
|
|
}
|