[Bf-blender-cvs] [57f7d83defb] functions: cleanup executing actions for a subset

Jacques Lucke noreply at git.blender.org
Thu Jul 11 17:15:27 CEST 2019


Commit: 57f7d83defb304a47d07498b88753038d6739849
Author: Jacques Lucke
Date:   Thu Jul 11 12:47:05 2019 +0200
Branches: functions
https://developer.blender.org/rB57f7d83defb304a47d07498b88753038d6739849

cleanup executing actions for a subset

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

M	source/blender/simulations/bparticles/action_interface.cpp
M	source/blender/simulations/bparticles/action_interface.hpp
M	source/blender/simulations/bparticles/actions.cpp

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

diff --git a/source/blender/simulations/bparticles/action_interface.cpp b/source/blender/simulations/bparticles/action_interface.cpp
index 66071153399..8a01e3d85d0 100644
--- a/source/blender/simulations/bparticles/action_interface.cpp
+++ b/source/blender/simulations/bparticles/action_interface.cpp
@@ -6,20 +6,6 @@ Action::~Action()
 {
 }
 
-void ActionInterface::execute_action_for_subset(ArrayRef<uint> pindices,
-                                                std::unique_ptr<Action> &action)
-{
-  ParticleSet sub_particles(m_particles.block(), pindices);
-  ActionInterface sub_interface(m_particle_allocator,
-                                m_array_allocator,
-                                sub_particles,
-                                m_attribute_offsets,
-                                m_current_times,
-                                m_remaining_times,
-                                m_event_info);
-  action->execute(sub_interface);
-}
-
 ParticleFunctionCaller ParticleFunction::get_caller(AttributeArrays attributes,
                                                     EventInfo &event_info)
 {
diff --git a/source/blender/simulations/bparticles/action_interface.hpp b/source/blender/simulations/bparticles/action_interface.hpp
index 881ceae018f..fd1ae94e69c 100644
--- a/source/blender/simulations/bparticles/action_interface.hpp
+++ b/source/blender/simulations/bparticles/action_interface.hpp
@@ -87,6 +87,9 @@ class ActionInterface {
   static void RunFromEvent(std::unique_ptr<Action> &action,
                            EventExecuteInterface &event_interface,
                            EventInfo *event_info = nullptr);
+  static void RunForSubset(std::unique_ptr<Action> &action,
+                           ArrayRef<uint> pindices,
+                           ActionInterface &action_interface);
 
   EventInfo &event_info();
 
@@ -95,7 +98,6 @@ class ActionInterface {
   float remaining_time_in_step(uint pindex);
   ArrayRef<float> current_times();
   void kill(ArrayRef<uint> pindices);
-  void execute_action_for_subset(ArrayRef<uint> pindices, std::unique_ptr<Action> &action);
   ParticleAllocator &particle_allocator();
   ArrayAllocator &array_allocator();
 };
@@ -177,6 +179,20 @@ inline void ActionInterface::RunFromEvent(std::unique_ptr<Action> &action,
   action->execute(action_interface);
 }
 
+inline void ActionInterface::RunForSubset(std::unique_ptr<Action> &action,
+                                          ArrayRef<uint> pindices,
+                                          ActionInterface &action_interface)
+{
+  ActionInterface sub_interface(action_interface.m_particle_allocator,
+                                action_interface.m_array_allocator,
+                                ParticleSet(action_interface.m_particles.block(), pindices),
+                                action_interface.m_attribute_offsets,
+                                action_interface.m_current_times,
+                                action_interface.m_remaining_times,
+                                action_interface.m_event_info);
+  action->execute(sub_interface);
+}
+
 inline EventInfo &ActionInterface::event_info()
 {
   return m_event_info;
diff --git a/source/blender/simulations/bparticles/actions.cpp b/source/blender/simulations/bparticles/actions.cpp
index 8cc736687da..77fa1c1a4d7 100644
--- a/source/blender/simulations/bparticles/actions.cpp
+++ b/source/blender/simulations/bparticles/actions.cpp
@@ -159,8 +159,8 @@ class ConditionAction : public Action {
       }
     }
 
-    interface.execute_action_for_subset(true_pindices, m_true_action);
-    interface.execute_action_for_subset(false_pindices, m_false_action);
+    ActionInterface::RunForSubset(m_true_action, true_pindices, interface);
+    ActionInterface::RunForSubset(m_false_action, false_pindices, interface);
   }
 
   void compute_conditions(ActionInterface &interface, ArrayRef<bool> r_conditions)



More information about the Bf-blender-cvs mailing list