diff options
author | Jacques Lucke <jacques@blender.org> | 2020-07-07 19:45:34 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-07-07 19:45:34 +0300 |
commit | 67042aa6a10bc2523ca0534f9ae4dbd276f6a59c (patch) | |
tree | fe464ee5cb422d8c1041e109bd028a909fe77727 /source/blender/functions/intern | |
parent | adfae89f96ea088d18b0d6f0e775c48b049a332a (diff) |
Functions: extend multi-function network api
Diffstat (limited to 'source/blender/functions/intern')
-rw-r--r-- | source/blender/functions/intern/multi_function_network.cc | 16 | ||||
-rw-r--r-- | source/blender/functions/intern/multi_function_network_evaluation.cc | 8 |
2 files changed, 19 insertions, 5 deletions
diff --git a/source/blender/functions/intern/multi_function_network.cc b/source/blender/functions/intern/multi_function_network.cc index 5df70d92a4e..fd141a48bea 100644 --- a/source/blender/functions/intern/multi_function_network.cc +++ b/source/blender/functions/intern/multi_function_network.cc @@ -230,7 +230,14 @@ void MFNetwork::remove(MFNode &node) node_or_null_by_id_[node.id_] = nullptr; } -std::string MFNetwork::to_dot() const +void MFNetwork::remove(Span<MFNode *> nodes) +{ + for (MFNode *node : nodes) { + this->remove(*node); + } +} + +std::string MFNetwork::to_dot(Span<const MFNode *> marked_nodes) const { dot::DirectedGraph digraph; digraph.set_rankdir(dot::Attr_rankdir::LeftToRight); @@ -256,6 +263,13 @@ std::string MFNetwork::to_dot() const dot_nodes.add_new(node, dot_node_ref); } + for (const MFDummyNode *node : dummy_nodes_) { + dot_nodes.lookup(node).node().set_background_color("#77EE77"); + } + for (const MFNode *node : marked_nodes) { + dot_nodes.lookup(node).node().set_background_color("#7777EE"); + } + for (const MFNode *to_node : all_nodes) { dot::NodeWithSocketsRef to_dot_node = dot_nodes.lookup(to_node); diff --git a/source/blender/functions/intern/multi_function_network_evaluation.cc b/source/blender/functions/intern/multi_function_network_evaluation.cc index 08a254dc300..36d363dc56c 100644 --- a/source/blender/functions/intern/multi_function_network_evaluation.cc +++ b/source/blender/functions/intern/multi_function_network_evaluation.cc @@ -58,7 +58,7 @@ class MFNetworkEvaluationStorage { uint min_array_size_; public: - MFNetworkEvaluationStorage(IndexMask mask, uint max_socket_id); + MFNetworkEvaluationStorage(IndexMask mask, uint socket_id_amount); ~MFNetworkEvaluationStorage(); /* Add the values that have been provided by the caller of the multi-function network. */ @@ -142,7 +142,7 @@ void MFNetworkEvaluator::call(IndexMask mask, MFParams params, MFContext context } const MFNetwork &network = outputs_[0]->node().network(); - Storage storage(mask, network.max_socket_id()); + Storage storage(mask, network.socket_id_amount()); Vector<const MFInputSocket *> outputs_to_initialize_in_the_end; @@ -507,9 +507,9 @@ struct OwnVectorValue : public Value { /** \name Storage methods * \{ */ -MFNetworkEvaluationStorage::MFNetworkEvaluationStorage(IndexMask mask, uint max_socket_id) +MFNetworkEvaluationStorage::MFNetworkEvaluationStorage(IndexMask mask, uint socket_id_amount) : mask_(mask), - value_per_output_id_(max_socket_id + 1, nullptr), + value_per_output_id_(socket_id_amount, nullptr), min_array_size_(mask.min_array_size()) { } |