Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-02-12 19:02:33 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-02-12 19:02:33 +0400
commit7c2715a7adaf902565519a94813c4f160206e3c7 (patch)
treedb2383b9be277a53a5e5a2b163a1a120c4de6777 /source/blender/modifiers
parent2fcb6d058ea0c50f7f1c4d13e13708ddbacac71c (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.c12
-rw-r--r--source/blender/modifiers/intern/MOD_bevel.c17
-rw-r--r--source/blender/modifiers/intern/MOD_edgesplit.c19
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)