[Bf-blender-cvs] [39ebd2fd1f8] functions: more general function tree dependency discovery
Jacques Lucke
noreply at git.blender.org
Tue Jul 16 18:20:06 CEST 2019
Commit: 39ebd2fd1f84714afec2e17f345b5c1f46b0cd36
Author: Jacques Lucke
Date: Tue Jul 16 12:57:30 2019 +0200
Branches: functions
https://developer.blender.org/rB39ebd2fd1f84714afec2e17f345b5c1f46b0cd36
more general function tree dependency discovery
===================================================================
M release/scripts/startup/nodes/base.py
M release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py
M release/scripts/startup/nodes/function_nodes/call.py
M release/scripts/startup/nodes/function_tree.py
===================================================================
diff --git a/release/scripts/startup/nodes/base.py b/release/scripts/startup/nodes/base.py
index 6e3638815ea..e8ffac11c82 100644
--- a/release/scripts/startup/nodes/base.py
+++ b/release/scripts/startup/nodes/base.py
@@ -105,6 +105,10 @@ class BaseNode:
def draw_advanced(self, layout):
pass
+ def iter_dependency_trees(self):
+ return
+ yield
+
def invoke_function(self,
layout, function_name, text,
*, icon="NONE", settings=tuple()):
diff --git a/release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py b/release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py
index f0f02720950..fe0abd881b3 100644
--- a/release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py
+++ b/release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py
@@ -14,7 +14,14 @@ class CustomEmitterNode(bpy.types.Node, FunctionNode):
)
def declaration(self, builder: SocketBuilder):
+ if self.function_tree:
+ builder.tree_interface_input("inputs", self.function_tree, 'IN')
+
builder.emitter_output("emitter", "Emitter")
def draw(self, layout):
layout.prop(self, "function_tree", text="")
+
+ def iter_dependency_trees(self):
+ if self.function_tree is not None:
+ yield self.function_tree
diff --git a/release/scripts/startup/nodes/function_nodes/call.py b/release/scripts/startup/nodes/function_nodes/call.py
index 35e04ae1643..9efb3f71218 100644
--- a/release/scripts/startup/nodes/function_nodes/call.py
+++ b/release/scripts/startup/nodes/function_nodes/call.py
@@ -20,3 +20,7 @@ class CallNode(bpy.types.Node, FunctionNode):
def draw(self, layout):
layout.prop(self, "function_tree", text="")
+
+ def iter_dependency_trees(self):
+ if self.function_tree is not None:
+ yield self.function_tree
diff --git a/release/scripts/startup/nodes/function_tree.py b/release/scripts/startup/nodes/function_tree.py
index 296f3b219b5..8f00d47cb41 100644
--- a/release/scripts/startup/nodes/function_tree.py
+++ b/release/scripts/startup/nodes/function_tree.py
@@ -11,10 +11,10 @@ FunctionOutput = namedtuple("FunctionOutput",
class TreeWithFunctionNodes:
def iter_dependency_trees(self):
+ trees = set()
for node in self.nodes:
- if node.bl_idname == "fn_CallNode":
- if node.function_tree is not None:
- yield node.function_tree
+ trees.update(node.iter_dependency_trees())
+ yield from trees
class FunctionTree(bpy.types.NodeTree, BaseTree, TreeWithFunctionNodes):
bl_idname = "FunctionTree"
More information about the Bf-blender-cvs
mailing list