diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-01-03 13:37:57 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-01-03 13:37:57 +0400 |
commit | 20b425e5d11974afcad6083aaae10a1089947d89 (patch) | |
tree | 2c0ed23e84c36c3b50c9a867a04397a3cacf7bd2 /source/blender/blenkernel | |
parent | 46f2233a9355ba09aaa9195c4da32a015f02fb8d (diff) |
minor changes for mirror modifier, bigger changes coming.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_cdderivedmesh.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/cdderivedmesh.c | 13 |
2 files changed, 8 insertions, 7 deletions
diff --git a/source/blender/blenkernel/BKE_cdderivedmesh.h b/source/blender/blenkernel/BKE_cdderivedmesh.h index e275eb1b4f7..4621583c25c 100644 --- a/source/blender/blenkernel/BKE_cdderivedmesh.h +++ b/source/blender/blenkernel/BKE_cdderivedmesh.h @@ -60,7 +60,7 @@ struct DerivedMesh *CDDM_from_mesh(struct Mesh *mesh, struct Object *ob); DerivedMesh *CDDM_from_BMEditMesh(struct BMEditMesh *em, struct Mesh *me, int use_mdisps); /* merge verts */ -DerivedMesh *CDDM_merge_verts(DerivedMesh *dm, int *vtargetmap); +DerivedMesh *CDDM_merge_verts(DerivedMesh *dm, const int *vtargetmap); /* creates a CDDerivedMesh from the given curve object */ struct DerivedMesh *CDDM_from_curve(struct Object *ob); diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 34cff1b9b93..164299d4462 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -2279,7 +2279,7 @@ void CDDM_calc_normals(DerivedMesh *dm) * * note, CDDM_recalc_tesselation has to run on the returned DM if you want to access tessfaces. */ -DerivedMesh *CDDM_merge_verts(DerivedMesh *dm, int *vtargetmap) +DerivedMesh *CDDM_merge_verts(DerivedMesh *dm, const int *vtargetmap) { CDDerivedMesh *cddm = (CDDerivedMesh*)dm; CDDerivedMesh *cddm2 = NULL; @@ -2336,7 +2336,7 @@ DerivedMesh *CDDM_merge_verts(DerivedMesh *dm, int *vtargetmap) c = 0; for (i=0; i<dm->numEdgeData; i++, med++) { - if (med->v1 != med->v2) { + if (LIKELY(med->v1 != med->v2)) { const unsigned int v1 = (vtargetmap[med->v1] != -1) ? vtargetmap[med->v1] : med->v1; const unsigned int v2 = (vtargetmap[med->v2] != -1) ? vtargetmap[med->v2] : med->v2; void **eh_p= BLI_edgehash_lookup_p(ehash, v1, v2); @@ -2366,16 +2366,17 @@ DerivedMesh *CDDM_merge_verts(DerivedMesh *dm, int *vtargetmap) c = 0; for (j=0; j<mp->totloop; j++, ml++) { med = cddm->medge + ml->e; - if (med->v1 != med->v2) { + if (LIKELY(med->v1 != med->v2)) { + newl[j+mp->loopstart] = BLI_array_count(mloop); BLI_array_append(oldl, j+mp->loopstart); BLI_array_append(mloop, *ml); - newl[j+mp->loopstart] = BLI_array_count(mloop)-1; c++; } } - - if (!c) + + if (UNLIKELY(c == 0)) { continue; + } mp2 = BLI_array_append_r(mpoly, *mp); mp2->totloop = c; |