[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41878] trunk/blender/source/blender: fix [#29272] Dynamic Paint crashes on duplicating a particle system
Campbell Barton
ideasman42 at gmail.com
Tue Nov 15 14:45:24 CET 2011
Revision: 41878
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41878
Author: campbellbarton
Date: 2011-11-15 13:45:24 +0000 (Tue, 15 Nov 2011)
Log Message:
-----------
fix [#29272] Dynamic Paint crashes on duplicating a particle system
smoke had this same bug too
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/object.c
trunk/blender/source/blender/makesdna/DNA_particle_types.h
Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c 2011-11-15 12:32:58 UTC (rev 41877)
+++ trunk/blender/source/blender/blenkernel/intern/object.c 2011-11-15 13:45:24 UTC (rev 41878)
@@ -50,6 +50,7 @@
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_sequence_types.h"
+#include "DNA_smoke_types.h"
#include "DNA_sound_types.h"
#include "DNA_space_types.h"
#include "DNA_view3d_types.h"
@@ -961,7 +962,6 @@
void copy_object_particlesystems(Object *obn, Object *ob)
{
- ParticleSystemModifierData *psmd;
ParticleSystem *psys, *npsys;
ModifierData *md;
@@ -974,10 +974,28 @@
/* need to update particle modifiers too */
for(md=obn->modifiers.first; md; md=md->next) {
if(md->type==eModifierType_ParticleSystem) {
- psmd= (ParticleSystemModifierData*)md;
+ ParticleSystemModifierData *psmd= (ParticleSystemModifierData*)md;
if(psmd->psys==psys)
psmd->psys= npsys;
}
+ else if(md->type==eModifierType_DynamicPaint) {
+ DynamicPaintModifierData *pmd= (DynamicPaintModifierData*)md;
+ if (pmd->brush) {
+ if(pmd->brush->psys==psys) {
+ pmd->brush->psys= npsys;
+ }
+ }
+ }
+ else if (md->type==eModifierType_Smoke) {
+ SmokeModifierData *smd = (SmokeModifierData*) md;
+
+ if(smd->type==MOD_SMOKE_TYPE_FLOW) {
+ if (smd->flow) {
+ if (smd->flow->psys == psys)
+ smd->flow->psys= npsys;
+ }
+ }
+ }
}
}
}
Modified: trunk/blender/source/blender/makesdna/DNA_particle_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_particle_types.h 2011-11-15 12:32:58 UTC (rev 41877)
+++ trunk/blender/source/blender/makesdna/DNA_particle_types.h 2011-11-15 13:45:24 UTC (rev 41878)
@@ -233,7 +233,10 @@
struct PartDeflect *pd2;
} ParticleSettings;
-typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in copy_particlesystem */
+typedef struct ParticleSystem
+{ /* note1: make sure all (runtime) are NULL's in 'copy_particlesystem' XXX, this function is no more! - need to invstigate */
+ /* note2: make sure any uses of this struct in DNA are accounted for in 'copy_object_particlesystems' */
+
struct ParticleSystem *next, *prev;
ParticleSettings *part; /* particle settings */
More information about the Bf-blender-cvs
mailing list