[Bf-blender-cvs] [4ed19b6b1e2] functions: cleanup particle function builder

Jacques Lucke noreply at git.blender.org
Mon Jul 29 17:57:18 CEST 2019


Commit: 4ed19b6b1e25ea865d9abe144616cd763c588a2c
Author: Jacques Lucke
Date:   Mon Jul 29 12:16:55 2019 +0200
Branches: functions
https://developer.blender.org/rB4ed19b6b1e25ea865d9abe144616cd763c588a2c

cleanup particle function builder

===================================================================

M	source/blender/simulations/bparticles/particle_function_builder.cpp
M	source/blender/simulations/bparticles/particle_function_builder.hpp

===================================================================

diff --git a/source/blender/simulations/bparticles/particle_function_builder.cpp b/source/blender/simulations/bparticles/particle_function_builder.cpp
index d0b80818857..6345cbefe79 100644
--- a/source/blender/simulations/bparticles/particle_function_builder.cpp
+++ b/source/blender/simulations/bparticles/particle_function_builder.cpp
@@ -29,7 +29,7 @@ struct SocketDependencies {
 
 static SocketDependencies find_particle_dependencies(VTreeDataGraph &data_graph,
                                                      ArrayRef<DFGraphSocket> sockets,
-                                                     ArrayRef<bool> r_depends_on_particle)
+                                                     ArrayRef<bool> r_depends_on_particle_flags)
 {
   SocketDependencies combined_dependencies;
 
@@ -37,7 +37,7 @@ static SocketDependencies find_particle_dependencies(VTreeDataGraph &data_graph,
     DFGraphSocket socket = sockets[i];
     auto dependencies = data_graph.find_placeholder_dependencies(socket);
     bool has_dependency = dependencies.size() > 0;
-    r_depends_on_particle[i] = has_dependency;
+    r_depends_on_particle_flags[i] = has_dependency;
 
     combined_dependencies.sockets.add_multiple(dependencies.sockets);
     combined_dependencies.vsockets.add_multiple(dependencies.vsockets);
@@ -94,18 +94,17 @@ static SharedFunction create_function__without_deps(SharedDataFlowGraph &graph,
   return fn;
 }
 
-ValueOrError<ParticleFunction> create_particle_function(VirtualNode *main_vnode,
-                                                        VTreeDataGraph &data_graph)
+static ValueOrError<ParticleFunction> create_particle_function_from_sockets(
+    SharedDataFlowGraph &graph,
+    StringRef name,
+    ArrayRef<DFGraphSocket> sockets_to_compute,
+    ArrayRef<bool> depends_on_particle_flags,
+    SocketDependencies &dependencies)
 {
-  Vector<DFGraphSocket> sockets_to_compute = find_input_data_sockets(main_vnode, data_graph);
-  Vector<bool> parameter_depends_on_particle(sockets_to_compute.size());
-  auto dependencies = find_particle_dependencies(
-      data_graph, sockets_to_compute, parameter_depends_on_particle);
-
   Vector<DFGraphSocket> sockets_with_deps;
   Vector<DFGraphSocket> sockets_without_deps;
   for (uint i = 0; i < sockets_to_compute.size(); i++) {
-    if (parameter_depends_on_particle[i]) {
+    if (depends_on_particle_flags[i]) {
       sockets_with_deps.append(sockets_to_compute[i]);
     }
     else {
@@ -114,12 +113,26 @@ ValueOrError<ParticleFunction> create_particle_function(VirtualNode *main_vnode,
   }
 
   SharedFunction fn_without_deps = create_function__without_deps(
-      data_graph.graph(), main_vnode->name(), sockets_without_deps);
+      graph, name, sockets_without_deps);
   SharedFunction fn_with_deps = create_function__with_deps(
-      data_graph.graph(), main_vnode->name(), sockets_with_deps, dependencies);
+      graph, name, sockets_with_deps, dependencies);
+
+  return ParticleFunction(fn_without_deps, fn_with_deps, depends_on_particle_flags);
+}
+
+ValueOrError<ParticleFunction> create_particle_function(VirtualNode *vnode,
+                                                        VTreeDataGraph &data_graph)
+{
+  Vector<DFGraphSocket> sockets_to_compute = find_input_data_sockets(vnode, data_graph);
+  Vector<bool> depends_on_particle_flags(sockets_to_compute.size());
+  auto dependencies = find_particle_dependencies(
+      data_graph, sockets_to_compute, depends_on_particle_flags);
 
-  ParticleFunction particle_function(fn_without_deps, fn_with_deps, parameter_depends_on_particle);
-  return particle_function;
+  return create_particle_function_from_sockets(data_graph.graph(),
+                                               vnode->name(),
+                                               sockets_to_compute,
+                                               depends_on_particle_flags,
+                                               dependencies);
 }
 
 }  // namespace BParticles
diff --git a/source/blender/simulations/bparticles/particle_function_builder.hpp b/source/blender/simulations/bparticles/particle_function_builder.hpp
index 18ad352c532..c0a34c88062 100644
--- a/source/blender/simulations/bparticles/particle_function_builder.hpp
+++ b/source/blender/simulations/bparticles/particle_function_builder.hpp
@@ -14,7 +14,7 @@ using FN::DataFlowNodes::VTreeDataGraph;
 
 Vector<DFGraphSocket> find_input_data_sockets(VirtualNode *vnode, VTreeDataGraph &data_graph);
 
-ValueOrError<ParticleFunction> create_particle_function(VirtualNode *main_vnode,
+ValueOrError<ParticleFunction> create_particle_function(VirtualNode *vnode,
                                                         VTreeDataGraph &data_graph);
 
 }  // namespace BParticles



More information about the Bf-blender-cvs mailing list