Files
XCEngine/docs/api/XCEngine/Editor/panels/HierarchyPanel/Render.md

2.1 KiB
Raw Blame History

HierarchyPanel::Render

命名空间: XCEngine::Editor

类型: method

源文件: editor/src/panels/HierarchyPanel.h

签名

void Render() override;

作用

绘制层级面板的完整 UI包括搜索栏、实体树、空状态和上下文交互。

当前实现行为

1. 建立面板外壳

  • 先压入 HierarchyInspectorPanelBackgroundColor()ImGuiCol_WindowBgImGuiCol_ChildBg
  • 进入 UI::PanelWindowScope;若窗口当前关闭,则提前返回。
  • 调用 Actions::ObserveFocusedActionRoute(*m_context, EditorActionRoute::Hierarchy) 标记焦点路由。

2. 绘制工具栏搜索

  • UI::PanelToolbarScope 创建顶部工具栏。
  • 当前工具栏布局主要保留一个右侧固定宽度搜索框:
    • widget id 为 "##HierarchySearch"
    • 占位文本为 "Search"
  • 搜索内容写入 m_searchBuffer

3. 绘制实体树

  • UI::PanelContentScope 打开主体内容区。
  • ISceneManager 读取根实体数组。
  • m_searchBuffer 构造 UI::SearchQuery,然后逐个调用 RenderEntity(...) 递归绘制。
  • 若搜索非空但没有任何可见实体,则显示 "No matching entities" empty state。

4. 处理背景与菜单

  • 调用 Actions::DrawHierarchyBackgroundInteraction(*m_context, m_renameState) 处理背景点击和根级 drop target。
  • 调用 Actions::DrawHierarchyEntityContextPopup(*m_context, m_itemContextMenu) 处理实体右键菜单。
  • 若背景 surface 打开上下文菜单,则通过 Actions::DrawHierarchyContextActions(*m_context, nullptr, true) 绘制背景菜单项。

当前实现边界

  • Render() 只负责视图状态与交互编排,不直接修改场景数据。
  • 实体选择、重命名提交、拖放重挂接和上下文菜单动作主要仍由 HierarchyActionRouter 负责。

相关文档