Skip to content
Snippets Groups Projects
Commit cb1777d3 authored by Sergey Sharybin's avatar Sergey Sharybin
Browse files

Fix T45253: Particle emitter volume mode and grid mode broken in 2.75.x

This is a regression since dced56f0 and root of the issue comes to the fact
that grid distribution sets UNEXIST flag during distribution, which is then
being reset in initialize_all_particles().

This commit solves the issue, but it's not really nice and some smart guy
might want to revisit it.
parent a8355471
No related branches found
Tags
No related merge requests found
......@@ -558,10 +558,24 @@ void initialize_particle(ParticleSimulationData *sim, ParticleData *pa)
static void initialize_all_particles(ParticleSimulationData *sim)
{
ParticleSystem *psys = sim->psys;
ParticleSettings *part = psys->part;
/* Grid distributionsets UNEXIST flag, need to take care of
* it here because later this flag is being reset.
*
* We can't do it for any distribution, because it'll then
* conflict with texture influence, which does not free
* unexisting particles and only sets flag.
*
* It's not so bad, because only grid distribution sets
* UNEXIST flag.
*/
const bool emit_from_volume_grid = (part->distr == PART_DISTR_GRID) &&
(!ELEM(part->from, PART_FROM_VERT, PART_FROM_CHILD));
PARTICLE_P;
LOOP_PARTICLES {
initialize_particle(sim, pa);
if (!(emit_from_volume_grid && (pa->flag & PARS_UNEXIST) != 0)) {
initialize_particle(sim, pa);
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment