Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2022-05-31 21:44:56 +0300
committerJacques Lucke <jacques@blender.org>2022-05-31 21:44:56 +0300
commitb9f29a0f645de693c37174747ece2baba496c899 (patch)
treef52b038e0bcb7db002cd000dc8f27f5902d47acf
parent5c80bcf8c2fbd1e3c71ef5169f59e0b95c4db153 (diff)
parent0f47506cde50c4542a0a3c7863b0fb4e735bf8f0 (diff)
Merge branch 'blender-v3.2-release'
-rw-r--r--source/blender/nodes/intern/node_common.cc38
1 files changed, 17 insertions, 21 deletions
diff --git a/source/blender/nodes/intern/node_common.cc b/source/blender/nodes/intern/node_common.cc
index abbfe4b823d..b7c5f9570e4 100644
--- a/source/blender/nodes/intern/node_common.cc
+++ b/source/blender/nodes/intern/node_common.cc
@@ -156,7 +156,8 @@ static void group_verify_socket_list(bNodeTree &node_tree,
bNode &node,
const ListBase &interface_sockets,
ListBase &verify_lb,
- const eNodeSocketInOut in_out)
+ const eNodeSocketInOut in_out,
+ const bool ensure_extend_socket_exists)
{
ListBase old_sockets = verify_lb;
BLI_listbase_clear(&verify_lb);
@@ -177,6 +178,17 @@ static void group_verify_socket_list(bNodeTree &node_tree,
}
}
+ if (ensure_extend_socket_exists) {
+ bNodeSocket *last_socket = static_cast<bNodeSocket *>(old_sockets.last);
+ if (last_socket != nullptr && STREQ(last_socket->identifier, "__extend__")) {
+ BLI_remlink(&old_sockets, last_socket);
+ BLI_addtail(&verify_lb, last_socket);
+ }
+ else {
+ nodeAddSocket(&node_tree, &node, in_out, "NodeSocketVirtual", "__extend__", "");
+ }
+ }
+
/* Remove leftover sockets that didn't match the node group's interface. */
LISTBASE_FOREACH_MUTABLE (bNodeSocket *, unused_socket, &old_sockets) {
nodeRemoveSocket(&node_tree, &node, unused_socket);
@@ -195,8 +207,8 @@ void node_group_update(struct bNodeTree *ntree, struct bNode *node)
}
else {
bNodeTree *ngroup = (bNodeTree *)node->id;
- group_verify_socket_list(*ntree, *node, ngroup->inputs, node->inputs, SOCK_IN);
- group_verify_socket_list(*ntree, *node, ngroup->outputs, node->outputs, SOCK_OUT);
+ group_verify_socket_list(*ntree, *node, ngroup->inputs, node->inputs, SOCK_IN, false);
+ group_verify_socket_list(*ntree, *node, ngroup->outputs, node->outputs, SOCK_OUT, false);
}
}
@@ -484,15 +496,7 @@ void node_group_input_update(bNodeTree *ntree, bNode *node)
}
BLI_freelistN(&tmplinks);
-
- /* check inputs and outputs, and remove or insert them */
- {
- /* value_in_out inverted for interface nodes to get correct socket value_property */
- group_verify_socket_list(*ntree, *node, ntree->inputs, node->outputs, SOCK_OUT);
-
- /* add virtual extension socket */
- nodeAddSocket(ntree, node, SOCK_OUT, "NodeSocketVirtual", "__extend__", "");
- }
+ group_verify_socket_list(*ntree, *node, ntree->inputs, node->outputs, SOCK_OUT, true);
}
void register_node_type_group_input()
@@ -582,15 +586,7 @@ void node_group_output_update(bNodeTree *ntree, bNode *node)
}
BLI_freelistN(&tmplinks);
-
- /* check inputs and outputs, and remove or insert them */
- {
- /* value_in_out inverted for interface nodes to get correct socket value_property */
- group_verify_socket_list(*ntree, *node, ntree->outputs, node->inputs, SOCK_IN);
-
- /* add virtual extension socket */
- nodeAddSocket(ntree, node, SOCK_IN, "NodeSocketVirtual", "__extend__", "");
- }
+ group_verify_socket_list(*ntree, *node, ntree->outputs, node->inputs, SOCK_IN, true);
}
void register_node_type_group_output()