Fix reroutes updating to wildcards on graph load

The type of reroutes connected to primitive nodes may be lost when the graph is loaded, depending on the configuration order of nodes. Also fixed an error when a primitive widget callback is called and is connected to a reroute without output links.
This commit is contained in:
ssit 2023-06-25 14:03:32 -04:00
parent c226b2615a
commit 3d9f4229c1
2 changed files with 8 additions and 1 deletions

View File

@ -55,6 +55,7 @@ app.registerExtension({
let updateNodes = []; let updateNodes = [];
let inputType = null; let inputType = null;
let inputNode = null; let inputNode = null;
let rootNode = null;
while (currentNode) { while (currentNode) {
updateNodes.unshift(currentNode); updateNodes.unshift(currentNode);
const linkId = currentNode.inputs[0].link; const linkId = currentNode.inputs[0].link;
@ -76,6 +77,7 @@ app.registerExtension({
// We've found the end // We've found the end
inputNode = currentNode; inputNode = currentNode;
inputType = node.outputs[link.origin_slot]?.type ?? null; inputType = node.outputs[link.origin_slot]?.type ?? null;
rootNode = node;
break; break;
} }
} else { } else {
@ -123,6 +125,11 @@ app.registerExtension({
} }
} }
if (rootNode?.constructor.type === "PrimitiveNode" && inputType === "*") {
// Primitive doesn't have type yet, skip update
return;
}
const displayType = (inputType === "*" && outputType) || inputType || outputType || "*"; const displayType = (inputType === "*" && outputType) || inputType || outputType || "*";
const color = LGraphCanvas.link_type_colors[displayType]; const color = LGraphCanvas.link_type_colors[displayType];

View File

@ -210,7 +210,7 @@ app.registerExtension({
function get_links(node) { function get_links(node) {
let links = []; let links = [];
for (const l of node.outputs[0].links) { for (const l of node.outputs[0].links ?? []) {
const linkInfo = app.graph.links[l]; const linkInfo = app.graph.links[l];
const n = node.graph.getNodeById(linkInfo.target_id); const n = node.graph.getNodeById(linkInfo.target_id);
if (n.type == "Reroute") { if (n.type == "Reroute") {