Tighten editor scene mutation boundary
This commit is contained in:
@@ -163,6 +163,20 @@ HierarchyNode BuildSceneNodeRecursive(
|
||||
return node;
|
||||
}
|
||||
|
||||
HierarchyNode BuildSnapshotNodeRecursive(
|
||||
const EditorSceneHierarchyNode& snapshotNode) {
|
||||
HierarchyNode node = {};
|
||||
node.nodeId = snapshotNode.itemId;
|
||||
node.label = snapshotNode.displayName.empty()
|
||||
? std::string("GameObject")
|
||||
: snapshotNode.displayName;
|
||||
node.children.reserve(snapshotNode.children.size());
|
||||
for (const EditorSceneHierarchyNode& child : snapshotNode.children) {
|
||||
node.children.push_back(BuildSnapshotNodeRecursive(child));
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
HierarchyModel HierarchyModel::BuildFromScene(
|
||||
@@ -184,6 +198,20 @@ HierarchyModel HierarchyModel::BuildFromScene(
|
||||
return model;
|
||||
}
|
||||
|
||||
HierarchyModel HierarchyModel::BuildFromSnapshot(
|
||||
const EditorSceneHierarchySnapshot& snapshot) {
|
||||
HierarchyModel model = {};
|
||||
model.m_roots.reserve(snapshot.roots.size());
|
||||
for (const EditorSceneHierarchyNode& root : snapshot.roots) {
|
||||
if (root.itemId.empty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
model.m_roots.push_back(BuildSnapshotNodeRecursive(root));
|
||||
}
|
||||
return model;
|
||||
}
|
||||
|
||||
bool HierarchyModel::Empty() const {
|
||||
return m_roots.empty();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user