[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12759] trunk/blender/source/blender:
Brecht Van Lommel
brechtvanlommel at pandora.be
Sun Dec 2 16:54:55 CET 2007
Revision: 12759
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12759
Author: blendix
Date: 2007-12-02 16:54:54 +0100 (Sun, 02 Dec 2007)
Log Message:
-----------
Particles
=========
Bugfix for crash with disabling the particles system and saving/loading
files, the way it detected if the mesh had changed could not work correct.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/modifier.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/makesdna/DNA_modifier_types.h
Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c 2007-12-02 14:48:24 UTC (rev 12758)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c 2007-12-02 15:54:54 UTC (rev 12759)
@@ -5088,7 +5088,7 @@
DerivedMesh *dm = derivedData;
ParticleSystemModifierData *psmd= (ParticleSystemModifierData*) md;
ParticleSystem * psys=0;
- int totvert=0,totedge=0,totface=0,needsFree=0;
+ int needsFree=0;
if(ob->particlesystem.first)
psys=psmd->psys;
@@ -5137,9 +5137,6 @@
/* clear old dm */
if(psmd->dm){
- totvert=psmd->dm->getNumVerts(psmd->dm);
- totedge=psmd->dm->getNumEdges(psmd->dm);
- totface=psmd->dm->getNumFaces(psmd->dm);
psmd->dm->needsFree = 1;
psmd->dm->release(psmd->dm);
}
@@ -5157,17 +5154,18 @@
psmd->dm->needsFree = 0;
/* report change in mesh structure */
- if(psmd->dm->getNumVerts(psmd->dm)!=totvert ||
- psmd->dm->getNumEdges(psmd->dm)!=totedge ||
- psmd->dm->getNumFaces(psmd->dm)!=totface){
+ 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 */
- if(psmd->flag & eParticleSystemFlag_Loaded)
- psmd->flag &= ~eParticleSystemFlag_Loaded;
- else{
- psys->recalc |= PSYS_RECALC_HAIR;
- psys->recalc |= PSYS_DISTR;
- psmd->flag |= eParticleSystemFlag_DM_changed;
- }
+
+ psys->recalc |= PSYS_RECALC_HAIR;
+ psys->recalc |= PSYS_DISTR;
+ psmd->flag |= eParticleSystemFlag_DM_changed;
+
+ psmd->totdmvert= psmd->dm->getNumVerts(psmd->dm);
+ psmd->totdmedge= psmd->dm->getNumEdges(psmd->dm);
+ psmd->totdmface= psmd->dm->getNumFaces(psmd->dm);
}
if(psys){
@@ -7206,4 +7204,5 @@
}
}
return 0;
-}
\ No newline at end of file
+}
+
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2007-12-02 14:48:24 UTC (rev 12758)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2007-12-02 15:54:54 UTC (rev 12759)
@@ -2979,7 +2979,6 @@
psmd->dm=0;
psmd->psys=newdataadr(fd, psmd->psys);
- psmd->flag |= eParticleSystemFlag_Loaded;
psmd->flag &= ~eParticleSystemFlag_psys_updated;
} 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 2007-12-02 14:48:24 UTC (rev 12758)
+++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h 2007-12-02 15:54:54 UTC (rev 12759)
@@ -401,7 +401,8 @@
ModifierData modifier;
struct ParticleSystem *psys;
struct DerivedMesh *dm;
- short flag, rt[3];
+ int totdmvert, totdmedge, totdmface;
+ short flag, rt;
} ParticleSystemModifierData;
typedef enum {
More information about the Bf-blender-cvs
mailing list