merge with trunk at r31523
[blender.git] / source / blender / modifiers / intern / MOD_particleinstance.c
index 4f5acc60cda3765fa1da9da2d4245211cca938a1..100a22603d5960717628fb029067dfaf0efb1841 100644 (file)
@@ -166,7 +166,7 @@ static DerivedMesh * applyModifier(
        pars=psys->particles;
 
        totvert=dm->getNumVerts(dm);
-       totface=dm->getNumFaces(dm);
+       totface=dm->getNumTessFaces(dm);
 
        maxvert=totvert*totpart;
        maxface=totface*totpart;
@@ -182,7 +182,7 @@ static DerivedMesh * applyModifier(
                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);
@@ -252,8 +252,8 @@ static DerivedMesh * applyModifier(
                VECADD(mv->co,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;
@@ -304,8 +304,13 @@ static DerivedMesh * applyModifier(
        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 *editData,
   DerivedMesh *derivedData)