From 3c0235a892844cddb177edbc2147fac476480bdb Mon Sep 17 00:00:00 2001 From: David Date: Mon, 11 Dec 2023 01:25:00 -0800 Subject: [PATCH] pgroup arithmetic --- nodes/core.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/nodes/core.py b/nodes/core.py index e380926..825c998 100644 --- a/nodes/core.py +++ b/nodes/core.py @@ -604,6 +604,42 @@ class KfAddCurveToPGroup: parameter_group.parameters[curve.label] = curve return (parameter_group,) +class KfAddCurveToPGroupx10: + CATEGORY = CATEGORY + FUNCTION = "main" + #RETURN_TYPES = ("KEYFRAMED_CURVE",) + RETURN_TYPES = ("PARAMETER_GROUP",) + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "curve0": ("KEYFRAMED_CURVE",{"forceInput": True,}), + }, + "optional": { + "parameter_group": ("PARAMETER_GROUP",{"forceInput": True,}), + "curve1": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve2": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve3": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve4": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve5": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve6": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve7": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve8": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve9": ("KEYFRAMED_CURVE",{"forceInput": True,}), + }, + } + + def main(self, parameter_group=None, **kwargs): + if parameter_group is None: + #parameter_group = kf.ParameterGroup({curve.label:curve}) + parameter_group = kf.ParameterGroup(kwargs) + else: + parameter_group = deepcopy(parameter_group) + for curve in parameter_group.values(): + parameter_group.parameters[curve.label] = curve + return (parameter_group,) + class KfGetCurveFromPGroup: CATEGORY = CATEGORY @@ -633,6 +669,46 @@ class KfGetCurveFromPGroup: ################################################################## +# Curve vs. PGroup Arithmetic + +class KfPGroupCurveAdd: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("PARAMETER_GROUP",) + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "parameter_group": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve": ("KEYFRAMED_CURVE",{"forceInput": True,}), + }, + } + + def main(self, parameter_group, curve): + parameter_group = deepcopy(parameter_group) + curve = deepcopy(curve) + return (parameter_group + curve, ) + + +class KfPGroupCurveMultiply: + CATEGORY = CATEGORY + FUNCTION = "main" + RETURN_TYPES = ("PARAMETER_GROUP",) + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "parameter_group": ("KEYFRAMED_CURVE",{"forceInput": True,}), + "curve": ("KEYFRAMED_CURVE",{"forceInput": True,}), + }, + } + + def main(self, parameter_group, curve): + parameter_group = deepcopy(parameter_group) + curve = deepcopy(curve) + return (parameter_group * curve, ) ################################################################## @@ -667,6 +743,10 @@ NODE_CLASS_MAPPINGS = { ####################################### "KfAddCurveToPGroup": KfAddCurveToPGroup, "KfGetCurveFromPGroup": KfGetCurveFromPGroup, + "KfAddCurveToPGroupx10": KfAddCurveToPGroupx10, + ####################################### + "KfPGroupCurveAdd":KfPGroupCurveAdd, + "KfPGroupCurveMultiply":KfPGroupCurveMultiply, ####################################### #"KfCurveToAcnLatentKeyframe": KfCurveToAcnLatentKeyframe, ####################################### @@ -682,7 +762,6 @@ NODE_CLASS_MAPPINGS = { "KfConditioningAddx10":KfConditioningAddx10, "KfCurvesAddx10":KfCurvesAddx10, "KfCurvesMultiplyx10":KfCurvesMultiplyx10, - } # A dictionary that contains the friendly/humanly readable titles for the nodes