diff options
author | Jacques Lucke <jacques@blender.org> | 2022-02-14 11:09:37 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-02-14 11:09:37 +0300 |
commit | 08882ddfc2ba8aced32c97275a72234223249c43 (patch) | |
tree | eff1879d52f6bf7f517fd9321eef2b018e9e408f /source/blender/blenkernel/intern/node_tree_update.cc | |
parent | 31be5ce8b94183e4f248cd379b4862028bed74bd (diff) | |
parent | 33dde170cecf04b97597e02281e28bd98bb26b3f (diff) |
Merge branch 'blender-v3.1-release'
Diffstat (limited to 'source/blender/blenkernel/intern/node_tree_update.cc')
-rw-r--r-- | source/blender/blenkernel/intern/node_tree_update.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc index e14f9f79660..b1575ae833f 100644 --- a/source/blender/blenkernel/intern/node_tree_update.cc +++ b/source/blender/blenkernel/intern/node_tree_update.cc @@ -1468,7 +1468,8 @@ class NodeTreeMainUpdater { while (!sockets_to_check.is_empty()) { const SocketRef &in_out_socket = *sockets_to_check.pop(); - const bNode &bnode = *in_out_socket.node().bnode(); + const NodeRef &node = in_out_socket.node(); + const bNode &bnode = *node.bnode(); const bNodeSocket &bsocket = *in_out_socket.bsocket(); if (bsocket.changed_flag != NTREE_CHANGED_NOTHING) { return true; @@ -1493,7 +1494,7 @@ class NodeTreeMainUpdater { } else { const OutputSocketRef &socket = in_out_socket.as_output(); - for (const InputSocketRef *input_socket : socket.node().inputs()) { + for (const InputSocketRef *input_socket : node.inputs()) { if (input_socket->is_available()) { bool &pushed = pushed_by_socket_id[input_socket->id()]; if (!pushed) { @@ -1502,6 +1503,18 @@ class NodeTreeMainUpdater { } } } + /* The Normal node has a special case, because the value stored in the first output socket + * is used as input in the node. */ + if (bnode.type == SH_NODE_NORMAL && socket.index() == 1) { + BLI_assert(socket.name() == "Dot"); + const OutputSocketRef &normal_output = node.output(0); + BLI_assert(normal_output.name() == "Normal"); + bool &pushed = pushed_by_socket_id[normal_output.id()]; + if (!pushed) { + sockets_to_check.push(&normal_output); + pushed = true; + } + } } } return false; |