[Bf-blender-cvs] [f58f26a35d2] functions: cleanup vertex weight input provider

Jacques Lucke noreply at git.blender.org
Thu Sep 5 19:11:25 CEST 2019


Commit: f58f26a35d2556cf72dec9e9357cdab72f3b21fb
Author: Jacques Lucke
Date:   Thu Sep 5 11:00:50 2019 +0200
Branches: functions
https://developer.blender.org/rBf58f26a35d2556cf72dec9e9357cdab72f3b21fb

cleanup vertex weight input provider

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

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

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

diff --git a/source/blender/simulations/bparticles/particle_function_input_providers.cpp b/source/blender/simulations/bparticles/particle_function_input_providers.cpp
index 157b87ae51d..d0fef63af2e 100644
--- a/source/blender/simulations/bparticles/particle_function_input_providers.cpp
+++ b/source/blender/simulations/bparticles/particle_function_input_providers.cpp
@@ -7,7 +7,6 @@
 #include "BKE_deform.h"
 
 #include "particle_function_input_providers.hpp"
-#include "action_contexts.hpp"
 
 namespace BParticles {
 
@@ -139,9 +138,28 @@ Optional<ParticleFunctionInputArray> SurfaceImageInputProvider::get(
   return ParticleFunctionInputArray(ArrayRef<rgba_f>(colors), true);
 }
 
-static BLI_NOINLINE Optional<ParticleFunctionInputArray> compute_vertex_weights(
+Optional<ParticleFunctionInputArray> VertexWeightInputProvider::get(
+    InputProviderInterface &interface)
+{
+  ActionContext *action_context = interface.action_context();
+
+  if (dynamic_cast<MeshSurfaceContext *>(action_context)) {
+    auto *surface_info = dynamic_cast<MeshSurfaceContext *>(action_context);
+    return this->compute_weights(
+        interface, surface_info, Range<uint>(0, interface.attributes().size()).as_array_ref());
+  }
+  else if (dynamic_cast<SourceParticleActionContext *>(action_context)) {
+    auto *source_info = dynamic_cast<SourceParticleActionContext *>(action_context);
+    auto *surface_info = dynamic_cast<MeshSurfaceContext *>(source_info->source_context());
+    return this->compute_weights(interface, surface_info, source_info->source_indices());
+  }
+  else {
+    return {};
+  }
+}
+
+BLI_NOINLINE Optional<ParticleFunctionInputArray> VertexWeightInputProvider::compute_weights(
     InputProviderInterface &interface,
-    StringRef group_name,
     MeshSurfaceContext *surface_info,
     ArrayRef<uint> surface_info_mapping)
 {
@@ -149,7 +167,7 @@ static BLI_NOINLINE Optional<ParticleFunctionInputArray> compute_vertex_weights(
   Mesh *mesh = (Mesh *)object->data;
   MDeformVert *vertex_weights = mesh->dvert;
 
-  int group_index = defgroup_name_index(object, group_name.data());
+  int group_index = defgroup_name_index(object, m_group_name.data());
   if (group_index == -1 || vertex_weights == nullptr) {
     return {};
   }
@@ -183,27 +201,4 @@ static BLI_NOINLINE Optional<ParticleFunctionInputArray> compute_vertex_weights(
   return ParticleFunctionInputArray(ArrayRef<float>(weights), true);
 }
 
-Optional<ParticleFunctionInputArray> VertexWeightInputProvider::get(
-    InputProviderInterface &interface)
-{
-  ActionContext *action_context = interface.action_context();
-
-  if (dynamic_cast<MeshSurfaceContext *>(action_context)) {
-    auto *surface_info = dynamic_cast<MeshSurfaceContext *>(action_context);
-    return compute_vertex_weights(interface,
-                                  m_group_name,
-                                  surface_info,
-                                  Range<uint>(0, interface.attributes().size()).as_array_ref());
-  }
-  else if (dynamic_cast<SourceParticleActionContext *>(action_context)) {
-    auto *source_info = dynamic_cast<SourceParticleActionContext *>(action_context);
-    auto *surface_info = dynamic_cast<MeshSurfaceContext *>(source_info->source_context());
-    return compute_vertex_weights(
-        interface, m_group_name, surface_info, source_info->source_indices());
-  }
-  else {
-    return {};
-  }
-}
-
 }  // namespace BParticles
diff --git a/source/blender/simulations/bparticles/particle_function_input_providers.hpp b/source/blender/simulations/bparticles/particle_function_input_providers.hpp
index f8f1dff775b..487076a7a33 100644
--- a/source/blender/simulations/bparticles/particle_function_input_providers.hpp
+++ b/source/blender/simulations/bparticles/particle_function_input_providers.hpp
@@ -4,6 +4,7 @@
 #include "IMB_imbuf_types.h"
 
 #include "particle_function.hpp"
+#include "action_contexts.hpp"
 
 namespace BParticles {
 
@@ -55,6 +56,11 @@ class VertexWeightInputProvider : public ParticleFunctionInputProvider {
   }
 
   Optional<ParticleFunctionInputArray> get(InputProviderInterface &interface) override;
+
+ private:
+  Optional<ParticleFunctionInputArray> compute_weights(InputProviderInterface &interface,
+                                                       MeshSurfaceContext *source_info,
+                                                       ArrayRef<uint> surface_info_mapping);
 };
 
 }  // namespace BParticles



More information about the Bf-blender-cvs mailing list