This repository has been archived on 2023-10-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
blender-archive/release/scripts/startup/nodes/function_tree.py

56 lines
1.5 KiB
Python
Raw Normal View History

import bpy
from collections import namedtuple
from . base import BaseTree
FunctionInput = namedtuple("FunctionInput",
["data_type", "name", "identifier"])
FunctionOutput = namedtuple("FunctionOutput",
["data_type", "name", "identifier"])
class FunctionTree(bpy.types.NodeTree, BaseTree):
bl_idname = "FunctionTree"
bl_icon = "MOD_DATA_TRANSFER"
bl_label = "Function Nodes"
def iter_function_inputs(self):
node = self.get_input_node()
if node is None:
return
for socket in node.outputs[:-1]:
yield FunctionInput(
socket.data_type,
socket.name,
socket.identifier)
def iter_function_outputs(self):
node = self.get_output_node()
if node is None:
return
for socket in node.inputs[:-1]:
yield FunctionOutput(
socket.data_type,
socket.name,
socket.identifier)
def get_input_node(self):
for node in self.nodes:
if node.bl_idname == "fn_FunctionInputNode":
return node
return None
def get_output_node(self):
for node in self.nodes:
if node.bl_idname == "fn_FunctionOutputNode":
return node
return None
def iter_dependency_trees(self):
for node in self.nodes:
if node.bl_idname == "fn_CallNode":
if node.function_tree is not None:
2019-04-07 19:44:27 +02:00
yield node.function_tree