[Bf-blender-cvs] [17d18351c66] functions: extract method to find callable trees

Jacques Lucke noreply at git.blender.org
Wed Dec 18 13:53:58 CET 2019


Commit: 17d18351c66fcee64d23c503fbefc933d9b8e1e6
Author: Jacques Lucke
Date:   Wed Dec 18 13:17:49 2019 +0100
Branches: functions
https://developer.blender.org/rB17d18351c66fcee64d23c503fbefc933d9b8e1e6

extract method to find callable trees

===================================================================

M	release/scripts/startup/nodes/function_tree.py
M	release/scripts/startup/nodes/node_operators.py

===================================================================

diff --git a/release/scripts/startup/nodes/function_tree.py b/release/scripts/startup/nodes/function_tree.py
index 227c6d8b8e8..ce53bd3d76a 100644
--- a/release/scripts/startup/nodes/function_tree.py
+++ b/release/scripts/startup/nodes/function_tree.py
@@ -26,6 +26,12 @@ class FunctionTree(bpy.types.NodeTree, BaseTree):
                 trees.update(node.iter_directly_used_trees())
         return trees
 
+    def find_callable_trees(self):
+        used_by_trees = FunctionTree.BuildInvertedCallGraph().reachable(self)
+        trees = [tree for tree in bpy.data.node_groups
+                 if isinstance(tree, FunctionTree) and tree not in used_by_trees]
+        return trees
+
     @staticmethod
     def BuildTreeCallGraph() -> DirectedGraph:
         '''
diff --git a/release/scripts/startup/nodes/node_operators.py b/release/scripts/startup/nodes/node_operators.py
index 8463ed37341..05a8b362fee 100644
--- a/release/scripts/startup/nodes/node_operators.py
+++ b/release/scripts/startup/nodes/node_operators.py
@@ -70,13 +70,11 @@ class NodeGroupSelector(bpy.types.Operator, NodeOperatorBase):
 
     def get_items(self, context):
         tree = bpy.data.node_groups.get(self.tree_name)
-        used_by_trees = FunctionTree.BuildInvertedCallGraph().reachable(tree)
+        possible_trees = tree.find_callable_trees()
 
         items = []
-        for tree in bpy.data.node_groups:
-            if isinstance(tree, FunctionTree):
-                if tree not in used_by_trees:
-                    items.append((tree.name, tree.name, ""))
+        for tree in possible_trees:
+            items.append((tree.name, tree.name, ""))
         items.append(("NONE", "None", ""))
         return items



More information about the Bf-blender-cvs mailing list