[Bf-blender-cvs] [d6a7832f6de] functions: simplify virtual node tree usage
Jacques Lucke
noreply at git.blender.org
Tue Jul 23 19:16:54 CEST 2019
Commit: d6a7832f6de24b8a9c8c0322534e186d42c388bc
Author: Jacques Lucke
Date: Tue Jul 23 14:59:18 2019 +0200
Branches: functions
https://developer.blender.org/rBd6a7832f6de24b8a9c8c0322534e186d42c388bc
simplify virtual node tree usage
===================================================================
M source/blender/blenkernel/BKE_node_tree.hpp
M source/blender/blenkernel/intern/node_tree.cpp
M source/blender/functions/frontends/data_flow_nodes/builder.cpp
M source/blender/functions/frontends/data_flow_nodes/builder.hpp
M source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
M source/blender/simulations/bparticles/inserters.cpp
M source/blender/simulations/bparticles/node_frontend.cpp
===================================================================
diff --git a/source/blender/blenkernel/BKE_node_tree.hpp b/source/blender/blenkernel/BKE_node_tree.hpp
index 8e2c55eca84..4b4289255de 100644
--- a/source/blender/blenkernel/BKE_node_tree.hpp
+++ b/source/blender/blenkernel/BKE_node_tree.hpp
@@ -181,28 +181,28 @@ class VirtualNode {
VirtualNodeTree *m_backlink;
bNodeTree *m_btree;
bNode *m_bnode;
- ArrayRef<VirtualSocket> m_inputs;
- ArrayRef<VirtualSocket> m_outputs;
+ ArrayRef<VirtualSocket *> m_inputs;
+ ArrayRef<VirtualSocket *> m_outputs;
public:
- ArrayRef<VirtualSocket> inputs()
+ ArrayRef<VirtualSocket *> inputs()
{
return m_inputs;
}
- ArrayRef<VirtualSocket> outputs()
+ ArrayRef<VirtualSocket *> outputs()
{
return m_outputs;
}
VirtualSocket *input(uint index)
{
- return &m_inputs[index];
+ return m_inputs[index];
}
VirtualSocket *output(uint index)
{
- return &m_outputs[index];
+ return m_outputs[index];
}
bNode *bnode()
@@ -247,12 +247,12 @@ class VirtualSocket {
public:
bool is_input() const
{
- return m_vnode->m_inputs.contains_ptr(this);
+ return this->m_bsocket->in_out == SOCK_IN;
}
bool is_output() const
{
- return m_vnode->m_outputs.contains_ptr(this);
+ return this->m_bsocket->in_out == SOCK_OUT;
}
bNodeSocket *bsocket()
diff --git a/source/blender/blenkernel/intern/node_tree.cpp b/source/blender/blenkernel/intern/node_tree.cpp
index ed113c1b26f..f2c78a61988 100644
--- a/source/blender/blenkernel/intern/node_tree.cpp
+++ b/source/blender/blenkernel/intern/node_tree.cpp
@@ -117,16 +117,16 @@ void VirtualNodeTree::add_all_of_tree(bNodeTree *btree)
VirtualSocket *from_vsocket = nullptr;
VirtualSocket *to_vsocket = nullptr;
- for (VirtualSocket &output : from_node->outputs()) {
- if (output.bsocket() == blink->fromsock) {
- from_vsocket = &output;
+ for (VirtualSocket *output : from_node->outputs()) {
+ if (output->bsocket() == blink->fromsock) {
+ from_vsocket = output;
break;
}
}
- for (VirtualSocket &input : to_node->inputs()) {
- if (input.bsocket() == blink->tosock) {
- to_vsocket = &input;
+ for (VirtualSocket *input : to_node->inputs()) {
+ if (input->bsocket() == blink->tosock) {
+ to_vsocket = input;
break;
}
}
@@ -149,22 +149,27 @@ VirtualNode *VirtualNodeTree::add_bnode(bNodeTree *btree, bNode *bnode)
Vector<bNodeSocket *, 10> original_inputs(bnode->inputs, true);
Vector<bNodeSocket *, 10> original_outputs(bnode->outputs, true);
- vnode->m_inputs = m_allocator.allocate_array<VirtualSocket>(original_inputs.size());
- vnode->m_outputs = m_allocator.allocate_array<VirtualSocket>(original_outputs.size());
+ auto inputs = m_allocator.allocate_array<VirtualSocket>(original_inputs.size());
+ auto outputs = m_allocator.allocate_array<VirtualSocket>(original_outputs.size());
+
+ vnode->m_inputs = m_allocator.allocate_array<VirtualSocket *>(inputs.size());
+ vnode->m_outputs = m_allocator.allocate_array<VirtualSocket *>(outputs.size());
for (uint i = 0; i < original_inputs.size(); i++) {
- VirtualSocket &vsocket = vnode->m_inputs[i];
+ VirtualSocket &vsocket = inputs[i];
new (&vsocket) VirtualSocket();
vsocket.m_vnode = vnode;
vsocket.m_btree = btree;
vsocket.m_bsocket = original_inputs[i];
+ vnode->m_inputs[i] = &vsocket;
}
for (uint i = 0; i < original_outputs.size(); i++) {
- VirtualSocket &vsocket = vnode->m_outputs[i];
+ VirtualSocket &vsocket = outputs[i];
new (&vsocket) VirtualSocket();
vsocket.m_vnode = vnode;
vsocket.m_btree = btree;
vsocket.m_bsocket = original_outputs[i];
+ vnode->m_outputs[i] = &vsocket;
}
m_nodes.append(vnode);
@@ -220,8 +225,7 @@ static bool is_reroute(VirtualNode *vnode)
return STREQ(vnode->bnode()->idname, "NodeReroute");
}
-static void find_connected_sockets_left(VirtualSocket *vsocket,
- Vector<VirtualSocket *> &r_found)
+static void find_connected_sockets_left(VirtualSocket *vsocket, Vector<VirtualSocket *> &r_found)
{
BLI_assert(vsocket->is_input());
for (VirtualSocket *other : vsocket->direct_links()) {
@@ -234,8 +238,7 @@ static void find_connected_sockets_left(VirtualSocket *vsocket,
}
}
-static void find_connected_sockets_right(VirtualSocket *vsocket,
- Vector<VirtualSocket *> &r_found)
+static void find_connected_sockets_right(VirtualSocket *vsocket, Vector<VirtualSocket *> &r_found)
{
BLI_assert(vsocket->is_output());
for (VirtualSocket *other : vsocket->direct_links()) {
diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.cpp b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
index 4c4fd45267f..f0b8ec2229d 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
@@ -113,14 +113,14 @@ void BTreeGraphBuilder::map_sockets(DFGB_Node *node, VirtualNode *vnode)
BLI_assert(vnode->outputs().size() == node->output_amount());
uint input_index = 0;
- for (VirtualSocket &vsocket : vnode->inputs()) {
- this->map_socket(node->input(input_index), &vsocket);
+ for (VirtualSocket *vsocket : vnode->inputs()) {
+ this->map_socket(node->input(input_index), vsocket);
input_index++;
}
uint output_index = 0;
- for (VirtualSocket &vsocket : vnode->outputs()) {
- this->map_socket(node->output(output_index), &vsocket);
+ for (VirtualSocket *vsocket : vnode->outputs()) {
+ this->map_socket(node->output(output_index), vsocket);
output_index++;
}
}
@@ -128,17 +128,17 @@ void BTreeGraphBuilder::map_sockets(DFGB_Node *node, VirtualNode *vnode)
void BTreeGraphBuilder::map_data_sockets(DFGB_Node *node, VirtualNode *vnode)
{
uint input_index = 0;
- for (VirtualSocket &vsocket : vnode->inputs()) {
- if (this->is_data_socket(&vsocket)) {
- this->map_socket(node->input(input_index), &vsocket);
+ for (VirtualSocket *vsocket : vnode->inputs()) {
+ if (this->is_data_socket(vsocket)) {
+ this->map_socket(node->input(input_index), vsocket);
input_index++;
}
}
uint output_index = 0;
- for (VirtualSocket &vsocket : vnode->outputs()) {
- if (this->is_data_socket(&vsocket)) {
- this->map_socket(node->output(output_index), &vsocket);
+ for (VirtualSocket *vsocket : vnode->outputs()) {
+ if (this->is_data_socket(vsocket)) {
+ this->map_socket(node->output(output_index), vsocket);
output_index++;
}
}
@@ -165,16 +165,16 @@ DFGB_Socket BTreeGraphBuilder::lookup_socket(VirtualSocket *vsocket)
}
bool BTreeGraphBuilder::check_if_sockets_are_mapped(VirtualNode *vnode,
- ArrayRef<VirtualSocket> vsockets) const
+ ArrayRef<VirtualSocket *> vsockets) const
{
int index = 0;
- for (VirtualSocket &vsocket : vsockets) {
- if (this->is_data_socket(&vsocket)) {
- if (!m_socket_map.contains(&vsocket)) {
+ for (VirtualSocket *vsocket : vsockets) {
+ if (this->is_data_socket(vsocket)) {
+ if (!m_socket_map.contains(vsocket)) {
std::cout << "Data DFGB_Socket not mapped: " << std::endl;
std::cout << " Tree: " << vnode->btree_id()->name << std::endl;
std::cout << " DFGB_Node: " << vnode->name() << std::endl;
- if (vsocket.is_input()) {
+ if (vsocket->is_input()) {
std::cout << " Input";
}
else {
@@ -236,13 +236,13 @@ SharedType &BTreeGraphBuilder::type_from_rna(PointerRNA &rna, StringRefNull prop
bool BTreeGraphBuilder::has_data_socket(VirtualNode *vnode) const
{
- for (VirtualSocket &vsocket : vnode->inputs()) {
- if (this->is_data_socket(&vsocket)) {
+ for (VirtualSocket *vsocket : vnode->inputs()) {
+ if (this->is_data_socket(vsocket)) {
return true;
}
}
- for (VirtualSocket &vsocket : vnode->outputs()) {
- if (this->is_data_socket(&vsocket)) {
+ for (VirtualSocket *vsocket : vnode->outputs()) {
+ if (this->is_data_socket(vsocket)) {
return true;
}
}
diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.hpp b/source/blender/functions/frontends/data_flow_nodes/builder.hpp
index 33579eade9a..a6c3f8dbb8e 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.hpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.hpp
@@ -64,7 +64,7 @@ class BTreeGraphBuilder {
SharedType &type_from_rna(PointerRNA &rna, StringRefNull prop_name) const;
private:
- bool check_if_sockets_are_mapped(VirtualNode *vnode, ArrayRef<VirtualSocket> vsockets) const;
+ bool check_if_sockets_are_mapped(VirtualNode *vnode, ArrayRef<VirtualSocket *> vsockets) const;
};
} // namespace DataFlowNodes
diff --git a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
index 16b0c676088..fb739dfceb0 100644
--- a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
@@ -11,16 +11,16 @@ namespace DataFlowNodes {
static void insert_placeholder_node(BTreeGraphBuilder &builder, VirtualNode *vnode)
{
FunctionBuilder fn_builder;
- for (VirtualSocket &vsocket : vnode->inputs()) {
- if (builder.is_data_socket(&vsocket)) {
- SharedType &type = builder.query_socket_type(&vsocket);
- fn_builder.add_input(builder.query_socket_name(&vsocket), type);
+ for (VirtualSocket *vsocket : vnode->inputs()) {
+ if (builder.is_data_socket(vsocket)) {
+ SharedType &type = builder.query_socket_type(vsocket);
+ fn_builder.add_input(builder.query_socket_name(vsocket), type);
}
}
- for (VirtualSocket &vsocket : vnode->outputs()) {
- if (builder.is_data_socket(&vsocket)) {
- SharedType &type = builder.query_socket_type(&vsocket);
- fn_builder.add_output(builder.query_socket_name(&vsocket), type);
+ for (VirtualSocket *vsocket : vnode->outputs()) {
+ if (bu
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list