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:
authorBastien Montagne <montagne29@wanadoo.fr>2014-06-23 18:11:48 +0400
committerBastien Montagne <montagne29@wanadoo.fr>2014-06-23 18:21:53 +0400
commitb82e84f17917915d83bc3da292d2441bc126f87c (patch)
tree674cca8a1f1163588ccec43f9ac1b09d8fd264dc /source/blender/bmesh/intern/bmesh_mesh_conv.c
parent7df2717727b1430fe4406e24110348b5cbaa788b (diff)
BMesh: we actually can set loop indices too while converting from Mesh to BMesh...
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_mesh_conv.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_mesh_conv.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/source/blender/bmesh/intern/bmesh_mesh_conv.c b/source/blender/bmesh/intern/bmesh_mesh_conv.c
index b7be0cc0ae2..05f3ff5b60b 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_conv.c
+++ b/source/blender/bmesh/intern/bmesh_mesh_conv.c
@@ -233,7 +233,7 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me,
BMEdge *e, **etable = NULL;
BMFace *f;
float (*keyco)[3] = NULL;
- int totuv, i, j;
+ int totuv, totloops, i, j;
int cd_vert_bweight_offset;
int cd_edge_bweight_offset;
@@ -395,7 +395,7 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me,
mloop = me->mloop;
mp = me->mpoly;
- for (i = 0; i < me->totpoly; i++, mp++) {
+ for (i = 0, totloops = 0; i < me->totpoly; i++, mp++) {
BMLoop *l_iter;
BMLoop *l_first;
@@ -426,6 +426,9 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me,
j = mp->loopstart;
l_iter = l_first = BM_FACE_FIRST_LOOP(f);
do {
+ /* don't use 'j' since we may have skipped some faces, hence some loops. */
+ BM_elem_index_set(l_iter, totloops++); /* set_ok */
+
/* Save index of correspsonding MLoop */
CustomData_to_bmesh_block(&me->ldata, &bm->ldata, j++, &l_iter->head.data, true);
} while ((l_iter = l_iter->next) != l_first);
@@ -438,8 +441,7 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me,
}
}
- bm->elem_index_dirty &= ~BM_FACE; /* added in order, clear dirty flag */
- bm->elem_index_dirty |= BM_LOOP; /* did not set the loop indices */
+ bm->elem_index_dirty &= ~(BM_FACE | BM_LOOP); /* added in order, clear dirty flag */
if (me->mselect && me->totselect != 0) {