[Bf-blender-cvs] [d9097f74848] functions: initial automatic update of call node
Jacques Lucke
noreply at git.blender.org
Wed Apr 3 11:56:19 CEST 2019
Commit: d9097f7484854f7fd5025a1994b4f3c09e775c00
Author: Jacques Lucke
Date: Wed Apr 3 10:05:26 2019 +0200
Branches: functions
https://developer.blender.org/rBd9097f7484854f7fd5025a1994b4f3c09e775c00
initial automatic update of call node
===================================================================
M release/scripts/startup/function_nodes/base.py
M release/scripts/startup/function_nodes/declaration/tree_interface.py
M release/scripts/startup/function_nodes/function_tree.py
M release/scripts/startup/function_nodes/nodes/function_input.py
M release/scripts/startup/function_nodes/nodes/function_output.py
===================================================================
diff --git a/release/scripts/startup/function_nodes/base.py b/release/scripts/startup/function_nodes/base.py
index 291b5ca64f7..739ee334122 100644
--- a/release/scripts/startup/function_nodes/base.py
+++ b/release/scripts/startup/function_nodes/base.py
@@ -80,6 +80,11 @@ class BaseNode:
self.storage.socket_decl_map = builder.get_sockets_decl_map()
self.storage.try_restore_socket_states()
+ self.on_rebuild_post()
+
+ def on_rebuild_post(self):
+ pass
+
def _get_state(self):
links_per_input = defaultdict(set)
links_per_output = defaultdict(set)
diff --git a/release/scripts/startup/function_nodes/declaration/tree_interface.py b/release/scripts/startup/function_nodes/declaration/tree_interface.py
index d9aa38a3f24..3dba167858c 100644
--- a/release/scripts/startup/function_nodes/declaration/tree_interface.py
+++ b/release/scripts/startup/function_nodes/declaration/tree_interface.py
@@ -38,7 +38,7 @@ class TreeInterfaceDecl(SocketDeclBase):
if self.in_or_out == "IN":
data_types = [d.data_type for d in self.tree.iter_function_inputs()]
elif self.in_or_out == "OUT":
- data_types = [d.data_type for d in self.tree.iter_function_inputs()]
+ data_types = [d.data_type for d in self.tree.iter_function_outputs()]
else:
assert False
diff --git a/release/scripts/startup/function_nodes/function_tree.py b/release/scripts/startup/function_nodes/function_tree.py
index 7782d78a1ed..9083887eda2 100644
--- a/release/scripts/startup/function_nodes/function_tree.py
+++ b/release/scripts/startup/function_nodes/function_tree.py
@@ -14,6 +14,14 @@ class FunctionTree(bpy.types.NodeTree, BaseTree):
bl_icon = "MOD_DATA_TRANSFER"
bl_label = "Function Nodes"
+ def interface_changed(self):
+ for tree in bpy.data.node_groups:
+ if not isinstance(tree, BaseTree):
+ continue
+ for node in tree.nodes:
+ if node.bl_idname == "fn_CallNode":
+ node.rebuild_and_try_keep_state()
+
def iter_function_inputs(self):
node = self.get_input_node()
if node is None:
diff --git a/release/scripts/startup/function_nodes/nodes/function_input.py b/release/scripts/startup/function_nodes/nodes/function_input.py
index 81326231401..4326ba54d96 100644
--- a/release/scripts/startup/function_nodes/nodes/function_input.py
+++ b/release/scripts/startup/function_nodes/nodes/function_input.py
@@ -10,3 +10,6 @@ class FunctionInputNode(BaseNode, bpy.types.Node):
def declaration(self, builder):
builder.variadic_output("outputs", "variadic", "New Input")
+
+ def on_rebuild_post(self):
+ self.tree.interface_changed()
diff --git a/release/scripts/startup/function_nodes/nodes/function_output.py b/release/scripts/startup/function_nodes/nodes/function_output.py
index 4a6b99e851e..c4a2eb75fb4 100644
--- a/release/scripts/startup/function_nodes/nodes/function_output.py
+++ b/release/scripts/startup/function_nodes/nodes/function_output.py
@@ -9,4 +9,7 @@ class FunctionOutputNode(BaseNode, bpy.types.Node):
variadic: SocketBuilder.VariadicProperty()
def declaration(self, builder):
- builder.variadic_input("inputs", "variadic", "New Output")
\ No newline at end of file
+ builder.variadic_input("inputs", "variadic", "New Output")
+
+ def on_rebuild_post(self):
+ self.tree.interface_changed()
\ No newline at end of file
More information about the Bf-blender-cvs
mailing list