- TransformComponent TRS = local (relative to parent); cached world SRT composed hierarchically (parent pos/rot/scale, no matrix decomposition shear under non-uniform parent scale) - HierarchyComponent (parent + children, lazily attached); Scene:: SetParent (keepWorld, cycle-safe) / GetParent / IsDescendantOf / SetWorldPose (world->local inverse, used by physics writeback & gizmo) - UpdateTransforms: DFS from roots, recompose only dirty-or-dirty- ancestor subtrees (parents before children) - DestroyEntity: descendants buried with parent (UE cascade) - Serialization v2: optional Parent uuid key, two-pass relink on load - Hierarchy panel: tree view, drag-drop reparent / drop-to-root detach, Create Child / Detach context menu; Inspector shows parent name - Consumers moved to world-space reads: lights, camera pos, physics bodies/characters/joints/collider baking, gizmo, F-focus, AlignTo
22 lines
567 B
C++
22 lines
567 B
C++
//
|
||
// HierarchyPanel:实体层级树面板。
|
||
//
|
||
// 树形展示父子层级(UE Outliner)、点击选中、拖拽改父/拖到空白挂根
|
||
//(keepWorld)、右键 Create Child / Detach / Delete(级联随葬,帧尾
|
||
// flush,遍历安全)。每项尾缀显示组件构成徽标。
|
||
//
|
||
|
||
#ifndef HELLOVULKAN_HIERARCHYPANEL_H
|
||
#define HELLOVULKAN_HIERARCHYPANEL_H
|
||
|
||
#include "EditorContext.h"
|
||
|
||
#include <entt/entt.hpp>
|
||
|
||
class HierarchyPanel {
|
||
public:
|
||
void Draw(const EditorContext& ctx, entt::entity& selected);
|
||
};
|
||
|
||
#endif //HELLOVULKAN_HIERARCHYPANEL_H
|