diff options
author | Jacques Lucke <mail@jlucke.com> | 2019-07-18 13:08:36 +0300 |
---|---|---|
committer | Jacques Lucke <mail@jlucke.com> | 2019-07-18 13:08:36 +0300 |
commit | 7aa22a24a7fea3766cab4e59f46bbca8064ded8d (patch) | |
tree | 06b302fda347a6dceba0a5df510340ae1ddea4bb /source/blender/simulations/bparticles/forces.cpp | |
parent | 4672d7aa83c5e6b2847c92d6c1be20e251bfa33a (diff) |
initial forwarding listeners + particle trail node
Still looking for a better name instead of Forwarding Listeners
Diffstat (limited to 'source/blender/simulations/bparticles/forces.cpp')
-rw-r--r-- | source/blender/simulations/bparticles/forces.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/simulations/bparticles/forces.cpp b/source/blender/simulations/bparticles/forces.cpp index 28d00e9355d..7e39e512cd8 100644 --- a/source/blender/simulations/bparticles/forces.cpp +++ b/source/blender/simulations/bparticles/forces.cpp @@ -44,4 +44,22 @@ void TurbulenceForce::add_force(ParticlesBlock &block, ArrayRef<float3> r_force) } } +void TrailListener::listen(ForwardingListenerInterface &interface) +{ + ParticleSet particles = interface.particles(); + auto positions = particles.attributes().get_float3("Position"); + + SmallVector<float3> new_positions; + SmallVector<float> new_birth_times; + for (uint pindex : particles.pindices()) { + new_positions.append(positions[pindex]); + new_birth_times.append(interface.time_span(pindex).start()); + } + + auto new_particles = interface.particle_allocator().request(m_particle_type_name, + new_positions.size()); + new_particles.set_float3("Position", new_positions); + new_particles.set_float("Birth Time", new_birth_times); +} + } // namespace BParticles |