From 7aa22a24a7fea3766cab4e59f46bbca8064ded8d Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 18 Jul 2019 12:08:36 +0200 Subject: initial forwarding listeners + particle trail node Still looking for a better name instead of Forwarding Listeners --- source/blender/simulations/bparticles/forces.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'source/blender/simulations/bparticles/forces.cpp') 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 r_force) } } +void TrailListener::listen(ForwardingListenerInterface &interface) +{ + ParticleSet particles = interface.particles(); + auto positions = particles.attributes().get_float3("Position"); + + SmallVector new_positions; + SmallVector 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 -- cgit v1.2.3