fix: use path-based unique Dagre IDs so convergent scenes appear per branch
This commit is contained in:
@@ -38,8 +38,9 @@ function buildFlow(root: PlayerTreeNode) {
|
||||
|
||||
function walk(node: PlayerTreeNode, parentId: string | null) {
|
||||
if (node.visited) {
|
||||
const dagreId = parentId ? `${parentId}/${node.sceneId}` : node.sceneId
|
||||
dagreNodes.push({
|
||||
id: node.sceneId,
|
||||
id: dagreId,
|
||||
parent: parentId,
|
||||
label: node.label,
|
||||
visited: true,
|
||||
@@ -48,29 +49,29 @@ function buildFlow(root: PlayerTreeNode) {
|
||||
lockHint: node.lockHint,
|
||||
})
|
||||
if (parentId) {
|
||||
dagreEdges.push({ from: parentId, to: node.sceneId, visited: true })
|
||||
dagreEdges.push({ from: parentId, to: dagreId, visited: true })
|
||||
}
|
||||
|
||||
const unvisited: PlayerTreeNode[] = []
|
||||
for (const child of node.children) {
|
||||
if (child.visited) {
|
||||
walk(child, node.sceneId)
|
||||
walk(child, dagreId)
|
||||
} else {
|
||||
unvisited.push(child)
|
||||
}
|
||||
}
|
||||
|
||||
if (unvisited.length > 0) {
|
||||
const mysteryId = `${node.sceneId}__mystery`
|
||||
const mysteryId = `${dagreId}/__mystery`
|
||||
dagreNodes.push({
|
||||
id: mysteryId,
|
||||
parent: node.sceneId,
|
||||
parent: dagreId,
|
||||
label: '? ?',
|
||||
visited: false,
|
||||
isMystery: true,
|
||||
locked: true,
|
||||
})
|
||||
dagreEdges.push({ from: node.sceneId, to: mysteryId, visited: false })
|
||||
dagreEdges.push({ from: dagreId, to: mysteryId, visited: false })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user