[Bf-blender-cvs] [03f51bf4e15] functions: add utilities to MFNetworkBuilder

Jacques Lucke noreply at git.blender.org
Sat Jan 18 20:18:02 CET 2020


Commit: 03f51bf4e15416d119dac676e780d062cdfbe0df
Author: Jacques Lucke
Date:   Sat Jan 18 19:59:01 2020 +0100
Branches: functions
https://developer.blender.org/rB03f51bf4e15416d119dac676e780d062cdfbe0df

add utilities to MFNetworkBuilder

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

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 2ab363cceda..fd3e21b6a58 100644
--- a/source/blender/functions/FN_multi_function_network.h
+++ b/source/blender/functions/FN_multi_function_network.h
@@ -161,6 +161,7 @@ class MFNetworkBuilder : BLI::NonCopyable, BLI::NonMovable {
   void remove_link(MFBuilderOutputSocket &from, MFBuilderInputSocket &to);
   void remove_node(MFBuilderNode &node);
   void remove_nodes(ArrayRef<MFBuilderNode *> nodes);
+  void relink_origin(MFBuilderOutputSocket &new_from, MFBuilderInputSocket &to);
 
   Array<bool> find_nodes_to_the_right_of__inclusive__mask(ArrayRef<MFBuilderNode *> nodes);
   Array<bool> find_nodes_to_the_left_of__inclusive__mask(ArrayRef<MFBuilderNode *> nodes);
@@ -205,6 +206,16 @@ class MFNetworkBuilder : BLI::NonCopyable, BLI::NonMovable {
     return this->node_by_id(id).as_dummy();
   }
 
+  uint socket_id_amount()
+  {
+    return m_socket_or_null_by_id.size();
+  }
+
+  bool socket_id_is_valid(uint id) const
+  {
+    return m_socket_or_null_by_id[id] != nullptr;
+  }
+
   MFBuilderSocket &socket_by_id(uint id)
   {
     BLI_assert(m_socket_or_null_by_id[id] != nullptr);
diff --git a/source/blender/functions/intern/multi_function_network.cc b/source/blender/functions/intern/multi_function_network.cc
index 90fba815835..b1086681265 100644
--- a/source/blender/functions/intern/multi_function_network.cc
+++ b/source/blender/functions/intern/multi_function_network.cc
@@ -169,6 +169,15 @@ void MFNetworkBuilder::remove_link(MFBuilderOutputSocket &from, MFBuilderInputSo
   to.m_origin = nullptr;
 }
 
+void MFNetworkBuilder::relink_origin(MFBuilderOutputSocket &new_from, MFBuilderInputSocket &to)
+{
+  BLI_assert(to.m_origin != nullptr);
+  BLI_assert(to.m_origin != &new_from);
+  to.m_origin->m_targets.remove_first_occurrence_and_reorder(&to);
+  new_from.m_targets.append(&to);
+  to.m_origin = &new_from;
+}
+
 void MFNetworkBuilder::remove_node(MFBuilderNode &node)
 {
   for (MFBuilderInputSocket *input_socket : node.inputs()) {



More information about the Bf-blender-cvs mailing list