diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_mask.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_mask.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/modifiers/intern/MOD_mask.c b/source/blender/modifiers/intern/MOD_mask.c index 4145dafce7b..046eb0e5d03 100644 --- a/source/blender/modifiers/intern/MOD_mask.c +++ b/source/blender/modifiers/intern/MOD_mask.c @@ -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 @@ -282,7 +282,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)) && @@ -299,7 +299,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 */ @@ -353,8 +353,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; @@ -364,13 +364,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); @@ -380,6 +383,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, BLI_ghash_free(faceHash, NULL, NULL); /* return the new mesh */ + return result; } |