[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