diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-01-23 01:12:18 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-01-23 01:12:18 +0400 |
commit | 61a5cc28bef0a7758aba179986cd8393a5425158 (patch) | |
tree | dd0bfc5694673b10c608414bfbc84be4ee5cfb83 /source/blender/blenkernel | |
parent | a63efc00cc5fca26510fdb435eb9d699dd293a6d (diff) |
disable re-tesselation for modifiers that use bmesh, array/bevel/edge split - were tesselating 2 times and didnt need to.
also comment array modifier from flushing selection flags.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_cdderivedmesh.h | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_tessmesh.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/editderivedmesh.c | 7 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/modifiers_bmesh.c | 12 |
4 files changed, 16 insertions, 8 deletions
diff --git a/source/blender/blenkernel/BKE_cdderivedmesh.h b/source/blender/blenkernel/BKE_cdderivedmesh.h index ce9e8dcf92a..db9f8e0527f 100644 --- a/source/blender/blenkernel/BKE_cdderivedmesh.h +++ b/source/blender/blenkernel/BKE_cdderivedmesh.h @@ -69,7 +69,8 @@ struct DerivedMesh *CDDM_from_curve(struct Object *ob); /* useful for OrcoDM creation for curves with constructive modifiers */ DerivedMesh *CDDM_from_curve_customDB(struct Object *ob, struct ListBase *dispbase); -struct BMEditMesh *CDDM_To_BMesh(struct Object *ob, struct DerivedMesh *dm, struct BMEditMesh *existing); +struct BMEditMesh *CDDM_To_BMesh(struct Object *ob, struct DerivedMesh *dm, + struct BMEditMesh *existing, int do_tesselate); /* Copies the given DerivedMesh with verts, faces & edges stored as diff --git a/source/blender/blenkernel/BKE_tessmesh.h b/source/blender/blenkernel/BKE_tessmesh.h index bed62a0a5f4..67afb86fde1 100644 --- a/source/blender/blenkernel/BKE_tessmesh.h +++ b/source/blender/blenkernel/BKE_tessmesh.h @@ -67,7 +67,7 @@ typedef struct BMEditMesh { #define BMESH_EM_UNDO_RECALC_TESSFACE_WORKAROUND void BMEdit_RecalcTesselation(BMEditMesh *tm); -BMEditMesh *BMEdit_Create(BMesh *bm); +BMEditMesh *BMEdit_Create(BMesh *bm, int do_tesselate); BMEditMesh *BMEdit_Copy(BMEditMesh *tm); void BMEdit_Free(BMEditMesh *em); void BMEdit_UpdateLinkedCustomData(BMEditMesh *em); diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c index 89339b2df06..5029ff73f03 100644 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@ -70,13 +70,14 @@ extern GLubyte stipple_quarttone[128]; /* glutil.c, bad level data */ -BMEditMesh *BMEdit_Create(BMesh *bm) +BMEditMesh *BMEdit_Create(BMesh *bm, int do_tesselate) { BMEditMesh *tm = MEM_callocN(sizeof(BMEditMesh), __func__); tm->bm = bm; - - BMEdit_RecalcTesselation(tm); + if (do_tesselate) { + BMEdit_RecalcTesselation(tm); + } return tm; } diff --git a/source/blender/blenkernel/intern/modifiers_bmesh.c b/source/blender/blenkernel/intern/modifiers_bmesh.c index cf6d7b87fe3..3d1349f09ed 100644 --- a/source/blender/blenkernel/intern/modifiers_bmesh.c +++ b/source/blender/blenkernel/intern/modifiers_bmesh.c @@ -103,7 +103,7 @@ /*converts a cddm to a BMEditMesh. if existing is non-NULL, the new geometry will be put in there.*/ -BMEditMesh *CDDM_To_BMesh(Object *ob, DerivedMesh *dm, BMEditMesh *existing) +BMEditMesh *CDDM_To_BMesh(Object *ob, DerivedMesh *dm, BMEditMesh *existing, int do_tesselate) { int allocsize[4] = {512, 512, 2048, 512}; BMesh *bm, bmold; /*bmold is for storing old customdata layout*/ @@ -205,8 +205,14 @@ BMEditMesh *CDDM_To_BMesh(Object *ob, DerivedMesh *dm, BMEditMesh *existing) BLI_array_free(verts); BLI_array_free(edges); - if (!em) em = BMEdit_Create(bm); - else BMEdit_RecalcTesselation(em); + if (!em) { + em = BMEdit_Create(bm, do_tesselate); + } + else { + if (do_tesselate) { + BMEdit_RecalcTesselation(em); + } + } return em; } |