#pragma once #include "Panel.h" #include 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; }; }