[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16509] trunk/blender/source/blender/ blenkernel: Fix for #11740 - Reactor particles do not render in animation.

Janne Karhu jhkarh at utu.fi
Sat Sep 13 23:07:02 CEST 2008


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;





More information about the Bf-blender-cvs mailing list