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

Reply via email to