diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_particleinstance.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_particleinstance.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/modifiers/intern/MOD_particleinstance.c b/source/blender/modifiers/intern/MOD_particleinstance.c index 509c916941f..1b9c0061494 100644 --- a/source/blender/modifiers/intern/MOD_particleinstance.c +++ b/source/blender/modifiers/intern/MOD_particleinstance.c @@ -174,7 +174,7 @@ static DerivedMesh * applyModifier(ModifierData *md, Object *ob, pars=psys->particles; totvert=dm->getNumVerts(dm); - totface=dm->getNumFaces(dm); + totface=dm->getNumTessFaces(dm); maxvert=totvert*totpart; maxface=totface*totpart; @@ -190,7 +190,7 @@ static DerivedMesh * applyModifier(ModifierData *md, Object *ob, max_co=max_r[track]; } - result = CDDM_from_template(dm, maxvert,dm->getNumEdges(dm)*totpart,maxface); + result = CDDM_from_template(dm, maxvert,dm->getNumEdges(dm)*totpart,maxface, 0, 0); mvert=result->getVertArray(result); orig_mvert=dm->getVertArray(dm); @@ -260,8 +260,8 @@ static DerivedMesh * applyModifier(ModifierData *md, Object *ob, add_v3_v3(mv->co, state.co); } - mface=result->getFaceArray(result); - orig_mface=dm->getFaceArray(dm); + mface=result->getTessFaceArray(result); + orig_mface=dm->getTessFaceArray(dm); for(i=0; i<maxface; i++){ MFace *inMF; @@ -312,10 +312,14 @@ static DerivedMesh * applyModifier(ModifierData *md, Object *ob, if(size) MEM_freeN(size); - return result; + dm = CDDM_copy(result, 1); /*builds ngon faces from tess (mface) faces*/ + result->needsFree = 1; + result->release(result); + + return dm; } static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob, - struct EditMesh *UNUSED(editData), + struct BMEditMesh *UNUSED(editData), DerivedMesh *derivedData) { return applyModifier(md, ob, derivedData, 0, 1); |