[Bf-blender-cvs] [a40b4d5439f] temp-derived-node-tree-refactor: construct contexts
Jacques Lucke
noreply at git.blender.org
Wed Mar 3 09:57:02 CET 2021
Commit: a40b4d5439f69fd05f56b4a8f6b542472ec33985
Author: Jacques Lucke
Date: Wed Mar 3 08:33:14 2021 +0100
Branches: temp-derived-node-tree-refactor
https://developer.blender.org/rBa40b4d5439f69fd05f56b4a8f6b542472ec33985
construct contexts
===================================================================
M source/blender/nodes/NOD_XXX_node_tree.hh
M source/blender/nodes/intern/xxx_node_tree.cc
===================================================================
diff --git a/source/blender/nodes/NOD_XXX_node_tree.hh b/source/blender/nodes/NOD_XXX_node_tree.hh
index fbc9bdf1c5a..314bad1993f 100644
--- a/source/blender/nodes/NOD_XXX_node_tree.hh
+++ b/source/blender/nodes/NOD_XXX_node_tree.hh
@@ -25,7 +25,7 @@ class XXXNodeTree;
class XXXNodeTreeContextInfo {
private:
XXXNodeTreeContextInfo *parent_;
- NodeTreeRef *tree_;
+ const NodeTreeRef *tree_;
Map<const NodeRef *, XXXNodeTreeContextInfo *> children_;
friend XXXNodeTree;
@@ -64,10 +64,13 @@ class XXXNodeTree {
XXXNodeTreeContextInfo *root_context_info_;
public:
- XXXNodeTree(bNodeTree *btree, NodeTreeRefMap &node_tree_refs);
+ XXXNodeTree(bNodeTree &btree, NodeTreeRefMap &node_tree_refs);
~XXXNodeTree();
private:
+ XXXNodeTreeContextInfo &construct_context_info_recursively(XXXNodeTreeContextInfo *parent,
+ bNodeTree &btree,
+ NodeTreeRefMap &node_tree_refs);
void destruct_context_info_recursively(XXXNodeTreeContextInfo *context_info);
};
diff --git a/source/blender/nodes/intern/xxx_node_tree.cc b/source/blender/nodes/intern/xxx_node_tree.cc
index af6a50ebaf9..c966024077b 100644
--- a/source/blender/nodes/intern/xxx_node_tree.cc
+++ b/source/blender/nodes/intern/xxx_node_tree.cc
@@ -18,8 +18,31 @@
namespace blender::nodes {
-XXXNodeTree::XXXNodeTree(bNodeTree *btree, NodeTreeRefMap &node_tree_refs)
+XXXNodeTree::XXXNodeTree(bNodeTree &btree, NodeTreeRefMap &node_tree_refs)
{
+ root_context_info_ = &this->construct_context_info_recursively(nullptr, btree, node_tree_refs);
+}
+
+XXXNodeTreeContextInfo &XXXNodeTree::construct_context_info_recursively(
+ XXXNodeTreeContextInfo *parent, bNodeTree &btree, NodeTreeRefMap &node_tree_refs)
+{
+ XXXNodeTreeContextInfo &context_info = *allocator_.construct<XXXNodeTreeContextInfo>();
+ context_info.parent_ = parent;
+ context_info.tree_ = &get_tree_ref_from_map(node_tree_refs, btree);
+
+ for (const NodeRef *node : context_info.tree_->nodes()) {
+ if (node->is_group_node()) {
+ bNode *bnode = node->bnode();
+ bNodeTree *child_btree = reinterpret_cast<bNodeTree *>(bnode->id);
+ if (child_btree != nullptr) {
+ XXXNodeTreeContextInfo &child = this->construct_context_info_recursively(
+ &context_info, *child_btree, node_tree_refs);
+ context_info.children_.add_new(node, &child);
+ }
+ }
+ }
+
+ return context_info;
}
XXXNodeTree::~XXXNodeTree()
More information about the Bf-blender-cvs
mailing list