From e4c2a3c31cf262fcf5d3577552e66b1c5e63218f Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Tue, 15 Apr 2014 16:18:27 +0200 Subject: Various fixes/improvements regarding BMesh's elem_index_dirty and BM_LOOP handling. Most notably, BM_LOOP and BM_FACE index recompute should now be fully decoupled. --- source/blender/blenkernel/intern/modifiers_bmesh.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source/blender/blenkernel/intern/modifiers_bmesh.c') diff --git a/source/blender/blenkernel/intern/modifiers_bmesh.c b/source/blender/blenkernel/intern/modifiers_bmesh.c index 13368be1acb..3cb607730d4 100644 --- a/source/blender/blenkernel/intern/modifiers_bmesh.c +++ b/source/blender/blenkernel/intern/modifiers_bmesh.c @@ -176,7 +176,8 @@ void DM_to_bmesh_ex(DerivedMesh *dm, BMesh *bm, const bool calc_face_normal) l_iter = l_first = BM_FACE_FIRST_LOOP(f); do { /* Save index of correspsonding MLoop */ - CustomData_to_bmesh_block(&dm->loopData, &bm->ldata, j++, &l_iter->head.data, true); + CustomData_to_bmesh_block(&dm->loopData, &bm->ldata, j, &l_iter->head.data, true); + BM_elem_index_set(l_iter, j++); /* set_inline */ } while ((l_iter = l_iter->next) != l_first); CustomData_to_bmesh_block(&dm->polyData, &bm->pdata, i, &f->head.data, true); @@ -195,7 +196,7 @@ void DM_to_bmesh_ex(DerivedMesh *dm, BMesh *bm, const bool calc_face_normal) *orig_index = ORIGINDEX_NONE; } } - if (is_init) bm->elem_index_dirty &= ~BM_FACE; + if (is_init) bm->elem_index_dirty &= ~(BM_FACE | BM_LOOP); MEM_freeN(vtable); MEM_freeN(etable); -- cgit v1.2.3