Commit: 4f282b4216e6161648da8b6ceddd64491fe6efe7
Author: Jacques Lucke
Date: Mon Aug 5 13:13:09 2019 +0200
Branches: functions
https://developer.blender.org/rB4f282b4216e6161648da8b6ceddd64491fe6efe7
Allow passing unlinked input handlers to graph generation
===================================================================
M source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
M source/blender/functions/frontends/data_flow_nodes/graph_generation.hpp
===================================================================
diff --git
a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
index 9358a167d09..ab42daa68f1 100644
--- a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
@@ -48,18 +48,18 @@ static bool insert_links(VTreeDataGraphBuilder &builder)
return true;
}
-static bool insert_unlinked_inputs(VTreeDataGraphBuilder &builder)
+static bool insert_unlinked_inputs(VTreeDataGraphBuilder &builder,
+ UnlinkedInputsGrouper &inputs_grouper,
+ UnlinkedInputsInserter &inputs_inserter)
{
- GroupByNodeUsage grouper;
MultiVector<VirtualSocket *> groups;
- grouper.group(builder, groups);
+ inputs_grouper.group(builder, groups);
- ConstantInputsHandler input_inserter;
for (uint i = 0; i < groups.size(); i++) {
ArrayRef<VirtualSocket *> unlinked_inputs = groups[i];
Vector<BuilderOutputSocket *> new_origins(unlinked_inputs.size());
- input_inserter.insert(builder, unlinked_inputs, new_origins);
+ inputs_inserter.insert(builder, unlinked_inputs, new_origins);
for (uint i = 0; i < unlinked_inputs.size(); i++) {
builder.insert_link(new_origins[i],
builder.lookup_input_socket(unlinked_inputs[i]));
@@ -70,6 +70,15 @@ static bool insert_unlinked_inputs(VTreeDataGraphBuilder
&builder)
}
ValueOrError<VTreeDataGraph> generate_graph(VirtualNodeTree &vtree)
+{
+ GroupByNodeUsage inputs_grouper;
+ ConstantInputsHandler inputs_inserter;
+ return generate_graph(vtree, inputs_grouper, inputs_inserter);
+}
+
+ValueOrError<VTreeDataGraph> generate_graph(VirtualNodeTree &vtree,
+ UnlinkedInputsGrouper
&inputs_grouper,
+ UnlinkedInputsInserter
&inputs_inserter)
{
VTreeDataGraphBuilder builder(vtree);
@@ -81,7 +90,7 @@ ValueOrError<VTreeDataGraph> generate_graph(VirtualNodeTree
&vtree)
return BLI_ERROR_CREATE("error inserting links");
}
- if (!insert_unlinked_inputs(builder)) {
+ if (!insert_unlinked_inputs(builder, inputs_grouper, inputs_inserter)) {
return BLI_ERROR_CREATE("error inserting unlinked inputs");
}
diff --git
a/source/blender/functions/frontends/data_flow_nodes/graph_generation.hpp
b/source/blender/functions/frontends/data_flow_nodes/graph_generation.hpp
index c64c72b5487..16f0e5d21cc 100644
--- a/source/blender/functions/frontends/data_flow_nodes/graph_generation.hpp
+++ b/source/blender/functions/frontends/data_flow_nodes/graph_generation.hpp
@@ -9,6 +9,11 @@ namespace DataFlowNodes {
using BLI::MultiVector;
+class UnlinkedInputsGrouper {
+ public:
+ virtual void group(VTreeDataGraphBuilder &builder, MultiVector<VirtualSocket
*> &r_groups) = 0;
+};
+
class UnlinkedInputsInserter {
public:
virtual void insert(VTreeDataGraphBuilder &builder,
@@ -16,12 +21,11 @@ class UnlinkedInputsInserter {
ArrayRef<BuilderOutputSocket *> r_new_origins) = 0;
};
-class UnlinkedInputsGrouper {
- public:
- virtual void group(VTreeDataGraphBuilder &builder, MultiVector<VirtualSocket
*> &r_groups) = 0;
-};
-
ValueOrError<VTreeDataGraph> generate_graph(VirtualNodeTree &vtree);
+ValueOrError<VTreeDataGraph> generate_graph(VirtualNodeTree &vtree,
+ UnlinkedInputsGrouper
&inputs_grouper,
+ UnlinkedInputsInserter
&inputs_inserter);
+
} // namespace DataFlowNodes
} // namespace FN
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs