svn merge ^/trunk/blender -r41226:41227 .
[blender.git] / source / blender / modifiers / intern / MOD_particleinstance.c
index f93e046..eae7dce 100644 (file)
@@ -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,
                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;
@@ -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);