[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