diff options
author | Jacques Lucke <jacques@blender.org> | 2021-11-15 15:32:44 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-11-15 15:32:44 +0300 |
commit | 5c70f5a7f71337bfc54b3d89c7d81a973d9c3657 (patch) | |
tree | 0ee91eacb807b21d7a9eb82812d7031e98d32b5d | |
parent | a9ac8b44d5aea5d56eb132d3ff1ed3934478ea9c (diff) |
progress
-rw-r--r-- | source/blender/blenkernel/intern/node_tree_update.cc | 62 |
1 files changed, 45 insertions, 17 deletions
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}); } |