diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-01-10 18:38:30 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-01-10 18:38:30 +0400 |
commit | e56844e98b5ab2332de301c9f85efdf9c2478558 (patch) | |
tree | 7121a4a6666da1206f29bc30b837d05f98d5ebdf /source | |
parent | 127b5423d6203d521acb2b96b7de5534e8dbe79a (diff) |
simple speedup for view3d numeric panel - dont loop on verts or edges if none are selected.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_buttons.c | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c index 4ca0284d0e0..ec716284bf3 100644 --- a/source/blender/editors/space_view3d/view3d_buttons.c +++ b/source/blender/editors/space_view3d/view3d_buttons.c @@ -184,21 +184,21 @@ static void v3d_editvertex_buts(uiLayout *layout, View3D *v3d, Object *ob, float const int cd_edge_bweight_offset = CustomData_get_offset(&bm->edata, CD_BWEIGHT); const int cd_edge_crease_offset = CustomData_get_offset(&bm->edata, CD_CREASE); - BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) { - if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) { - MVertSkin *vs; - - evedef = eve; - tot++; - add_v3_v3(&median[LOC_X], eve->co); - - /* TODO cd_vert_bweight_offset */ - (void)cd_vert_bweight_offset; - - if (cd_vert_skin_offset != -1) { - vs = BM_ELEM_CD_GET_VOID_P(eve, cd_vert_skin_offset); - add_v2_v2(&median[M_SKIN_X], vs->radius); /* Third val not used currently. */ - totskinradius++; + if (bm->totvertsel) { + BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) { + if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) { + evedef = eve; + tot++; + add_v3_v3(&median[LOC_X], eve->co); + + /* TODO cd_vert_bweight_offset */ + (void)cd_vert_bweight_offset; + + if (cd_vert_skin_offset != -1) { + MVertSkin *vs = BM_ELEM_CD_GET_VOID_P(eve, cd_vert_skin_offset); + add_v2_v2(&median[M_SKIN_X], vs->radius); /* Third val not used currently. */ + totskinradius++; + } } } } @@ -206,17 +206,19 @@ static void v3d_editvertex_buts(uiLayout *layout, View3D *v3d, Object *ob, float if ((cd_edge_bweight_offset != -1) || (cd_edge_crease_offset != -1)) { - BM_ITER_MESH (eed, &iter, bm, BM_EDGES_OF_MESH) { - if (BM_elem_flag_test(eed, BM_ELEM_SELECT)) { - if (cd_edge_bweight_offset != -1) { - median[M_WEIGHT] += BM_ELEM_CD_GET_FLOAT(eed, cd_edge_bweight_offset); - } + if (bm->totedgesel) { + BM_ITER_MESH (eed, &iter, bm, BM_EDGES_OF_MESH) { + if (BM_elem_flag_test(eed, BM_ELEM_SELECT)) { + if (cd_edge_bweight_offset != -1) { + median[M_WEIGHT] += BM_ELEM_CD_GET_FLOAT(eed, cd_edge_bweight_offset); + } - if (cd_edge_crease_offset != -1) { - median[M_CREASE] += BM_ELEM_CD_GET_FLOAT(eed, cd_edge_crease_offset); - } + if (cd_edge_crease_offset != -1) { + median[M_CREASE] += BM_ELEM_CD_GET_FLOAT(eed, cd_edge_crease_offset); + } - totedgedata++; + totedgedata++; + } } } } |