diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-02-12 19:02:33 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-02-12 19:02:33 +0400 |
commit | 7c2715a7adaf902565519a94813c4f160206e3c7 (patch) | |
tree | db2383b9be277a53a5e5a2b163a1a120c4de6777 /source/blender/modifiers | |
parent | 2fcb6d058ea0c50f7f1c4d13e13708ddbacac71c (diff) |
rename CDDM_To_BMesh to DM_to_editbmesh, since theres no requirement for
the input to be a CDDM.
remove conversions to CDDM for edge split and bevel (will give some
speedup).
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_array.c | 12 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_bevel.c | 17 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_edgesplit.c | 19 |
3 files changed, 15 insertions, 33 deletions
diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index cbf7d0d125c..a711650676b 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -208,8 +208,8 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, Scene *scene, Object *ob, DerivedMesh *dm, int UNUSED(initFlags)) { - DerivedMesh *cddm = dm; //copying shouldn't be necassary here, as all modifiers return CDDM's - BMEditMesh *em = CDDM_To_BMesh(ob, cddm, NULL, FALSE); + DerivedMesh *result; + BMEditMesh *em = DM_to_editbmesh(ob, dm, NULL, FALSE); BMOperator op, oldop, weldop; int i, j, indexLen; /* offset matrix */ @@ -228,8 +228,8 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, unit_m4(offset); - src_mvert = cddm->getVertArray(dm); - maxVerts = cddm->getNumVerts(dm); + src_mvert = dm->getVertArray(dm); + maxVerts = dm->getNumVerts(dm); if(amd->offset_type & MOD_ARR_OFF_CONST) add_v3_v3v3(offset[3], offset[3], amd->offset); @@ -389,13 +389,13 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, BMO_pop(em->bm); BLI_assert(em->looptris == NULL); - cddm = CDDM_from_BMEditMesh(em, NULL, FALSE, FALSE); + result = CDDM_from_BMEditMesh(em, NULL, FALSE, FALSE); BMEdit_Free(em); MEM_freeN(em); MEM_freeN(indexMap); - return cddm; + return result; } static DerivedMesh *applyModifier(ModifierData *md, Object *ob, diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c index c0cd28ae27a..1bc768a73c2 100644 --- a/source/blender/modifiers/intern/MOD_bevel.c +++ b/source/blender/modifiers/intern/MOD_bevel.c @@ -110,20 +110,16 @@ static DerivedMesh *applyModifier(ModifierData *md, struct Object *ob, int UNUSED(useRenderParams), int UNUSED(isFinalCalc)) { + DerivedMesh *result; BMesh *bm; BMEditMesh *em; - DerivedMesh *cddm; BMIter iter; BMEdge *e; BevelModifierData *bmd = (BevelModifierData*) md; /* int allocsize[] = {512, 512, 2048, 512}; */ /* UNUSED */ float threshold = cos((bmd->bevel_angle + 0.00001) * M_PI / 180.0); - if (!CDDM_Check(dm)) { - cddm = CDDM_copy(dm); - } else cddm = dm; - - em = CDDM_To_BMesh(ob, dm, NULL, FALSE); + em = DM_to_editbmesh(ob, dm, NULL, FALSE); bm = em->bm; BM_mesh_normals_update(bm); @@ -153,17 +149,12 @@ static DerivedMesh *applyModifier(ModifierData *md, struct Object *ob, EDGE_MARK, bmd->value, (bmd->flags & BME_BEVEL_EVEN)!=0, (bmd->flags & BME_BEVEL_DIST)!=0); BMO_pop(bm); - if (cddm != dm) { - cddm->needsFree = 1; - cddm->release(cddm); - } - BLI_assert(em->looptris == NULL); - cddm = CDDM_from_BMEditMesh(em, NULL, TRUE, FALSE); + result = CDDM_from_BMEditMesh(em, NULL, TRUE, FALSE); BMEdit_Free(em); MEM_freeN(em); - return cddm; + return result; } diff --git a/source/blender/modifiers/intern/MOD_edgesplit.c b/source/blender/modifiers/intern/MOD_edgesplit.c index db39be12bca..3137df9d0dc 100644 --- a/source/blender/modifiers/intern/MOD_edgesplit.c +++ b/source/blender/modifiers/intern/MOD_edgesplit.c @@ -59,19 +59,15 @@ static DerivedMesh *doEdgeSplit(DerivedMesh *dm, EdgeSplitModifierData *emd, Object *ob) { + DerivedMesh *result; BMesh *bm; BMEditMesh *em; - DerivedMesh *cddm; BMIter iter; BMEdge *e; /* int allocsize[] = {512, 512, 2048, 512}; */ /* UNUSED */ float threshold = cos((emd->split_angle + 0.00001) * M_PI / 180.0); - - if (!CDDM_Check(dm)) { - cddm = CDDM_copy(dm); - } else cddm = dm; - - em = CDDM_To_BMesh(ob, dm, NULL, FALSE); + + em = DM_to_editbmesh(ob, dm, NULL, FALSE); bm = em->bm; BM_mesh_normals_update(bm); @@ -101,18 +97,13 @@ static DerivedMesh *doEdgeSplit(DerivedMesh *dm, EdgeSplitModifierData *emd, Obj BMO_op_callf(bm, "edgesplit edges=%fe", EDGE_MARK); BMO_pop(bm); - - if (cddm != dm) { - cddm->needsFree = 1; - cddm->release(cddm); - } BLI_assert(em->looptris == NULL); - cddm = CDDM_from_BMEditMesh(em, NULL, TRUE, FALSE); + result = CDDM_from_BMEditMesh(em, NULL, TRUE, FALSE); BMEdit_Free(em); MEM_freeN(em); - return cddm; + return result; } static void initData(ModifierData *md) |