Commit: 8ee05156e64bbeb28c5607e0ecd35ae096a0e3ce
Author: Jacques Lucke
Date: Fri Jun 21 16:21:25 2019 +0200
Branches: functions
https://developer.blender.org/rB8ee05156e64bbeb28c5607e0ecd35ae096a0e3ce
simulate all particle types with description
===================================================================
M source/blender/simulations/bparticles/core.cpp
M source/blender/simulations/bparticles/simulate.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/core.cpp
b/source/blender/simulations/bparticles/core.cpp
index b6d46be5950..4febe4bf7b7 100644
--- a/source/blender/simulations/bparticles/core.cpp
+++ b/source/blender/simulations/bparticles/core.cpp
@@ -32,6 +32,9 @@ StepDescription::~StepDescription()
ParticlesState::~ParticlesState()
{
+ for (ParticlesContainer *container : m_particle_containers.values()) {
+ delete container;
+ }
}
} // namespace BParticles
diff --git a/source/blender/simulations/bparticles/simulate.cpp
b/source/blender/simulations/bparticles/simulate.cpp
index 210129845ca..f82542ce1e4 100644
--- a/source/blender/simulations/bparticles/simulate.cpp
+++ b/source/blender/simulations/bparticles/simulate.cpp
@@ -437,14 +437,24 @@ void simulate_step(ParticlesState &state, StepDescription
&description)
TimeSpan time_span{state.m_current_time, description.step_duration()};
state.m_current_time = time_span.end();
- ParticlesContainer &particles = *state.particle_containers().lookup(0);
- ParticleType &type = description.particle_type(0);
-
- step_individual_particles(
- particles.active_blocks().to_small_vector(), time_span,
type.influences());
- emit_new_particles_from_emitters(particles, type.emitters(),
type.influences(), time_span);
- delete_tagged_particles(particles.active_blocks().to_small_vector());
- compress_all_blocks(particles);
+ auto &containers = state.particle_containers();
+
+ for (uint type_id : description.particle_type_ids()) {
+ if (!containers.contains(type_id)) {
+ /* TODO: create container */
+ }
+ }
+
+ for (uint type_id : description.particle_type_ids()) {
+ ParticleType &type = description.particle_type(type_id);
+ ParticlesContainer &container = *containers.lookup(type_id);
+
+ step_individual_particles(
+ container.active_blocks().to_small_vector(), time_span,
type.influences());
+ emit_new_particles_from_emitters(container, type.emitters(),
type.influences(), time_span);
+ delete_tagged_particles(container.active_blocks().to_small_vector());
+ compress_all_blocks(container);
+ }
}
} // namespace BParticles
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs