44 lines
1.4 KiB
C++
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;
|
|
};
|
|
|
|
}
|
|
}
|