|
slot 0.0.1
A real time UI render framework
|
#include <Layout.h>


Public 属性 | |
| std::unique_ptr< BaseNode > | Root |
| std::vector< BaseNode * > | Nodes |
| std::vector< DrawNode * > | Visuals |
| std::vector< TextNode * > | Texts |
| std::vector< SceneNode * > | Scenes |
| std::vector< TerminalNode * > | Terminals |
| DockWorkspace | Dock |
| std::unique_ptr< RectNode > | DockPreviewVisual |
| bool | DebugPanelBorders = false |
| bool | Dirty = true |
| BaseNode * | CapturedTarget = nullptr |
| BehaviorNode * | CapturedHandler = nullptr |
| DockNodeID | CapturedSplitter = 0 |
| BehaviorNode * | HoveredHandler = nullptr |
| BehaviorNode * | PressedHandler = nullptr |
| BehaviorNode * | FocusedHandler = nullptr |
Private 成员函数 | |
| void | BringToFront (BaseNode *node) |
| void | CancelTreeCaptures (BaseNode *node) |
| void | CloseMenusOutside (BaseNode *target) |
| bool | CommitPanelDrop (float clientX, float clientY) |
| BehaviorNode * | FindBehaviorNode (BaseNode *node) const |
| BaseNode * | HitAt (float x, float y) const |
| void | IndexTree (BaseNode *node) |
| void | NormalizePanelGroups (BaseNode &parent) |
| void | ResetInteractionStates (BaseNode *node) |
| bool | RemoveClosedPanelGroups (BaseNode &parent) |
| void | UpdatePanelDebugVisuals () |
| void | UpdateTextOcclusion () |
| void | UpdateTree (BaseNode &node, float parentX, float parentY, const DirectX::XMFLOAT4 &clip, bool dispatchAfterLayout, bool parentVisible=true) |
| void | UpdateDockPreview () |
| void | UpdateHoveredHandler (float x, float y) |
| void | SetFocusedHandler (BehaviorNode *handler) |
Private 属性 | |
| std::vector< DrawNode * > | LaterTextOccluders |
| std::vector< std::unique_ptr< RectNode > > | PanelDebugVisuals |
UI 树的布局与输入路由器。
|
explicit |

|
overridedefault |
点击菜单层级外时关闭所有顶层弹出目录,不改变稳定节点拓扑。

按统一 DragSession 提交 Panel 成员迁移,并在需要时创建单页 Group。


| bool Layout::ConsumeDirty | ( | ) |

|
private |

| DockRect Layout::GetDockPreview | ( | ) | const |
返回当前 Dock 或浮动候选预览;Idle 时返回空矩形。

| std::vector< TextNode * > Layout::GetMainTexts | ( | ) | const |

| std::vector< GameObject * > Layout::GetMainUO | ( | ) | const |
|
overridevirtual |
|
inline |
返回 Panel 子树中当前参与绘制的红色节点边界数量。
| SceneNode * Layout::GetSceneNode | ( | ) | const |
返回第一个可见场景视口;当前 DX12 后端以单场景相机渲染该视口。

| std::vector< GameObject * > Layout::GetSubtreeUO | ( | const BaseNode & | root | ) | const |
返回指定节点完整子树的视觉对象,供原生 Floating 宿主建立批次。
| std::vector< GameObject * > Layout::GetUO | ( | ) | const |

|
inline |
把未分组 Panel 包装为单页 PanelGroup,Dock 树只管理 Group。


|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
| void Layout::RebuildIndex | ( | ) |


回收请求关闭或已无页面的 Group,并同步清除 Dock/Floating 归属。


拓扑更新后从仍存活的树清除短期视觉状态,避免复用节点残留 Hover。


|
private |
切换唯一键盘焦点并同步控件视觉状态。


|
private |


根据与渲染一致的最上层命中结果切换唯一 Hover 控件。


|
private |
根据最终屏幕坐标刷新 Panel 子树诊断覆盖层,不修改节点自身主题状态。

|
private |
按画家顺序计算后续不透明浮层对 DirectWrite 文字的裁剪片段。


|
private |


把运行时消息广播给当前布局中的所有 TerminalNode。

| BehaviorNode* z8::ui::Layout::CapturedHandler = nullptr |
| DockNodeID z8::ui::Layout::CapturedSplitter = 0 |
| DockWorkspace z8::ui::Layout::Dock |
当前窗口的 Dock 结构、浮动归属和唯一拖拽会话。
| std::unique_ptr<RectNode> z8::ui::Layout::DockPreviewVisual |
拖动候选覆盖层独立于 DockTree,渲染后不参与命中或布局决策。
| BehaviorNode* z8::ui::Layout::FocusedHandler = nullptr |
| BehaviorNode* z8::ui::Layout::HoveredHandler = nullptr |
当前唯一 Hover/Pressed 控件;非拥有指针只在本轮稳定控件树内有效。
|
private |
逐帧复用的非拥有遮挡索引,避免菜单打开期间为每个文字反复分配。
| std::vector<BaseNode *> z8::ui::Layout::Nodes |
|
private |
| BehaviorNode* z8::ui::Layout::PressedHandler = nullptr |
| std::unique_ptr<BaseNode> z8::ui::Layout::Root |
| std::vector<SceneNode *> z8::ui::Layout::Scenes |
| std::vector<TerminalNode *> z8::ui::Layout::Terminals |
| std::vector<TextNode *> z8::ui::Layout::Texts |
| std::vector<DrawNode *> z8::ui::Layout::Visuals |