diff options
author | Rohan Rathi <rohanrathi08@gmail.com> | 2018-06-20 19:59:44 +0300 |
---|---|---|
committer | Rohan Rathi <rohanrathi08@gmail.com> | 2018-06-20 19:59:44 +0300 |
commit | c73a6b0d42f5ee16bb2af7d585035463854f4024 (patch) | |
tree | c366aeac74491653e0ba516b745116bfa6475f94 /source/blender/bmesh/intern/bmesh_mesh.c | |
parent | dd752476b97aa3b35d1359422ca42e33d99ac851 (diff) | |
parent | 82dc5f91e86351e1a26769ec86d9054437eb77d6 (diff) |
Merge branch 'blender2.8' into soc-2018-bevel
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_mesh.c')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_mesh.c | 113 |
1 files changed, 30 insertions, 83 deletions
diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c index 4d0f259b4e3..96707335081 100644 --- a/source/blender/bmesh/intern/bmesh_mesh.c +++ b/source/blender/bmesh/intern/bmesh_mesh.c @@ -1108,43 +1108,43 @@ void BM_lnorspace_invalidate(BMesh *bm, const bool do_invalidate_all) * - all smooth fans of all immediate loop-neighbors vertices; * This can be simplified as 'all loops of selected vertices and their immediate neighbors' * need to be tagged for update. -*/ -BM_ITER_MESH(v, &viter, bm, BM_VERTS_OF_MESH) { - if (BM_elem_flag_test(v, BM_ELEM_SELECT)) { - BM_ITER_ELEM(l, &liter, v, BM_LOOPS_OF_VERT) { - BM_ELEM_API_FLAG_ENABLE(l, BM_LNORSPACE_UPDATE); - - /* Note that we only handle unselected neighbor vertices here, main loop will take care of - * selected ones. */ - if (!BM_elem_flag_test(l->prev->v, BM_ELEM_SELECT) && - !BLI_BITMAP_TEST(done_verts, BM_elem_index_get(l->prev->v))) - { - BMLoop *l_prev; - BMIter liter_prev; - BM_ITER_ELEM(l_prev, &liter_prev, l->prev->v, BM_LOOPS_OF_VERT) { - BM_ELEM_API_FLAG_ENABLE(l_prev, BM_LNORSPACE_UPDATE); + */ + BM_ITER_MESH(v, &viter, bm, BM_VERTS_OF_MESH) { + if (BM_elem_flag_test(v, BM_ELEM_SELECT)) { + BM_ITER_ELEM(l, &liter, v, BM_LOOPS_OF_VERT) { + BM_ELEM_API_FLAG_ENABLE(l, BM_LNORSPACE_UPDATE); + + /* Note that we only handle unselected neighbor vertices here, main loop will take care of + * selected ones. */ + if (!BM_elem_flag_test(l->prev->v, BM_ELEM_SELECT) && + !BLI_BITMAP_TEST(done_verts, BM_elem_index_get(l->prev->v))) + { + BMLoop *l_prev; + BMIter liter_prev; + BM_ITER_ELEM(l_prev, &liter_prev, l->prev->v, BM_LOOPS_OF_VERT) { + BM_ELEM_API_FLAG_ENABLE(l_prev, BM_LNORSPACE_UPDATE); + } + BLI_BITMAP_ENABLE(done_verts, BM_elem_index_get(l_prev->v)); } - BLI_BITMAP_ENABLE(done_verts, BM_elem_index_get(l_prev->v)); - } - if (!BM_elem_flag_test(l->next->v, BM_ELEM_SELECT) && - !BLI_BITMAP_TEST(done_verts, BM_elem_index_get(l->next->v))) - { - BMLoop *l_next; - BMIter liter_next; - BM_ITER_ELEM(l_next, &liter_next, l->next->v, BM_LOOPS_OF_VERT) { - BM_ELEM_API_FLAG_ENABLE(l_next, BM_LNORSPACE_UPDATE); + if (!BM_elem_flag_test(l->next->v, BM_ELEM_SELECT) && + !BLI_BITMAP_TEST(done_verts, BM_elem_index_get(l->next->v))) + { + BMLoop *l_next; + BMIter liter_next; + BM_ITER_ELEM(l_next, &liter_next, l->next->v, BM_LOOPS_OF_VERT) { + BM_ELEM_API_FLAG_ENABLE(l_next, BM_LNORSPACE_UPDATE); + } + BLI_BITMAP_ENABLE(done_verts, BM_elem_index_get(l_next->v)); } - BLI_BITMAP_ENABLE(done_verts, BM_elem_index_get(l_next->v)); } - } - BLI_BITMAP_ENABLE(done_verts, BM_elem_index_get(v)); + BLI_BITMAP_ENABLE(done_verts, BM_elem_index_get(v)); + } } -} -MEM_freeN(done_verts); -bm->spacearr_dirty |= BM_SPACEARR_DIRTY; + MEM_freeN(done_verts); + bm->spacearr_dirty |= BM_SPACEARR_DIRTY; } void BM_lnorspace_rebuild(BMesh *bm, bool preserve_clnor) @@ -1471,59 +1471,6 @@ int BM_total_loop_select(BMesh *bm) return r_sel; } -static void UNUSED_FUNCTION(bm_mdisps_space_set)( - Object *ob, BMesh *bm, int from, int to) -{ - /* switch multires data out of tangent space */ - if (CustomData_has_layer(&bm->ldata, CD_MDISPS)) { - BMEditMesh *em = BKE_editmesh_create(bm, false); - DerivedMesh *dm = CDDM_from_editbmesh(em, true, false); - MDisps *mdisps; - BMFace *f; - BMIter iter; - // int i = 0; // UNUSED - - multires_set_space(dm, ob, from, to); - - mdisps = CustomData_get_layer(&dm->loopData, CD_MDISPS); - - BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) { - BMLoop *l; - BMIter liter; - BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) { - MDisps *lmd = CustomData_bmesh_get(&bm->ldata, l->head.data, CD_MDISPS); - - if (!lmd->disps) { - printf("%s: warning - 'lmd->disps' == NULL\n", __func__); - } - - if (lmd->disps && lmd->totdisp == mdisps->totdisp) { - memcpy(lmd->disps, mdisps->disps, sizeof(float) * 3 * lmd->totdisp); - } - else if (mdisps->disps) { - if (lmd->disps) - MEM_freeN(lmd->disps); - - lmd->disps = MEM_dupallocN(mdisps->disps); - lmd->totdisp = mdisps->totdisp; - lmd->level = mdisps->level; - } - - mdisps++; - // i += 1; - } - } - - dm->needsFree = 1; - dm->release(dm); - - /* setting this to NULL prevents BKE_editmesh_free from freeing it */ - em->bm = NULL; - BKE_editmesh_free(em); - MEM_freeN(em); - } -} - /** * \brief BMesh Begin Edit * |