svn merge ^/trunk/blender -r42521:42550
[blender.git] / source / blender / modifiers / intern / MOD_mask.c
index 1fbe0eef6f34635ff919df01571298ebd10fd02b..cdb92ab432ce71fc58381f81a9d9df7c6993c4e7 100644 (file)
@@ -117,7 +117,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
        /* get original number of verts, edges, and faces */
        maxVerts= dm->getNumVerts(dm);
        maxEdges= dm->getNumEdges(dm);
-       maxFaces= dm->getNumFaces(dm);
+       maxFaces= dm->getNumTessFaces(dm);
        
        /* check if we can just return the original mesh 
         *      - must have verts and therefore verts assigned to vgroups to do anything useful
@@ -283,7 +283,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
        for (i = 0; i < maxFaces; i++) 
        {
                MFace mf;
-               dm->getFace(dm, i, &mf);
+               dm->getTessFace(dm, i, &mf);
                
                /* all verts must be available */
                if ( BLI_ghash_haskey(vertHash, SET_INT_IN_POINTER(mf.v1)) &&
@@ -300,7 +300,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
        /* now we know the number of verts, edges and faces, 
         * we can create the new (reduced) mesh
         */
-       result = CDDM_from_template(dm, numVerts, numEdges, numFaces);
+       result = CDDM_from_template(dm, numVerts, numEdges, numFaces, 0, 0);
        
        
        /* using ghash-iterators, map data into new mesh */
@@ -354,8 +354,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
                int newIndex = GET_INT_FROM_POINTER(BLI_ghashIterator_getValue(hashIter));
                int orig_v4;
                
-               dm->getFace(dm, oldIndex, &source);
-               dest = CDDM_get_face(result, newIndex);
+               dm->getTessFace(dm, oldIndex, &source);
+               dest = CDDM_get_tessface(result, newIndex);
                
                orig_v4 = source.v4;
                
@@ -365,13 +365,16 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
                if (source.v4)
                   source.v4 = GET_INT_FROM_POINTER(BLI_ghash_lookup(vertHash, SET_INT_IN_POINTER(source.v4)));
                
-               DM_copy_face_data(dm, result, oldIndex, newIndex, 1);
+               DM_copy_tessface_data(dm, result, oldIndex, newIndex, 1);
                *dest = source;
                
                test_index_face(dest, &result->faceData, newIndex, (orig_v4 ? 4 : 3));
        }
        BLI_ghashIterator_free(hashIter);
        
+       /* build polys from tess faces, for now */
+       CDDM_tessfaces_to_faces(result);
+
        /* recalculate normals */
        CDDM_calc_normals(result);
        
@@ -381,6 +384,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
        BLI_ghash_free(faceHash, NULL, NULL);
        
        /* return the new mesh */
+
        return result;
 }