[Bf-blender-cvs] [92d4376c8eb] functions: make VirtualNodeTree specific to one bNodeTree
Jacques Lucke
noreply at git.blender.org
Thu Nov 21 15:19:45 CET 2019
Commit: 92d4376c8ebd968c080ebbc82f2c82572527e220
Author: Jacques Lucke
Date: Wed Nov 20 18:20:16 2019 +0100
Branches: functions
https://developer.blender.org/rB92d4376c8ebd968c080ebbc82f2c82572527e220
make VirtualNodeTree specific to one bNodeTree
===================================================================
M source/blender/blenkernel/BKE_virtual_node_tree.h
M source/blender/blenkernel/intern/virtual_node_tree.cc
M source/blender/functions/intern/vtree_multi_function/vnode_multi_function_wrapper_builder.cc
M source/blender/functions/intern/vtree_multi_function/vtree_multi_function.h
M source/blender/functions/intern/vtree_multi_function_network/mappings_nodes.cc
M source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
M source/blender/modifiers/intern/MOD_functionpoints_cxx.cc
M source/blender/simulations/bparticles/node_frontend.cpp
===================================================================
diff --git a/source/blender/blenkernel/BKE_virtual_node_tree.h b/source/blender/blenkernel/BKE_virtual_node_tree.h
index 51b36011612..fd511ea4aba 100644
--- a/source/blender/blenkernel/BKE_virtual_node_tree.h
+++ b/source/blender/blenkernel/BKE_virtual_node_tree.h
@@ -38,7 +38,6 @@ class VSocket : BLI::NonCopyable, BLI::NonMovable {
VNode *m_node;
bool m_is_input;
bNodeSocket *m_bsocket;
- bNodeTree *m_btree;
uint m_id;
PointerRNA m_rna;
uint m_index;
@@ -89,7 +88,6 @@ class VNode : BLI::NonCopyable, BLI::NonMovable {
Vector<VInputSocket *> m_inputs;
Vector<VOutputSocket *> m_outputs;
bNode *m_bnode;
- bNodeTree *m_btree;
uint m_id;
PointerRNA m_rna;
@@ -118,19 +116,17 @@ class VNode : BLI::NonCopyable, BLI::NonMovable {
class VirtualNodeTree : BLI::NonCopyable, BLI::NonMovable {
private:
BLI::MonotonicAllocator<> m_allocator;
+ bNodeTree *m_btree;
Vector<VNode *> m_nodes_by_id;
Vector<VSocket *> m_sockets_by_id;
Vector<VInputSocket *> m_input_sockets;
Vector<VOutputSocket *> m_output_sockets;
StringMap<Vector<VNode *>> m_nodes_by_idname;
- VirtualNodeTree() = default;
-
public:
+ VirtualNodeTree(bNodeTree *btree);
~VirtualNodeTree();
- static std::unique_ptr<VirtualNodeTree> FromBTree(bNodeTree *btree);
-
ArrayRef<const VNode *> nodes() const;
ArrayRef<const VNode *> nodes_with_idname(StringRef idname) const;
uint socket_count() const;
@@ -140,6 +136,8 @@ class VirtualNodeTree : BLI::NonCopyable, BLI::NonMovable {
const VSocket &socket_by_id(uint id) const;
+ bNodeTree *btree() const;
+
private:
void find_targets_skipping_reroutes(VOutputSocket &vsocket, Vector<VSocket *> &r_targets);
};
@@ -224,11 +222,6 @@ inline bNodeSocket *VSocket::bsocket() const
return m_bsocket;
}
-inline bNodeTree *VSocket::btree() const
-{
- return m_btree;
-}
-
inline ArrayRef<const VOutputSocket *> VInputSocket::linked_sockets() const
{
return ArrayRef<VSocket *>(m_linked_sockets).cast<const VOutputSocket *>();
@@ -308,7 +301,7 @@ inline bNode *VNode::bnode() const
return m_bnode;
}
-inline bNodeTree *VNode::btree() const
+inline bNodeTree *VirtualNodeTree::btree() const
{
return m_btree;
}
diff --git a/source/blender/blenkernel/intern/virtual_node_tree.cc b/source/blender/blenkernel/intern/virtual_node_tree.cc
index 426232274f6..57a2311310a 100644
--- a/source/blender/blenkernel/intern/virtual_node_tree.cc
+++ b/source/blender/blenkernel/intern/virtual_node_tree.cc
@@ -15,12 +15,11 @@ static bool is_reroute_node(const VNode &vnode)
return vnode.idname() == "NodeReroute";
}
-std::unique_ptr<VirtualNodeTree> VirtualNodeTree::FromBTree(bNodeTree *btree)
+VirtualNodeTree::VirtualNodeTree(bNodeTree *btree) : m_btree(btree)
{
BLI_assert(btree != nullptr);
- VirtualNodeTree *vtree_ptr = new VirtualNodeTree();
- VirtualNodeTree &vtree = *vtree_ptr;
+ VirtualNodeTree &vtree = *this;
Map<bNode *, VNode *> node_mapping;
@@ -29,7 +28,6 @@ std::unique_ptr<VirtualNodeTree> VirtualNodeTree::FromBTree(bNodeTree *btree)
vnode.m_vtree = &vtree;
vnode.m_bnode = bnode;
- vnode.m_btree = btree;
vnode.m_id = vtree.m_nodes_by_id.size();
RNA_pointer_create(&btree->id, &RNA_Node, bnode, &vnode.m_rna);
@@ -40,7 +38,6 @@ std::unique_ptr<VirtualNodeTree> VirtualNodeTree::FromBTree(bNodeTree *btree)
vsocket.m_index = vnode.m_inputs.size();
vsocket.m_is_input = true;
vsocket.m_bsocket = bsocket;
- vsocket.m_btree = btree;
vsocket.m_id = vtree.m_sockets_by_id.size();
RNA_pointer_create(&btree->id, &RNA_NodeSocket, bsocket, &vsocket.m_rna);
@@ -56,7 +53,6 @@ std::unique_ptr<VirtualNodeTree> VirtualNodeTree::FromBTree(bNodeTree *btree)
vsocket.m_index = vnode.m_outputs.size();
vsocket.m_is_input = false;
vsocket.m_bsocket = bsocket;
- vsocket.m_btree = btree;
vsocket.m_id = vtree.m_sockets_by_id.size();
RNA_pointer_create(&btree->id, &RNA_NodeSocket, bsocket, &vsocket.m_rna);
@@ -98,8 +94,6 @@ std::unique_ptr<VirtualNodeTree> VirtualNodeTree::FromBTree(bNodeTree *btree)
vtree.m_nodes_by_idname.add_new(vnode->idname(), {vnode});
}
}
-
- return std::unique_ptr<VirtualNodeTree>(vtree_ptr);
}
void VirtualNodeTree::find_targets_skipping_reroutes(VOutputSocket &vsocket,
diff --git a/source/blender/functions/intern/vtree_multi_function/vnode_multi_function_wrapper_builder.cc b/source/blender/functions/intern/vtree_multi_function/vnode_multi_function_wrapper_builder.cc
index 359137aacde..ef6f33f7856 100644
--- a/source/blender/functions/intern/vtree_multi_function/vnode_multi_function_wrapper_builder.cc
+++ b/source/blender/functions/intern/vtree_multi_function/vnode_multi_function_wrapper_builder.cc
@@ -104,6 +104,7 @@ void VNodeMFWrapperBuilder::set_fn(const MultiFunction &fn,
void VNodeMFWrapperBuilder::assert_valid_param_vsockets(
const MultiFunction &fn, ArrayRef<VSocketsForMFParam> param_vsockets)
{
+ UNUSED_VARS_NDEBUG(fn, param_vsockets);
#ifdef DEBUG
BLI_assert(fn.param_indices().size() == param_vsockets.size());
diff --git a/source/blender/functions/intern/vtree_multi_function/vtree_multi_function.h b/source/blender/functions/intern/vtree_multi_function/vtree_multi_function.h
index 75532f25386..8cfe46147e2 100644
--- a/source/blender/functions/intern/vtree_multi_function/vtree_multi_function.h
+++ b/source/blender/functions/intern/vtree_multi_function/vtree_multi_function.h
@@ -16,7 +16,6 @@ class VTreeMultiFunction final : public MultiFunction {
VTreeMultiFunction(Vector<const VOutputSocket *> inputs, Vector<const VInputSocket *> outputs)
: m_inputs(std::move(inputs)), m_outputs(std::move(outputs))
{
- auto &data = get_vtree_mf_mappings();
}
void call(MFMask UNUSED(mask), MFParams UNUSED(params), MFContext UNUSED(context)) const override
diff --git a/source/blender/functions/intern/vtree_multi_function_network/mappings_nodes.cc b/source/blender/functions/intern/vtree_multi_function_network/mappings_nodes.cc
index 937743a4499..ef069ad3c8f 100644
--- a/source/blender/functions/intern/vtree_multi_function_network/mappings_nodes.cc
+++ b/source/blender/functions/intern/vtree_multi_function_network/mappings_nodes.cc
@@ -517,7 +517,7 @@ static void INSERT_group_node(VTreeMFNetworkBuilder &builder, const VNode &vnode
return;
}
- auto vtree = VirtualNodeTree::FromBTree(btree);
+ auto vtree = BLI::make_unique<VirtualNodeTree>(btree);
std::unique_ptr<MF_EvaluateNetwork> fn = generate_vtree_multi_function(*vtree,
builder.resources());
diff --git a/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc b/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
index 468dc689a6d..7043e2fb91e 100644
--- a/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
+++ b/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
@@ -45,10 +45,10 @@ void MOD_functiondeform_do(FunctionDeformModifierData *fdmd,
bNodeTree *btree = (bNodeTree *)DEG_get_original_id((ID *)fdmd->function_tree);
- auto vtree = VirtualNodeTree::FromBTree(btree);
+ VirtualNodeTree vtree(btree);
BLI::ResourceCollector resources;
- auto function = FN::generate_vtree_multi_function(*vtree, resources);
+ auto function = FN::generate_vtree_multi_function(vtree, resources);
FN::VTreeMultiFunction test({}, {});
diff --git a/source/blender/modifiers/intern/MOD_functionpoints_cxx.cc b/source/blender/modifiers/intern/MOD_functionpoints_cxx.cc
index e4d702f7625..88eb211e510 100644
--- a/source/blender/modifiers/intern/MOD_functionpoints_cxx.cc
+++ b/source/blender/modifiers/intern/MOD_functionpoints_cxx.cc
@@ -40,10 +40,10 @@ Mesh *MOD_functionpoints_do(FunctionPointsModifierData *fpmd,
bNodeTree *btree = (bNodeTree *)DEG_get_original_id((ID *)fpmd->function_tree);
- auto vtree = VirtualNodeTree::FromBTree(btree);
+ VirtualNodeTree vtree(btree);
BLI::ResourceCollector resources;
- auto function = FN::generate_vtree_multi_function(*vtree, resources);
+ auto function = FN::generate_vtree_multi_function(vtree, resources);
MFParamsBuilder params_builder(*function, 1);
params_builder.add_readonly_single_input(&fpmd->control1);
diff --git a/source/blender/simulations/bparticles/node_frontend.cpp b/source/blender/simulations/bparticles/node_frontend.cpp
index ccf22f88ae4..691141524e1 100644
--- a/source/blender/simulations/bparticles/node_frontend.cpp
+++ b/source/blender/simulations/bparticles/node_frontend.cpp
@@ -785,12 +785,11 @@ static void collect_influences(VTreeData &vtree_data,
class NodeTreeStepSimulator : public StepSimulator {
private:
- std::unique_ptr<VirtualNodeTree> m_vtree;
+ VirtualNodeTree m_vtree;
public:
- NodeTreeStepSimulator(bNodeTree *btree)
+ NodeTreeStepSimulator(bNodeTree *btree) : m_vtree(btree)
{
- m_vtree = VirtualNodeTree::FromBTree(btree);
}
void simulate(SimulationState &simulation_state) override
@@ -810,7 +809,7 @@ class NodeTreeStepSimulator : public StepSimulator {
ResourceCollector resources;
std::unique_ptr<VTreeMFNetwork> data_graph = FN::generate_vtree_multi_function_network(
- *m_vtree, resources);
+ m_vtree, resources);
if (data_graph.get() == nullptr) {
return;
}
More information about the Bf-blender-cvs
mailing list