[Bf-blender-cvs] [5c70f5a7f71] node-tree-update-refactor: progress
Jacques Lucke
noreply at git.blender.org
Mon Nov 15 19:09:21 CET 2021
Commit: 5c70f5a7f71337bfc54b3d89c7d81a973d9c3657
Author: Jacques Lucke
Date: Mon Nov 15 13:32:44 2021 +0100
Branches: node-tree-update-refactor
https://developer.blender.org/rB5c70f5a7f71337bfc54b3d89c7d81a973d9c3657
progress
===================================================================
M source/blender/blenkernel/intern/node_tree_update.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc
index 37943647cf3..b1103e3175b 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -21,6 +21,46 @@
#include "BKE_node.h"
#include "BKE_node_tree_update.h"
+namespace blender::bke {
+
+class NodeTreeMainUpdater {
+ private:
+ Main *bmain_;
+ NodeTreeUpdateExtraParams *params_;
+
+ public:
+ NodeTreeMainUpdater(Main *bmain, NodeTreeUpdateExtraParams *params)
+ : bmain_(bmain), params_(params)
+ {
+ }
+
+ void update()
+ {
+ FOREACH_NODETREE_BEGIN (bmain_, ntree, id) {
+ ntreeUpdateTree(bmain_, ntree);
+ if (params_) {
+ if (params_->tree_changed_fn) {
+ params_->tree_changed_fn(id, ntree, params_->user_data);
+ }
+ if (params_->tree_interface_changed_fn) {
+ params_->tree_interface_changed_fn(id, ntree, params_->user_data);
+ }
+ if (params_->tree_output_changed_fn) {
+ params_->tree_output_changed_fn(id, ntree, params_->user_data);
+ }
+ }
+ }
+ FOREACH_NODETREE_END;
+ }
+
+ void update_rooted(Span<bNodeTree *> root_trees)
+ {
+ this->update();
+ }
+};
+
+} // namespace blender::bke
+
void BKE_node_tree_update_tag(bNodeTree *ntree)
{
ntree->changed_flag |= NTREE_CHANGED_ANY;
@@ -87,26 +127,14 @@ void BKE_node_tree_update_tag_interface(bNodeTree *ntree)
void BKE_node_tree_update_main(Main *bmain, NodeTreeUpdateExtraParams *params)
{
- FOREACH_NODETREE_BEGIN (bmain, ntree, id) {
- ntreeUpdateTree(bmain, ntree);
- if (params) {
- if (params->tree_changed_fn) {
- params->tree_changed_fn(id, ntree, params->user_data);
- }
- if (params->tree_interface_changed_fn) {
- params->tree_interface_changed_fn(id, ntree, params->user_data);
- }
- if (params->tree_output_changed_fn) {
- params->tree_output_changed_fn(id, ntree, params->user_data);
- }
- }
- }
- FOREACH_NODETREE_END;
+ blender::bke::NodeTreeMainUpdater updater{bmain, params};
+ updater.update();
}
void BKE_node_tree_update_main_rooted(Main *bmain,
- bNodeTree *UNUSED(ntree),
+ bNodeTree *ntree,
NodeTreeUpdateExtraParams *params)
{
- BKE_node_tree_update_main(bmain, params);
+ blender::bke::NodeTreeMainUpdater updater{bmain, params};
+ updater.update_rooted({ntree});
}
More information about the Bf-blender-cvs
mailing list