[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34158] trunk/blender/source/blender: Bug fix: unbaked particle cache was cleared from current frame onwards on file load .

Janne Karhu jhkarh at gmail.com
Fri Jan 7 18:27:28 CET 2011


Revision: 34158
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34158
Author:   jhk
Date:     2011-01-07 17:27:27 +0000 (Fri, 07 Jan 2011)
Log Message:
-----------
Bug fix: unbaked particle cache was cleared from current frame onwards on file load.

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesdna/DNA_modifier_types.h
    trunk/blender/source/blender/modifiers/intern/MOD_particlesystem.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2011-01-07 16:55:56 UTC (rev 34157)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2011-01-07 17:27:27 UTC (rev 34158)
@@ -3927,9 +3927,10 @@
 		} else if (md->type==eModifierType_ParticleSystem) {
 			ParticleSystemModifierData *psmd = (ParticleSystemModifierData*) md;
 
-			psmd->dm=0;
-			psmd->psys=newdataadr(fd, psmd->psys);
+			psmd->dm= NULL;
+			psmd->psys= newdataadr(fd, psmd->psys);
 			psmd->flag &= ~eParticleSystemFlag_psys_updated;
+			psmd->flag |= eParticleSystemFlag_file_loaded;
 		} else if (md->type==eModifierType_Explode) {
 			ExplodeModifierData *psmd = (ExplodeModifierData*) md;
 

Modified: trunk/blender/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2011-01-07 16:55:56 UTC (rev 34157)
+++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2011-01-07 17:27:27 UTC (rev 34158)
@@ -550,6 +550,7 @@
 typedef enum {
 	eParticleSystemFlag_Pars =			(1<<0),
 	eParticleSystemFlag_psys_updated =	(1<<1),
+	eParticleSystemFlag_file_loaded =	(1<<2),
 } ParticleSystemModifierFlag;
 
 typedef struct ParticleSystemModifierData {

Modified: trunk/blender/source/blender/modifiers/intern/MOD_particlesystem.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_particlesystem.c	2011-01-07 16:55:56 UTC (rev 34157)
+++ trunk/blender/source/blender/modifiers/intern/MOD_particlesystem.c	2011-01-07 17:27:27 UTC (rev 34158)
@@ -154,6 +154,10 @@
 		psmd->dm->needsFree = 1;
 		psmd->dm->release(psmd->dm);
 	}
+	else if(psmd->flag & eParticleSystemFlag_file_loaded) {
+		/* in file read dm just wasn't saved in file so no need to reset everything */
+		psmd->flag &= ~eParticleSystemFlag_file_loaded;
+	}
 	else {
 		/* no dm before, so recalc particles fully */
 		psys->recalc |= PSYS_RECALC_RESET;
@@ -176,7 +180,6 @@
 	if(psmd->dm->getNumVerts(psmd->dm)!=psmd->totdmvert ||
 		  psmd->dm->getNumEdges(psmd->dm)!=psmd->totdmedge ||
 		  psmd->dm->getNumFaces(psmd->dm)!=psmd->totdmface){
-		/* in file read dm hasn't really changed but just wasn't saved in file */
 
 		psys->recalc |= PSYS_RECALC_RESET;
 




More information about the Bf-blender-cvs mailing list