Revision: 16509
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16509
Author:   jhk
Date:     2008-09-13 23:06:22 +0200 (Sat, 13 Sep 2008)

Log Message:
-----------
Fix for #11740 - Reactor particles do not render in animation.
- Particle data was deleted when the current frame was outside the baked range. 
Reactor particles need this data to store birth and death times.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_particle.h
    trunk/blender/source/blender/blenkernel/intern/particle_system.c

Modified: trunk/blender/source/blender/blenkernel/BKE_particle.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_particle.h      2008-09-13 
19:19:51 UTC (rev 16508)
+++ trunk/blender/source/blender/blenkernel/BKE_particle.h      2008-09-13 
21:06:22 UTC (rev 16509)
@@ -302,6 +302,7 @@
 #define PSYS_RESET_ALL                 1
 #define PSYS_RESET_DEPSGRAPH   2
 #define PSYS_RESET_CHILDREN    3
+#define PSYS_RESET_CACHE_MISS  4
 
 /* ParticleEffectorCache->type */
 #define PSYS_EC_EFFECTOR       1

Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c    
2008-09-13 19:19:51 UTC (rev 16508)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c    
2008-09-13 21:06:22 UTC (rev 16509)
@@ -150,7 +150,15 @@
                                BLI_freelistN(&psys->reactevents);
                }
        }
+       else if(mode == PSYS_RESET_CACHE_MISS) {
+               /* set all particles to be skipped */
+               ParticleData *pa = psys->particles;
+               int p=0;
 
+               for(; p<psys->totpart; p++, pa++)
+                       pa->flag = PARS_NO_DISP;
+       }
+
        /* reset children */
        if(psys->child) {
                MEM_freeN(psys->child);
@@ -4473,7 +4481,7 @@
        if(usecache) {
                /* frame clamping */
                if(framenr < startframe) {
-                       psys_reset(psys, PSYS_RESET_DEPSGRAPH);
+                       psys_reset(psys, PSYS_RESET_CACHE_MISS);
                        psys->cfra = cfra;
                        psys->recalc = 0;
                        return;
@@ -4553,14 +4561,14 @@
                        return;
                }
                else if(ob->id.lib || (cache->flag & PTCACHE_BAKED)) {
-                       psys_reset(psys, PSYS_RESET_DEPSGRAPH);
+                       psys_reset(psys, PSYS_RESET_CACHE_MISS);
                        psys->cfra=cfra;
                        psys->recalc = 0;
                        return;
                }
 
                if(framenr != startframe && framedelta != 1) {
-                       psys_reset(psys, PSYS_RESET_DEPSGRAPH);
+                       psys_reset(psys, PSYS_RESET_CACHE_MISS);
                        psys->cfra = cfra;
                        psys->recalc = 0;
                        return;


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

Reply via email to