[Bf-blender-cvs] [26f4fa9de73] functions: utility to add input/output dummy nodes

Jacques Lucke noreply at git.blender.org
Sat Feb 1 11:59:14 CET 2020


Commit: 26f4fa9de73b46b82de21660f371a5e80dcfd600
Author: Jacques Lucke
Date:   Sat Feb 1 11:37:36 2020 +0100
Branches: functions
https://developer.blender.org/rB26f4fa9de73b46b82de21660f371a5e80dcfd600

utility to add input/output dummy nodes

===================================================================

M	source/blender/functions/FN_multi_function_network.h
M	source/blender/functions/intern/multi_function_network.cc

===================================================================

diff --git a/source/blender/functions/FN_multi_function_network.h b/source/blender/functions/FN_multi_function_network.h
index fd45ce3ff12..01890e5493b 100644
--- a/source/blender/functions/FN_multi_function_network.h
+++ b/source/blender/functions/FN_multi_function_network.h
@@ -157,6 +157,9 @@ class MFNetworkBuilder : BLI::NonCopyable, BLI::NonMovable {
                                 ArrayRef<MFDataType> output_types,
                                 ArrayRef<StringRef> input_names,
                                 ArrayRef<StringRef> output_names);
+  MFBuilderDummyNode &add_input_dummy(StringRef name, MFBuilderInputSocket &socket);
+  MFBuilderDummyNode &add_output_dummy(StringRef name, MFBuilderOutputSocket &socket);
+
   void add_link(MFBuilderOutputSocket &from, MFBuilderInputSocket &to);
   void remove_link(MFBuilderOutputSocket &from, MFBuilderInputSocket &to);
   void remove_node(MFBuilderNode &node);
@@ -402,6 +405,10 @@ class MFNetwork : BLI::NonCopyable, BLI::NonMovable {
 
   ArrayRef<uint> max_dependency_depth_per_node() const;
 
+  const MFDummyNode &find_dummy_node(MFBuilderDummyNode &builder_node) const;
+  const MFInputSocket &find_dummy_socket(MFBuilderInputSocket &builder_socket) const;
+  const MFOutputSocket &find_dummy_socket(MFBuilderOutputSocket &builder_socket) const;
+
  private:
   void create_links_to_node(MFNetworkBuilder &builder,
                             MFNode *to_node,
@@ -826,6 +833,29 @@ inline ArrayRef<uint> MFNetwork::max_dependency_depth_per_node() const
   return m_max_dependency_depth_per_node;
 }
 
+inline const MFDummyNode &MFNetwork::find_dummy_node(MFBuilderDummyNode &builder_node) const
+{
+  uint node_index = builder_node.network().current_index_of(builder_node);
+  const MFDummyNode &node = *this->m_dummy_nodes[node_index];
+  return node;
+}
+
+inline const MFInputSocket &MFNetwork::find_dummy_socket(
+    MFBuilderInputSocket &builder_socket) const
+{
+  const MFDummyNode &node = this->find_dummy_node(builder_socket.node().as_dummy());
+  const MFInputSocket &socket = node.input(builder_socket.index());
+  return socket;
+}
+
+inline const MFOutputSocket &MFNetwork::find_dummy_socket(
+    MFBuilderOutputSocket &builder_socket) const
+{
+  const MFDummyNode &node = this->find_dummy_node(builder_socket.node().as_dummy());
+  const MFOutputSocket &socket = node.output(builder_socket.index());
+  return socket;
+}
+
 }  // namespace FN
 
 #endif /* __FN_MULTI_FUNCTION_NETWORK_H__ */
diff --git a/source/blender/functions/intern/multi_function_network.cc b/source/blender/functions/intern/multi_function_network.cc
index ce970ec9f99..9ed3166a35b 100644
--- a/source/blender/functions/intern/multi_function_network.cc
+++ b/source/blender/functions/intern/multi_function_network.cc
@@ -153,6 +153,21 @@ MFBuilderDummyNode &MFNetworkBuilder::add_dummy(StringRef name,
   return node;
 }
 
+MFBuilderDummyNode &MFNetworkBuilder::add_input_dummy(StringRef name, MFBuilderInputSocket &socket)
+{
+  MFBuilderDummyNode &node = this->add_dummy(name, {}, {socket.data_type()}, {}, {"Value"});
+  this->add_link(node.output(0), socket);
+  return node;
+}
+
+MFBuilderDummyNode &MFNetworkBuilder::add_output_dummy(StringRef name,
+                                                       MFBuilderOutputSocket &socket)
+{
+  MFBuilderDummyNode &node = this->add_dummy(name, {socket.data_type()}, {}, {"Value"}, {});
+  this->add_link(socket, node.input(0));
+  return node;
+}
+
 void MFNetworkBuilder::add_link(MFBuilderOutputSocket &from, MFBuilderInputSocket &to)
 {
   BLI_assert(to.origin() == nullptr);



More information about the Bf-blender-cvs mailing list