mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-02-16 08:22:36 +08:00
Populate primitive to reroute input
This commit is contained in:
parent
99555a1873
commit
0276444f59
@ -912,6 +912,9 @@ describe("group node", () => {
|
|||||||
const r1 = ez.Reroute();
|
const r1 = ez.Reroute();
|
||||||
const r2 = ez.Reroute();
|
const r2 = ez.Reroute();
|
||||||
|
|
||||||
|
latent.widgets.width.value = 64;
|
||||||
|
latent.widgets.height.value = 128;
|
||||||
|
|
||||||
latent.widgets.width.convertToInput();
|
latent.widgets.width.convertToInput();
|
||||||
latent.widgets.height.convertToInput();
|
latent.widgets.height.convertToInput();
|
||||||
latent.widgets.batch_size.convertToInput();
|
latent.widgets.batch_size.convertToInput();
|
||||||
@ -947,6 +950,9 @@ describe("group node", () => {
|
|||||||
expect(p2.widgets.value.widget.options?.max).toBe(8192); // width/height max
|
expect(p2.widgets.value.widget.options?.max).toBe(8192); // width/height max
|
||||||
expect(p2.widgets.value.widget.options?.step).toBe(80); // width/height step * 10
|
expect(p2.widgets.value.widget.options?.step).toBe(80); // width/height step * 10
|
||||||
|
|
||||||
|
expect(p1.widgets.value.value).toBe(128);
|
||||||
|
expect(p2.widgets.value.value).toBe(64);
|
||||||
|
|
||||||
p1.widgets.value.value = 16;
|
p1.widgets.value.value = 16;
|
||||||
p2.widgets.value.value = 32;
|
p2.widgets.value.value = 32;
|
||||||
|
|
||||||
|
|||||||
@ -966,17 +966,44 @@ export class GroupNodeHandler {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
populateReroute(node, nodeId, map) {
|
||||||
|
if (node.type !== "Reroute") return;
|
||||||
|
|
||||||
|
const link = this.groupData.linksFrom[nodeId]?.[0]?.[0];
|
||||||
|
if (!link) return;
|
||||||
|
const [, , targetNodeId, targetNodeSlot] = link;
|
||||||
|
const targetNode = this.groupData.nodeData.nodes[targetNodeId];
|
||||||
|
const inputs = targetNode.inputs;
|
||||||
|
const targetWidget = inputs?.[targetNodeSlot].widget;
|
||||||
|
if (!targetWidget) return;
|
||||||
|
|
||||||
|
const offset = inputs.length - (targetNode.widgets_values?.length ?? 0);
|
||||||
|
const v = targetNode.widgets_values?.[targetNodeSlot - offset];
|
||||||
|
if (v == null) return;
|
||||||
|
|
||||||
|
const widgetName = Object.values(map)[0];
|
||||||
|
const widget = this.node.widgets.find(w => w.name === widgetName);
|
||||||
|
if(widget) {
|
||||||
|
widget.value = v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
populateWidgets() {
|
populateWidgets() {
|
||||||
if (!this.node.widgets) return;
|
if (!this.node.widgets) return;
|
||||||
|
|
||||||
for (let nodeId = 0; nodeId < this.groupData.nodeData.nodes.length; nodeId++) {
|
for (let nodeId = 0; nodeId < this.groupData.nodeData.nodes.length; nodeId++) {
|
||||||
const node = this.groupData.nodeData.nodes[nodeId];
|
const node = this.groupData.nodeData.nodes[nodeId];
|
||||||
|
const map = this.groupData.oldToNewWidgetMap[nodeId] ?? {};
|
||||||
if (!node.widgets_values?.length) continue;
|
|
||||||
|
|
||||||
const map = this.groupData.oldToNewWidgetMap[nodeId];
|
|
||||||
const widgets = Object.keys(map);
|
const widgets = Object.keys(map);
|
||||||
|
|
||||||
|
if (!node.widgets_values?.length) {
|
||||||
|
// special handling for populating values into reroutes
|
||||||
|
// this allows primitives connect to them to pick up the correct value
|
||||||
|
this.populateReroute(node, nodeId, map);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
let linkedShift = 0;
|
let linkedShift = 0;
|
||||||
for (let i = 0; i < widgets.length; i++) {
|
for (let i = 0; i < widgets.length; i++) {
|
||||||
const oldName = widgets[i];
|
const oldName = widgets[i];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user