61 lines
1.6 KiB
C++
61 lines
1.6 KiB
C++
#include "HierarchyPanelSupport.h"
|
|
|
|
namespace XCEngine::UI::Editor::App {
|
|
|
|
using namespace HierarchyPanelSupport;
|
|
|
|
void HierarchyPanel::Append(UIDrawList& drawList) const {
|
|
if (!m_visible ||
|
|
m_treeFrame.layout.bounds.width <= 0.0f ||
|
|
m_treeFrame.layout.bounds.height <= 0.0f) {
|
|
return;
|
|
}
|
|
|
|
const Widgets::UIEditorTreeViewPalette palette = BuildEditorTreeViewPalette();
|
|
const Widgets::UIEditorTreeViewMetrics metrics = BuildEditorTreeViewMetrics();
|
|
AppendUIEditorTreeViewBackground(
|
|
drawList,
|
|
m_treeFrame.layout,
|
|
m_treeItems,
|
|
m_selection,
|
|
m_treeInteractionState.treeViewState,
|
|
palette,
|
|
metrics);
|
|
AppendUIEditorTreeViewForeground(
|
|
drawList,
|
|
m_treeFrame.layout,
|
|
m_treeItems,
|
|
palette,
|
|
metrics);
|
|
|
|
if (!m_dragState.dragging || !m_dragState.validDropTarget) {
|
|
return;
|
|
}
|
|
|
|
if (m_dragState.dropToRoot) {
|
|
drawList.AddRectOutline(
|
|
m_treeFrame.layout.bounds,
|
|
kDragPreviewColor,
|
|
1.0f,
|
|
0.0f);
|
|
return;
|
|
}
|
|
|
|
const std::size_t visibleIndex = FindVisibleIndexForItemId(
|
|
m_treeFrame.layout,
|
|
m_treeItems,
|
|
m_dragState.dropTargetItemId);
|
|
if (visibleIndex == UIEditorTreeViewInvalidIndex ||
|
|
visibleIndex >= m_treeFrame.layout.rowRects.size()) {
|
|
return;
|
|
}
|
|
|
|
drawList.AddRectOutline(
|
|
m_treeFrame.layout.rowRects[visibleIndex],
|
|
kDragPreviewColor,
|
|
1.0f,
|
|
0.0f);
|
|
}
|
|
|
|
} // namespace XCEngine::UI::Editor::App
|