[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