[Bf-blender-cvs] [c2aea94511c] functions-experimental-refactor: give nodes and sockets ids
Jacques Lucke
noreply at git.blender.org
Thu Oct 17 17:53:18 CEST 2019
Commit: c2aea94511cecca05d337d79766e6a82ecda7cf4
Author: Jacques Lucke
Date: Thu Oct 17 15:21:10 2019 +0200
Branches: functions-experimental-refactor
https://developer.blender.org/rBc2aea94511cecca05d337d79766e6a82ecda7cf4
give nodes and sockets ids
===================================================================
M source/blender/blenkernel/BKE_multi_function_network.h
M source/blender/blenkernel/intern/multi_function_network.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_multi_function_network.h b/source/blender/blenkernel/BKE_multi_function_network.h
index bda3cf64c4e..267905fea3b 100644
--- a/source/blender/blenkernel/BKE_multi_function_network.h
+++ b/source/blender/blenkernel/BKE_multi_function_network.h
@@ -29,6 +29,7 @@ class BuilderNode {
NetworkBuilder *m_network;
Vector<BuilderInputSocket *> m_inputs;
Vector<BuilderOutputSocket *> m_outputs;
+ uint m_id;
bool m_is_placeholder;
friend NetworkBuilder;
@@ -39,6 +40,8 @@ class BuilderNode {
ArrayRef<BuilderInputSocket *> inputs();
ArrayRef<BuilderOutputSocket *> outputs();
+ uint id();
+
bool is_function();
bool is_placeholder();
@@ -67,6 +70,7 @@ class BuilderSocket {
bool m_is_output;
uint m_index;
MultiFunctionDataType m_type;
+ uint m_id;
friend NetworkBuilder;
@@ -74,6 +78,8 @@ class BuilderSocket {
BuilderNode &node();
MultiFunctionDataType type();
+ uint id();
+
bool is_input();
bool is_output();
@@ -136,6 +142,7 @@ class Node {
ArrayRef<InputSocket *> m_inputs;
ArrayRef<OutputSocket *> m_outputs;
bool m_is_placeholder;
+ uint m_id;
friend Network;
@@ -145,6 +152,8 @@ class Node {
ArrayRef<InputSocket *> inputs();
ArrayRef<OutputSocket *> outputs();
+ uint id();
+
bool is_function();
bool is_placeholder();
@@ -173,6 +182,7 @@ class Socket {
bool m_is_output;
uint m_index;
MultiFunctionDataType m_type;
+ uint m_id;
friend Network;
@@ -180,6 +190,8 @@ class Socket {
Node &node();
MultiFunctionDataType type();
+ uint id();
+
bool is_input();
bool is_output();
@@ -208,6 +220,10 @@ class OutputSocket : public Socket {
};
class Network {
+ private:
+ BLI::MonotonicAllocator<> m_allocator;
+ Vector<Node *> m_nodes;
+
public:
Network(std::unique_ptr<NetworkBuilder> builder);
};
@@ -229,6 +245,11 @@ ArrayRef<BuilderOutputSocket *> BuilderNode::outputs()
return m_outputs;
}
+uint BuilderNode::id()
+{
+ return m_id;
+}
+
bool BuilderNode::is_function()
{
return !m_is_placeholder;
@@ -264,6 +285,11 @@ MultiFunctionDataType BuilderSocket::type()
return m_type;
}
+uint BuilderSocket::id()
+{
+ return m_id;
+}
+
bool BuilderSocket::is_input()
{
return !m_is_output;
@@ -311,6 +337,11 @@ ArrayRef<OutputSocket *> Node::outputs()
return m_outputs;
}
+uint Node::id()
+{
+ return m_id;
+}
+
bool Node::is_function()
{
return !m_is_placeholder;
@@ -346,6 +377,11 @@ MultiFunctionDataType Socket::type()
return m_type;
}
+uint Socket::id()
+{
+ return m_id;
+}
+
bool Socket::is_input()
{
return !m_is_output;
diff --git a/source/blender/blenkernel/intern/multi_function_network.cc b/source/blender/blenkernel/intern/multi_function_network.cc
index cd0dd90c26a..9188fd4da97 100644
--- a/source/blender/blenkernel/intern/multi_function_network.cc
+++ b/source/blender/blenkernel/intern/multi_function_network.cc
@@ -25,6 +25,7 @@ BuilderFunctionNode &NetworkBuilder::add_function(MultiFunction &function,
node->m_function = &function;
node->m_input_param_indices = input_param_indices;
node->m_output_param_indices = output_param_indices;
+ node->m_id = m_function_nodes.size() + m_placeholder_nodes.size();
for (uint i = 0; i < input_param_indices.size(); i++) {
ParamType param = function.signature().param_types()[i];
@@ -35,6 +36,7 @@ BuilderFunctionNode &NetworkBuilder::add_function(MultiFunction &function,
input_socket->m_node = node.get();
input_socket->m_index = i;
input_socket->m_is_output = false;
+ input_socket->m_id = m_input_sockets.size() + m_output_sockets.size();
node->m_inputs.append(input_socket.get());
m_input_sockets.append(std::move(input_socket));
}
@@ -48,6 +50,7 @@ BuilderFunctionNode &NetworkBuilder::add_function(MultiFunction &function,
output_socket->m_node = node.get();
output_socket->m_index = i;
output_socket->m_is_output = true;
+ output_socket->m_id = m_input_sockets.size() + m_output_sockets.size();
node->m_outputs.append(output_socket.get());
m_output_sockets.append(std::move(output_socket));
}
@@ -64,6 +67,7 @@ BuilderPlaceholderNode &NetworkBuilder::add_placeholder(
node->m_network = this;
node->m_is_placeholder = true;
+ node->m_id = m_function_nodes.size() + m_placeholder_nodes.size();
for (uint i = 0; i < input_types.size(); i++) {
auto input_socket = BLI::make_unique<BuilderInputSocket>();
@@ -71,6 +75,7 @@ BuilderPlaceholderNode &NetworkBuilder::add_placeholder(
input_socket->m_node = node.get();
input_socket->m_index = i;
input_socket->m_is_output = false;
+ input_socket->m_id = m_input_sockets.size() + m_output_sockets.size();
node->m_inputs.append(input_socket.get());
m_input_sockets.append(std::move(input_socket));
}
@@ -80,6 +85,7 @@ BuilderPlaceholderNode &NetworkBuilder::add_placeholder(
output_socket->m_node = node.get();
output_socket->m_index = i;
output_socket->m_is_output = true;
+ output_socket->m_id = m_input_sockets.size() + m_output_sockets.size();
node->m_outputs.append(output_socket.get());
m_output_sockets.append(std::move(output_socket));
}
More information about the Bf-blender-cvs
mailing list