#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