Particles
========= - The render and realtime button for the particle system modifier and the enabled button for particles now work seperate again, made a bad design decision to tie them together. Now with only the render button and not realtime enabled it renders. - Fix for bug #7948: particle mode crash while constraining axis. - Fix for bug #7945: crash loading effector groups from an old file. - Fix for bug #7942: crash for reactor particles emitting from particles.
This commit is contained in:
@@ -1508,9 +1508,9 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
|
||||
part=psys->part;
|
||||
pars=psys->particles;
|
||||
|
||||
if(part==NULL || pars==NULL || (psys->flag & PSYS_ENABLED)==0)
|
||||
if(part==NULL || pars==NULL || !psys_check_enabled(ob, psys))
|
||||
return 0;
|
||||
|
||||
|
||||
if(part->draw_as==PART_DRAW_OB || part->draw_as==PART_DRAW_GR || part->draw_as==PART_DRAW_NOT)
|
||||
return 1;
|
||||
|
||||
@@ -3854,7 +3854,6 @@ static void init_render_object_data(Render *re, ObjectRen *obr, int only_verts)
|
||||
psys= psys->next;
|
||||
|
||||
render_new_particle_system(re, obr, psys);
|
||||
psys_free_render_memory(ob, psys);
|
||||
}
|
||||
else {
|
||||
if ELEM(ob->type, OB_FONT, OB_CURVE)
|
||||
@@ -3885,8 +3884,10 @@ static void add_render_object(Render *re, Object *ob, Object *par, int index, in
|
||||
/* so here we only check if the emitter should be rendered */
|
||||
if(ob->particlesystem.first) {
|
||||
show_emitter= 0;
|
||||
for(psys=ob->particlesystem.first; psys; psys=psys->next)
|
||||
for(psys=ob->particlesystem.first; psys; psys=psys->next) {
|
||||
show_emitter += psys->part->draw & PART_DRAW_EMITTER;
|
||||
psys_particles_to_render_backup(ob, psys);
|
||||
}
|
||||
|
||||
/* if no psys has "show emitter" selected don't render emitter */
|
||||
if(show_emitter == 0)
|
||||
@@ -3909,6 +3910,7 @@ static void add_render_object(Render *re, Object *ob, Object *par, int index, in
|
||||
for(psys=ob->particlesystem.first; psys; psys=psys->next, psysindex++) {
|
||||
obr= RE_addRenderObject(re, ob, par, index, psysindex);
|
||||
init_render_object_data(re, obr, only_verts);
|
||||
psys_render_backup_to_particles(ob, psys);
|
||||
|
||||
/* only add instance for objects that have not been used for dupli */
|
||||
if(!(ob->transflag & OB_RENDER_DUPLI))
|
||||
|
||||
@@ -648,6 +648,8 @@ static int strand_test_clip(float winmat[][4], ZSpan *zspan, float *bounds, floa
|
||||
else if(hoco[1] > bounds[3]*hoco[3]) clipflag |= 4;
|
||||
else if(hoco[1]< bounds[2]*hoco[3]) clipflag |= 8;
|
||||
|
||||
clipflag |= testclip(hoco);
|
||||
|
||||
return clipflag;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user