Borealis-Legacy/Nodes/average_node.py

37 lines
1.2 KiB
Python

from NodeGraphQt import BaseNode
class AverageNode(BaseNode):
"""
Average Node:
- Inputs: A, B, C (adjustable as needed)
- Output: Result (the average of the inputs)
"""
__identifier__ = 'io.github.nicole.average'
NODE_NAME = 'Average'
def __init__(self):
super(AverageNode, self).__init__()
self.values = {} # Ensure values is a dictionary.
self.add_input('A')
self.add_input('B')
self.add_input('C')
self.add_output('Result')
self.value = 0
self.set_name("Average: 0")
def process_input(self):
values = []
for port_name in ['A', 'B', 'C']:
port = self.input(port_name)
connected = port.connected_ports() if port is not None else []
if connected:
connected_port = connected[0]
parent_node = connected_port.node()
try:
values.append(float(getattr(parent_node, 'value', 0)))
except (ValueError, TypeError):
pass
avg = sum(values) / len(values) if values else 0
self.value = avg
self.set_name(f"Average: {avg}")