Files
XCEngine/editor/src/panels/HierarchyPanel.h

44 lines
1.4 KiB
C++

#pragma once
#include "Panel.h"
#include "UI/PopupState.h"
#include <XCEngine/Components/GameObject.h>
#include "Core/ISceneManager.h"
namespace XCEngine {
namespace Editor {
enum class SortMode { Name, ComponentCount, TransformFirst };
class HierarchyPanel : public Panel {
public:
HierarchyPanel();
~HierarchyPanel();
void OnAttach() override;
void Render() override;
private:
void OnSelectionChanged(const struct SelectionChangedEvent& event);
void OnRenameRequested(const struct EntityRenameRequestedEvent& event);
void RenderSearchBar();
void RenderEntity(::XCEngine::Components::GameObject* gameObject, const std::string& filter);
void RenderContextMenu(::XCEngine::Components::GameObject* gameObject);
void RenderCreateMenu(::XCEngine::Components::GameObject* parent);
void BeginRename(::XCEngine::Components::GameObject* gameObject);
void CommitRename();
void CancelRename();
void HandleDragDrop(::XCEngine::Components::GameObject* gameObject);
bool PassesFilter(::XCEngine::Components::GameObject* gameObject, const std::string& filter);
void SortEntities(std::vector<::XCEngine::Components::GameObject*>& entities);
char m_searchBuffer[256] = "";
UI::InlineTextEditState<uint64_t, 256> m_renameState;
SortMode m_sortMode = SortMode::Name;
uint64_t m_selectionHandlerId = 0;
uint64_t m_renameRequestHandlerId = 0;
};
}
}