[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