[Bf-blender-cvs] [b82e84f] master: BMesh: we actually can set loop indices too while converting from Mesh to BMesh...
Bastien Montagne
noreply at git.blender.org
Mon Jun 23 16:22:37 CEST 2014
Commit: b82e84f17917915d83bc3da292d2441bc126f87c
Author: Bastien Montagne
Date: Mon Jun 23 16:11:48 2014 +0200
https://developer.blender.org/rBb82e84f17917915d83bc3da292d2441bc126f87c
BMesh: we actually can set loop indices too while converting from Mesh to BMesh...
===================================================================
M source/blender/bmesh/intern/bmesh_mesh_conv.c
===================================================================
diff --git a/source/blender/bmesh/intern/bmesh_mesh_conv.c b/source/blender/bmesh/intern/bmesh_mesh_conv.c
index b7be0cc..05f3ff5 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) {
More information about the Bf-blender-cvs
mailing list