Add additional accumulation nodes

Most of the work is thanks to @PGadoury in this PR:
https://github.com/guill/ComfyUI/pull/1

I've just made some minor modifications.
This commit is contained in:
Jacob Segal 2023-07-30 19:34:28 -07:00
parent 95c8e22fae
commit dbb5a3122a

View File

@ -110,16 +110,84 @@ class ListToAccumulationNode:
}, },
} }
RETURN_TYPES = ("*",) RETURN_TYPES = ("ACCUMULATION",)
INPUT_IS_LIST = (True,) INPUT_IS_LIST = (True,)
FUNCTION = "list_to_accumulation" FUNCTION = "list_to_accumulation"
CATEGORY = "InversionDemo Nodes/Lists" CATEGORY = "InversionDemo Nodes/Lists"
def accumulation_to_list(self, list): def list_to_accumulation(self, list):
return ({"accum": list},) return ({"accum": list},)
class AccumulationGetLengthNode:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"accumulation": ("ACCUMULATION",),
},
}
RETURN_TYPES = ("INT",)
FUNCTION = "accumlength"
CATEGORY = "InversionDemo Nodes/Lists"
def accumlength(self, accumulation):
return (len(accumulation['accum']),)
class AccumulationGetItemNode:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"accumulation": ("ACCUMULATION",),
"index": ("INT", {"default":0, "step":1})
},
}
RETURN_TYPES = ("*",)
FUNCTION = "get_item"
CATEGORY = "InversionDemo Nodes/Lists"
def get_item(self, accumulation, index):
return (accumulation['accum'][index],)
class AccumulationSetItemNode:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"accumulation": ("ACCUMULATION",),
"index": ("INT", {"default":0, "step":1}),
"value": ("*",),
},
}
RETURN_TYPES = ("ACCUMULATION",)
FUNCTION = "set_item"
CATEGORY = "InversionDemo Nodes/Lists"
def set_item(self, accumulation, index, value):
new_accum = accumulation['accum'][:]
new_accum[index] = value
return ({"accum": new_accum},)
class IntMathOperation: class IntMathOperation:
def __init__(self): def __init__(self):
pass pass
@ -312,6 +380,9 @@ UTILITY_NODE_CLASS_MAPPINGS = {
"AccumulationTailNode": AccumulationTailNode, "AccumulationTailNode": AccumulationTailNode,
"AccumulationToListNode": AccumulationToListNode, "AccumulationToListNode": AccumulationToListNode,
"ListToAccumulationNode": ListToAccumulationNode, "ListToAccumulationNode": ListToAccumulationNode,
"AccumulationGetLengthNode": AccumulationGetLengthNode,
"AccumulationGetItemNode": AccumulationGetItemNode,
"AccumulationSetItemNode": AccumulationSetItemNode,
"ForLoopOpen": ForLoopOpen, "ForLoopOpen": ForLoopOpen,
"ForLoopClose": ForLoopClose, "ForLoopClose": ForLoopClose,
"IntMathOperation": IntMathOperation, "IntMathOperation": IntMathOperation,
@ -324,6 +395,9 @@ UTILITY_NODE_DISPLAY_NAME_MAPPINGS = {
"AccumulationTailNode": "Accumulation Tail", "AccumulationTailNode": "Accumulation Tail",
"AccumulationToListNode": "Accumulation to List", "AccumulationToListNode": "Accumulation to List",
"ListToAccumulationNode": "List to Accumulation", "ListToAccumulationNode": "List to Accumulation",
"AccumulationGetLengthNode": "Accumulation Get Length",
"AccumulationGetItemNode": "Accumulation Get Item",
"AccumulationSetItemNode": "Accumulation Set Item",
"ForLoopOpen": "For Loop Open", "ForLoopOpen": "For Loop Open",
"ForLoopClose": "For Loop Close", "ForLoopClose": "For Loop Close",
"IntMathOperation": "Int Math Operation", "IntMathOperation": "Int Math Operation",