53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
# ComfyUI - CRZ Execute Switch
|
|
class AnyType(str):
|
|
def __ne__(self, __value: object) -> bool:
|
|
return False
|
|
|
|
any_type = AnyType("*")
|
|
|
|
class CRZExecuteSwitch:
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {
|
|
"required": {
|
|
"input": (any_type, {"default": None}),
|
|
"bool": ("BOOLEAN", {"default": False, "forceInput": False}),
|
|
},
|
|
}
|
|
|
|
RETURN_TYPES = (any_type, any_type)
|
|
RETURN_NAMES = ("true", "false")
|
|
FUNCTION = "execute"
|
|
CATEGORY = 'CRZ'
|
|
OUTPUT_NODE = False
|
|
|
|
def execute(self, input, bool):
|
|
"""
|
|
Execute switch - routes input to true or false output based on bool condition
|
|
Uses ExecutionBlocker to prevent execution on the inactive branch
|
|
"""
|
|
try:
|
|
from comfy_execution.graph import ExecutionBlocker
|
|
|
|
if bool:
|
|
# Route to true output, block false output
|
|
return (input, ExecutionBlocker(None))
|
|
else:
|
|
# Route to false output, block true output
|
|
return (ExecutionBlocker(None), input)
|
|
|
|
except ImportError:
|
|
# Fallback if ExecutionBlocker is not available
|
|
if bool:
|
|
return (input, None)
|
|
else:
|
|
return (None, input)
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"CRZExecuteSwitch": CRZExecuteSwitch,
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"CRZExecuteSwitch": "CRZ Execute Switch",
|
|
}
|