[Bf-blender-cvs] [6e83213a5f4] functions: utility to iterate over trivial particle indices
Jacques Lucke
noreply at git.blender.org
Mon Jul 29 17:57:07 CEST 2019
Commit: 6e83213a5f405ee35fdb25a9c6fefc6dcbb16fb0
Author: Jacques Lucke
Date: Mon Jul 29 10:06:48 2019 +0200
Branches: functions
https://developer.blender.org/rB6e83213a5f405ee35fdb25a9c6fefc6dcbb16fb0
utility to iterate over trivial particle indices
===================================================================
M source/blender/simulations/bparticles/particle_set.hpp
M source/blender/simulations/bparticles/simulate.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/particle_set.hpp b/source/blender/simulations/bparticles/particle_set.hpp
index 061e1eeab9a..01b02006a16 100644
--- a/source/blender/simulations/bparticles/particle_set.hpp
+++ b/source/blender/simulations/bparticles/particle_set.hpp
@@ -45,6 +45,8 @@ struct ParticleSet {
* Returns true when pindices()[i] == i for all i, otherwise false.
*/
bool pindices_are_trivial();
+
+ Range<uint> trivial_pindices();
};
class ParticleSets {
@@ -134,6 +136,17 @@ inline bool ParticleSet::pindices_are_trivial()
}
}
+inline Range<uint> ParticleSet::trivial_pindices()
+{
+ BLI_assert(this->pindices_are_trivial());
+ if (m_pindices.size() == 0) {
+ return Range<uint>(0, 0);
+ }
+ else {
+ return Range<uint>(m_pindices.first(), m_pindices.last() + 1);
+ }
+}
+
/* ParticleSets inline functions
********************************************/
diff --git a/source/blender/simulations/bparticles/simulate.cpp b/source/blender/simulations/bparticles/simulate.cpp
index 368dd881e77..d04ceae3eb6 100644
--- a/source/blender/simulations/bparticles/simulate.cpp
+++ b/source/blender/simulations/bparticles/simulate.cpp
@@ -82,7 +82,7 @@ BLI_NOINLINE static void forward_particles_to_next_event_or_end(
auto offsets = attribute_offsets.get_float3(attribute_index);
if (particles.pindices_are_trivial()) {
- for (uint pindex = 0; pindex < particles.size(); pindex++) {
+ for (uint pindex : particles.trivial_pindices()) {
float time_factor = time_factors_to_next_event[pindex];
values[pindex] += time_factor * offsets[pindex];
}
More information about the Bf-blender-cvs
mailing list