refactor(new_editor/app): reorganize host structure and add smoke test
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user