[Bf-blender-cvs] [2fa85494fcb] node-tree-update-refactor: progress
Jacques Lucke
noreply at git.blender.org
Mon Nov 15 19:09:20 CET 2021
Commit: 2fa85494fcbc79fb3714467fb3c72ea2e39b20d8
Author: Jacques Lucke
Date: Thu Nov 11 13:32:33 2021 +0100
Branches: node-tree-update-refactor
https://developer.blender.org/rB2fa85494fcbc79fb3714467fb3c72ea2e39b20d8
progress
===================================================================
M source/blender/blenkernel/BKE_node_tree_update.h
M source/blender/blenkernel/intern/node.cc
M source/blender/blenkernel/intern/node_tree_update.cc
M source/blender/blenloader/intern/versioning_250.c
M source/blender/editors/space_node/node_edit.cc
M source/blender/editors/space_node/node_group.cc
M source/blender/editors/space_node/node_relationships.cc
M source/blender/makesdna/DNA_node_types.h
M source/blender/makesrna/intern/rna_nodetree.c
M source/blender/nodes/intern/node_common.cc
M source/blender/nodes/shader/node_shader_tree.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_node_tree_update.h b/source/blender/blenkernel/BKE_node_tree_update.h
index e54fef2c31e..25d43637d36 100644
--- a/source/blender/blenkernel/BKE_node_tree_update.h
+++ b/source/blender/blenkernel/BKE_node_tree_update.h
@@ -23,6 +23,7 @@
struct bNode;
struct bNodeSocket;
struct bNodeTree;
+struct bNodeLink;
struct Main;
struct ID;
@@ -41,8 +42,14 @@ void BKE_node_tree_update_tag(struct bNodeTree *tree);
*/
void BKE_node_tree_update_tag_node(struct bNodeTree *tree, struct bNode *node);
void BKE_node_tree_update_tag_socket(struct bNodeTree *tree, struct bNodeSocket *socket);
+void BKE_node_tree_update_tag_link(struct bNodeTree *tree);
void BKE_node_tree_update_tag_node_removed(struct bNodeTree *tree);
+void BKE_node_tree_update_tag_node_added(struct bNodeTree *tree, struct bNode *node);
void BKE_node_tree_update_tag_link_removed(struct bNodeTree *tree);
+void BKE_node_tree_update_tag_link_added(struct bNodeTree *tree, struct bNodeLink *link);
+void BKE_node_tree_update_tag_link_mute(struct bNodeTree *tree, struct bNodeLink *link);
+void BKE_node_tree_update_tag_missing_runtime_data(struct bNodeTree *tree);
+void BKE_node_tree_update_tag_interface(struct bNodeTree *tree);
typedef struct NodeTreeUpdateExtraParams {
/**
diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index 24f3671e267..f075e8c1209 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -73,6 +73,7 @@
#include "BKE_lib_query.h"
#include "BKE_main.h"
#include "BKE_node.h"
+#include "BKE_node_tree_update.h"
#include "BLI_ghash.h"
#include "BLI_threads.h"
@@ -698,6 +699,7 @@ void ntreeBlendReadData(BlendDataReader *reader, bNodeTree *ntree)
ntree->execdata = nullptr;
ntree->field_inferencing_interface = nullptr;
+ BKE_node_tree_update_tag_missing_runtime_data(ntree);
BLO_read_data_address(reader, &ntree->adt);
BKE_animdata_blend_read_data(reader, ntree->adt);
@@ -841,11 +843,6 @@ void ntreeBlendReadData(BlendDataReader *reader, bNodeTree *ntree)
/* TODO: should be dealt by new generic cache handling of IDs... */
ntree->previews = nullptr;
- if (ntree->type == NTREE_GEOMETRY) {
- /* Update field referencing for the geometry nodes modifier. */
- ntree->update |= NTREE_UPDATE_FIELD_INFERENCING;
- }
-
BLO_read_data_address(reader, &ntree->preview);
BKE_previewimg_blend_read(reader, ntree->preview);
@@ -1220,6 +1217,7 @@ static void node_socket_set_typeinfo(bNodeTree *ntree,
ntree->init &= ~NTREE_TYPE_INIT;
}
+ BKE_node_tree_update_tag_socket(ntree, sock);
}
/* Set specific typeinfo pointers in all node trees on register/unregister */
@@ -1710,7 +1708,7 @@ bNodeSocket *nodeAddSocket(bNodeTree *ntree,
BLI_remlink(lb, sock); /* does nothing for new socket */
BLI_addtail(lb, sock);
- node->update |= NODE_UPDATE;
+ BKE_node_tree_update_tag_socket(ntree, sock);
return sock;
}
@@ -2221,7 +2219,7 @@ bNode *nodeAddNode(const struct bContext *C, bNodeTree *ntree, const char *idnam
BLI_strncpy(node->idname, idname, sizeof(node->idname));
node_set_typeinfo(C, ntree, node, nodeTypeFind(idname));
- ntree->update |= NTREE_UPDATE_NODES;
+ BKE_node_tree_update_tag_node(ntree, node);
return node;
}
@@ -2350,7 +2348,7 @@ bNode *BKE_node_copy_ex(bNodeTree *ntree,
}
if (ntree) {
- ntree->update |= NTREE_UPDATE_NODES;
+ BKE_node_tree_update_tag_node(ntree, node_dst);
}
/* Reset the declaration of the new node. */
@@ -2448,7 +2446,7 @@ bNodeLink *nodeAddLink(
}
if (ntree) {
- ntree->update |= NTREE_UPDATE_LINKS;
+ BKE_node_tree_update_tag_link_added(ntree, link);
}
if (link != nullptr && link->tosock->flag & SOCK_MULTI_INPUT) {
@@ -2471,7 +2469,7 @@ void nodeRemLink(bNodeTree *ntree, bNodeLink *link)
MEM_freeN(link);
if (ntree) {
- ntree->update |= NTREE_UPDATE_LINKS;
+ BKE_node_tree_update_tag_link_removed(ntree);
}
}
@@ -2571,7 +2569,7 @@ void nodeMuteLinkToggle(bNodeTree *ntree, bNodeLink *link)
}
if (ntree) {
- ntree->update |= NTREE_UPDATE_LINKS;
+ BKE_node_tree_update_tag_link_mute(ntree, link);
}
}
@@ -2582,8 +2580,6 @@ void nodeRemSocketLinks(bNodeTree *ntree, bNodeSocket *sock)
nodeRemLink(ntree, link);
}
}
-
- ntree->update |= NTREE_UPDATE_LINKS;
}
bool nodeLinkIsHidden(const bNodeLink *link)
@@ -2648,7 +2644,7 @@ void nodeInternalRelink(bNodeTree *ntree, bNode *node)
link->flag |= NODE_LINK_MUTED;
}
- ntree->update |= NTREE_UPDATE_LINKS;
+ BKE_node_tree_update_tag_link(ntree);
}
else {
if (link->tosock->flag & SOCK_MULTI_INPUT) {
@@ -3192,7 +3188,7 @@ static void node_free_node(bNodeTree *ntree, bNode *node)
MEM_freeN(node);
if (ntree) {
- ntree->update |= NTREE_UPDATE_NODES;
+ BKE_node_tree_update_tag_node_removed(ntree);
}
}
@@ -3579,12 +3575,11 @@ bNodeSocket *ntreeAddSocketInterface(bNodeTree *ntree,
bNodeSocket *iosock = make_socket_interface(ntree, in_out, idname, name);
if (in_out == SOCK_IN) {
BLI_addtail(&ntree->inputs, iosock);
- ntree->update |= NTREE_UPDATE_GROUP_IN;
}
else if (in_out == SOCK_OUT) {
BLI_addtail(&ntree->outputs, iosock);
- ntree->update |= NTREE_UPDATE_GROUP_OUT;
}
+ BKE_node_tree_update_tag_interface(ntree);
return iosock;
}
@@ -3597,12 +3592,11 @@ bNodeSocket *ntreeInsertSocketInterface(bNodeTree *ntree,
bNodeSocket *iosock = make_socket_interface(ntree, in_out, idname, name);
if (in_out == SOCK_IN) {
BLI_insertlinkbefore(&ntree->inputs, next_sock, iosock);
- ntree->update |= NTREE_UPDATE_GROUP_IN;
}
else if (in_out == SOCK_OUT) {
BLI_insertlinkbefore(&ntree->outputs, next_sock, iosock);
- ntree->update |= NTREE_UPDATE_GROUP_OUT;
}
+ BKE_node_tree_update_tag_interface(ntree);
return iosock;
}
@@ -3648,7 +3642,7 @@ void ntreeRemoveSocketInterface(bNodeTree *ntree, bNodeSocket *sock)
node_socket_interface_free(ntree, sock, true);
MEM_freeN(sock);
- ntree->update |= NTREE_UPDATE_GROUP;
+ BKE_node_tree_update_tag_interface(ntree);
}
/* generates a valid RNA identifier from the node tree name */
diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc
index 0079628945e..c16f9e5afee 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -31,22 +31,58 @@ void BKE_node_tree_update_tag_node(bNodeTree *tree, bNode *node)
{
tree->changed_flag |= NTREE_CHANGED_NODE;
node->changed_flag |= NODE_CHANGED_ANY;
+ tree->update |= NTREE_UPDATE;
}
void BKE_node_tree_update_tag_socket(bNodeTree *tree, bNodeSocket *socket)
{
tree->changed_flag |= NTREE_CHANGED_SOCKET;
socket->changed_flag |= SOCK_CHANGED_ANY;
+ tree->update |= NTREE_UPDATE;
}
void BKE_node_tree_update_tag_node_removed(bNodeTree *tree)
{
tree->changed_flag |= NTREE_CHANGED_REMOVED_ANY;
+ tree->update |= NTREE_UPDATE;
+}
+
+void BKE_node_tree_update_tag_link(bNodeTree *tree)
+{
+ tree->changed_flag |= NTREE_CHANGED_LINK;
+ tree->update |= NTREE_UPDATE;
+}
+
+void BKE_node_tree_update_tag_node_added(bNodeTree *tree, bNode *node)
+{
+ BKE_node_tree_update_tag_node(tree, node);
}
void BKE_node_tree_update_tag_link_removed(bNodeTree *tree)
{
- tree->changed_flag |= NTREE_CHANGED_REMOVED_ANY;
+ BKE_node_tree_update_tag_link(tree);
+}
+
+void BKE_node_tree_update_tag_link_added(bNodeTree *tree, bNodeLink *UNUSED(link))
+{
+ BKE_node_tree_update_tag_link(tree);
+}
+
+void BKE_node_tree_update_tag_link_mute(bNodeTree *tree, bNodeLink *UNUSED(link))
+{
+ BKE_node_tree_update_tag_link(tree);
+}
+
+void BKE_node_tree_update_tag_missing_runtime_data(bNodeTree *tree)
+{
+ tree->changed_flag |= NTREE_CHANGED_MISSING_RUNTIME_DATA;
+ tree->update |= NTREE_UPDATE;
+}
+
+void BKE_node_tree_update_tag_interface(bNodeTree *tree)
+{
+ tree->changed_flag |= NTREE_CHANGED_ANY;
+ tree->update |= NTREE_UPDATE;
}
void BKE_node_tree_update(Main *bmain, NodeTreeUpdateExtraParams *params)
diff --git a/source/blender/blenloader/intern/versioning_250.c b/source/blender/blenloader/intern/versioning_250.c
index 54e673b51eb..de7cee8abf5 100644
--- a/source/blender/blenloader/intern/versioning_250.c
+++ b/source/blender/blenloader/intern/versioning_250.c
@@ -70,6 +70,7 @@
#include "BKE_main.h"
#include "BKE_modifier.h"
#include "BKE_multires.h"
+#include "BKE_node_tree_update.h"
#include "BKE_particle.h"
#include "BKE_pointcache.h"
#include "BKE_screen.h"
@@ -590,7 +591,7 @@ static bNodeSocket *do_versions_node_group_add_socket_2_56_2(bNodeTree *ngroup,
BLI_addtail(in_out == SOCK_IN ? &ngroup->inputs : &ngroup->outputs, gsock);
- ngroup->update |= (in_out == SOCK_IN ? NTREE_UPDATE_GROUP_IN : NTREE_UPDATE_GROUP_OUT);
+ BKE_node_tree_update_tag_interface(ngroup);
return gsock;
}
@@ -2019,7 +2020,7 @@ void blo_do_versions_250(FileData *fd, Library *lib, Main *bmain)
link->fromsock = gsock;
link->tonode = node;
link->tosock = sock;
- ntree->update |= NTREE_UPDATE_LINKS;
+ BKE_node_tree_update_tag_link_added(ntree, link);
sock->link = link;
}
@@ -2042,7 +2043,7 @@ void blo_do_versions_250(FileData *fd, Library *lib, Main *bmain)
link->fromsock = sock;
link->tonode = NULL;
link->tosock = gsock;
- ntree->update |= NTREE_UPDATE_LINKS;
+ BKE_node_tree_update_tag_link_added(ntree, link);
gsock->link = link;
}
@@ -2282,7 +2283,7 @@ void blo_do_versions_250(FileData *fd, Library *lib, Main *bmain)
do_versions_socket_default_value_259(sock);
}
- ntree->update |= NTREE_UPDATE;
+ BKE_node_tree_update_tag(ntree);
}
FOREACH_NODETREE_END;
}
diff --git a/source/blender/editors/space_node/node_edit.cc b/source/blender/editors/space_node/node_edit.cc
index d746f703cc6..85cf5a9116d 100644
--- a/source/blender/editors/space_node/no
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list