Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <mail@jlucke.com>2019-07-18 13:08:36 +0300
committerJacques Lucke <mail@jlucke.com>2019-07-18 13:08:36 +0300
commit7aa22a24a7fea3766cab4e59f46bbca8064ded8d (patch)
tree06b302fda347a6dceba0a5df510340ae1ddea4bb /source/blender/simulations/bparticles/forces.cpp
parent4672d7aa83c5e6b2847c92d6c1be20e251bfa33a (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.cpp18
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