[Bf-blender-cvs] [750d47e4d96] functions: fix inferencing of vectorized nodes
Jacques Lucke
noreply at git.blender.org
Mon Apr 8 17:29:14 CEST 2019
Commit: 750d47e4d96a9a2f9aa1b1f5233b1abdda771b9f
Author: Jacques Lucke
Date: Mon Apr 8 17:06:11 2019 +0200
Branches: functions
https://developer.blender.org/rB750d47e4d96a9a2f9aa1b1f5233b1abdda771b9f
fix inferencing of vectorized nodes
===================================================================
M release/scripts/startup/function_nodes/inferencing.py
===================================================================
diff --git a/release/scripts/startup/function_nodes/inferencing.py b/release/scripts/startup/function_nodes/inferencing.py
index a2effe0b198..9f1aa8896c0 100644
--- a/release/scripts/startup/function_nodes/inferencing.py
+++ b/release/scripts/startup/function_nodes/inferencing.py
@@ -171,30 +171,29 @@ def get_vector_decisions_graph(tree_data):
def iter_obligatory_vector_decisions(graph, input_sockets, output_sockets, tree_data, list_decisions):
for socket in input_sockets:
+ other_node, other_socket = tree_data.try_get_origin_with_node(socket)
+ if other_node is None:
+ continue
+
node = tree_data.get_node(socket)
decl = socket.get_decl(node)
decision_id = DecisionID(node, node, decl.prop_name)
- for other_node, other_socket in tree_data.iter_connected_sockets_with_nodes(socket):
- other_decl = other_socket.get_decl(other_node)
- if data_sockets_are_static(other_decl):
- other_data_type = other_socket.data_type
- if other_data_type == decl.base_type:
- yield decision_id, "BASE"
- elif other_data_type == decl.list_type:
+ other_decl = other_socket.get_decl(other_node)
+ if data_sockets_are_static(other_decl):
+ other_data_type = other_socket.data_type
+ if other_data_type == decl.list_type:
+ yield decision_id, "LIST"
+ elif isinstance(other_decl, ListSocketDecl):
+ list_decision_id = DecisionID(other_node, other_node, other_decl.prop_name)
+ if list_decision_id in list_decisions:
+ other_base_type = list_decisions[list_decision_id]
+ if other_base_type == decl.base_type:
+ yield decision_id, other_decl.list_or_base
+ else:
+ old_data_type = other_socket.data_type
+ if old_data_type == decl.list_type:
yield decision_id, "LIST"
- elif isinstance(other_decl, ListSocketDecl):
- list_decision_id = DecisionID(other_node, other_node, other_decl.prop_name)
- if list_decision_id in list_decisions:
- other_base_type = list_decisions[list_decision_id]
- if other_base_type == decl.base_type:
- yield decision_id, other_decl.list_or_base
- else:
- old_data_type = other_socket.data_type
- if old_data_type == decl.base_type:
- yield decision_id, "BASE"
- elif old_data_type == decl.list_type:
- yield decision_id, "LIST"
for socket in output_sockets:
node = tree_data.get_node(socket)
More information about the Bf-blender-cvs
mailing list