Files
XCEngine/new_editor/app/Features/Hierarchy/HierarchyPanelRendering.cpp

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