Files
machinepainting-ComfyUI-Mac…/boolean_input_value_switch.py
T

86 lines
2.8 KiB
Python

# boolean_input_value_switch.py
import random
class BooleanInputValueSwitch:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"FLOAT_input": ("FLOAT", {
"forceInput": True,
}),
"true_min": ("FLOAT", {
"default": 0.51,
"min": -9999.0,
"max": 9999.0,
"step": 0.01,
"display": "number"
}),
"true_max": ("FLOAT", {
"default": 1.00,
"min": -9999.0,
"max": 9999.0,
"step": 0.01,
"display": "number"
}),
"false_min": ("FLOAT", {
"default": 0.00,
"min": -9999.0,
"max": 9999.0,
"step": 0.01,
"display": "number"
}),
"false_max": ("FLOAT", {
"default": 0.50,
"min": -9999.0,
"max": 9999.0,
"step": 0.01,
"display": "number"
}),
"overlap_behavior": ([
"randomize",
"force_true",
"force_false"
], {
"default": "randomize",
"tooltip": "What to do when value falls in both ranges"
}),
}
}
RETURN_TYPES = ("BOOLEAN",)
RETURN_NAMES = ("boolean",)
FUNCTION = "evaluate"
CATEGORY = "MachinePainting/Utils"
# This forces the node to re-run every time when randomize is selected
@classmethod
def IS_CHANGED(cls, FLOAT_input, true_min, true_max, false_min, false_max, overlap_behavior, **kwargs):
if overlap_behavior == "randomize":
return float("nan") # forces re-execution every single time
return float("inf") # normal caching when not randomizing
def evaluate(self, FLOAT_input,
true_min=0.51, true_max=1.00,
false_min=0.00, false_max=0.50,
overlap_behavior="randomize"):
value = FLOAT_input
in_true = true_min <= value <= true_max
in_false = false_min <= value <= false_max
if in_true and in_false:
if overlap_behavior == "randomize":
return (random.choice([True, False]),)
elif overlap_behavior == "force_true":
return (True,)
else: # force_false
return (False,)
elif in_true:
return (True,)
elif in_false:
return (False,)
else:
return (False,)