diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-01-03 19:28:53 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-01-03 19:28:53 +0400 |
commit | 8d8403c15ec8694d7d71d8a9f4a9e3a1fade666e (patch) | |
tree | d938809a9b5c5ec2975d347d70b4bc89cbf59404 /source/blender | |
parent | 0a1e48fa7878328d143b9a348104853a228cdb26 (diff) |
for modifiers that are stull creating MFaces - call CDDM_tessfaces_to_faces rather then making an entire copy with CDDM_copy(result, 1)
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/subsurf_ccg.c | 22 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_boolean_util.c | 9 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_decimate.c | 12 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_explode.c | 6 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_ngoninterp.c | 12 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_particleinstance.c | 6 |
6 files changed, 15 insertions, 52 deletions
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 71158729eb3..c057d96a5c4 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -484,28 +484,6 @@ static void free_ss_weights(WeightTable *wtable) MEM_freeN(wtable->weight_table); } -#if 0 -static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh, - int drawInteriorEdges, int useSubsurfUv, - DerivedMesh *dm, struct MultiresSubsurf *ms) -{ - DerivedMesh *cgdm, *result; - double curt = PIL_check_seconds_timer(); - - cgdm = getCCGDerivedMesh(ss, drawInteriorEdges, useSubsurfUv, dm); - result = CDDM_copy(cgdm, 1); - - printf("subsurf conversion time: %.6lf\n", PIL_check_seconds_timer() - curt); - - cgdm->needsFree = 1; - cgdm->release(cgdm); - - CDDM_calc_normals(result); - - return result; -} -#endif - static int ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, float (*vertexCos)[3], int useFlatSubdiv) { diff --git a/source/blender/modifiers/intern/MOD_boolean_util.c b/source/blender/modifiers/intern/MOD_boolean_util.c index dfa220ba432..9ae0e515acc 100644 --- a/source/blender/modifiers/intern/MOD_boolean_util.c +++ b/source/blender/modifiers/intern/MOD_boolean_util.c @@ -346,7 +346,7 @@ static DerivedMesh *ConvertCSGDescriptorsToDerivedMesh( DerivedMesh *dm2, Object *ob2) { - DerivedMesh *result, *orig_dm, *dm; + DerivedMesh *result, *orig_dm; GHash *material_hash = NULL; Mesh *me1= (Mesh*)ob1->data; Mesh *me2= (Mesh*)ob2->data; @@ -434,12 +434,9 @@ static DerivedMesh *ConvertCSGDescriptorsToDerivedMesh( CDDM_calc_edges(result); - dm = CDDM_copy(result, 1); /*builds ngon faces from tess (mface) faces*/ - CDDM_calc_normals(dm); - result->needsFree = 1; - result->release(result); + CDDM_tessfaces_to_faces(result); /*builds ngon faces from tess (mface) faces*/ - return dm; + return result; } static void BuildMeshDescriptors( diff --git a/source/blender/modifiers/intern/MOD_decimate.c b/source/blender/modifiers/intern/MOD_decimate.c index dca6d6a8a31..d14edd6d428 100644 --- a/source/blender/modifiers/intern/MOD_decimate.c +++ b/source/blender/modifiers/intern/MOD_decimate.c @@ -181,12 +181,14 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *UNUSED(ob), MEM_freeN(lod.vertex_normal_buffer); MEM_freeN(lod.triangle_index_buffer); - dm = CDDM_copy(result, 1); /*builds ngon faces from tess (mface) faces*/ - CDDM_calc_normals(dm); - result->needsFree = 1; - result->release(result); + if (result) { + CDDM_tessfaces_to_faces(result); /*builds ngon faces from tess (mface) faces*/ - return dm; + return result; + } + else { + return dm; + } } #else // WITH_MOD_DECIMATE static DerivedMesh *applyModifier(ModifierData *UNUSED(md), Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_explode.c b/source/blender/modifiers/intern/MOD_explode.c index 6b75f678c36..793824c4136 100644 --- a/source/blender/modifiers/intern/MOD_explode.c +++ b/source/blender/modifiers/intern/MOD_explode.c @@ -774,11 +774,9 @@ static DerivedMesh * cutEdges(ExplodeModifierData *emd, DerivedMesh *dm) MEM_freeN(facesplit); MEM_freeN(vertpa); - dm = CDDM_copy(splitdm, 1); /*builds ngon faces from tess (mface) faces*/ - splitdm->needsFree = 1; - splitdm->release(splitdm); + CDDM_tessfaces_to_faces(splitdm); /*builds ngon faces from tess (mface) faces*/ - return dm; + return splitdm; } static DerivedMesh * explodeMesh(ExplodeModifierData *emd, ParticleSystemModifierData *psmd, Scene *scene, Object *ob, diff --git a/source/blender/modifiers/intern/MOD_ngoninterp.c b/source/blender/modifiers/intern/MOD_ngoninterp.c index c363a7cfafd..08d83016e18 100644 --- a/source/blender/modifiers/intern/MOD_ngoninterp.c +++ b/source/blender/modifiers/intern/MOD_ngoninterp.c @@ -297,16 +297,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *UNUSED(ob), dummy->release(dummy); /*create polys from mface triangles*/ - dummy = cddm; - cddm = CDDM_copy(cddm, 1); - dummy->needsFree = 1; - dummy->release(dummy); - - if (copy) { - copy->needsFree = 1; - copy->release(dm); - copy = copy; - } + CDDM_tessfaces_to_faces(cddm); /*builds ngon faces from tess (mface) faces*/ return cddm; } @@ -336,4 +327,3 @@ ModifierTypeInfo modifierType_NgonInterp = { /* foreachObjectLink */ 0, /* foreachIDLink */ 0, }; - diff --git a/source/blender/modifiers/intern/MOD_particleinstance.c b/source/blender/modifiers/intern/MOD_particleinstance.c index b61cadc246e..06bc53b77ee 100644 --- a/source/blender/modifiers/intern/MOD_particleinstance.c +++ b/source/blender/modifiers/intern/MOD_particleinstance.c @@ -312,11 +312,9 @@ static DerivedMesh * applyModifier(ModifierData *md, Object *ob, if(size) MEM_freeN(size); - dm = CDDM_copy(result, 1); /*builds ngon faces from tess (mface) faces*/ - result->needsFree = 1; - result->release(result); + CDDM_tessfaces_to_faces(result); /*builds ngon faces from tess (mface) faces*/ - return dm; + return result; } static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob, struct BMEditMesh *UNUSED(editData), |