Revision: 16255
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16255
Author:   genscher
Date:     2008-08-26 03:07:18 +0200 (Tue, 26 Aug 2008)

Log Message:
-----------
Particle System: a) Fixing visibility bug when a duplipart-system was deleted 
it didn't show up in during render any more, b) fixing possible crash during 
render

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/particle.c
    trunk/blender/source/blender/render/intern/source/convertblender.c

Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c   2008-08-25 
21:41:50 UTC (rev 16254)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c   2008-08-26 
01:07:18 UTC (rev 16255)
@@ -379,8 +379,11 @@
 }
 /* free everything */
 void psys_free(Object *ob, ParticleSystem * psys)
-{
+{      
        if(psys){
+               int nr = 0;
+               ParticleSystem * tpsys;
+               
                if(ob->particlesystem.first == NULL && G.f & G_PARTICLEEDIT)
                        G.f &= ~G_PARTICLEEDIT;
 
@@ -406,6 +409,21 @@
 
                if(psys->effectors.first)
                        psys_end_effectors(psys);
+               
+               // check if we are last non-visible particle system
+               for(tpsys=ob->particlesystem.first; tpsys; tpsys=tpsys->next){
+                       if(tpsys->part)
+                       {
+                               
if(ELEM(tpsys->part->draw_as,PART_DRAW_OB,PART_DRAW_GR))
+                               {
+                                       nr++;
+                                       break;
+                               }
+                       }
+               }
+               // clear do-not-draw-flag
+               if(!nr)
+                       ob->transflag &= ~OB_DUPLIPARTS;
 
                if(psys->part){
                        psys->part->id.us--;            
@@ -417,7 +435,7 @@
 
                if(psys->pointcache)
                        BKE_ptcache_free(psys->pointcache);
-
+               
                MEM_freeN(psys);
        }
 }

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c  
2008-08-25 21:41:50 UTC (rev 16254)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c  
2008-08-26 01:07:18 UTC (rev 16255)
@@ -1565,7 +1565,7 @@
        float hasize, pa_size, pa_time, r_tilt, 
cfra=bsystem_time(ob,(float)CFRA,0.0);
        float adapt_angle=0.0, adapt_pix=0.0, random, simplify[2];
        int i, a, k, max_k=0, totpart, totuv=0, totcol=0, override_uv=-1, 
dosimplify = 0, dosurfacecache = 0;
-       int path_possible=0, keys_possible=0, baked_keys=0, 
totchild=psys->totchild;
+       int path_possible=0, keys_possible=0, baked_keys=0, totchild=0;
        int seed, path_nbr=0, path=0, orco1=0, adapt=0, uv[3]={0,0,0}, num;
        int totface, *origindex = 0;
        char **uv_name=0;
@@ -1573,6 +1573,8 @@
 /* 1. check that everything is ok & updated */
        if(psys==NULL)
                return 0;
+       
+       totchild=psys->totchild;
 
        part=psys->part;
        pars=psys->particles;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to