diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-05-22 10:00:26 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-05-22 10:00:26 +0400 |
commit | aa0caa448eb192b61800130b86c86794f43832e7 (patch) | |
tree | 0003475b8091b3f9909876ecce2c9e02eeebcfae /source/blender/bmesh/intern/bmesh_edgeloop.c | |
parent | 2d19e97ee673f54989fe580c567e8cddd54e2468 (diff) |
utility bmesh functions, for edge loop creation, optionally pass array BM_edge_split_n() to get verts created.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_edgeloop.c')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_edgeloop.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/bmesh/intern/bmesh_edgeloop.c b/source/blender/bmesh/intern/bmesh_edgeloop.c index e095cfd1534..7ebefbb8d92 100644 --- a/source/blender/bmesh/intern/bmesh_edgeloop.c +++ b/source/blender/bmesh/intern/bmesh_edgeloop.c @@ -448,6 +448,7 @@ void BM_mesh_edgeloops_calc_order(BMesh *UNUSED(bm), ListBase *eloops, const boo /* -------------------------------------------------------------------- */ /* BM_edgeloop_*** functions */ +/* return new edgeloops */ BMEdgeLoopStore *BM_edgeloop_copy(BMEdgeLoopStore *el_store) { BMEdgeLoopStore *el_store_copy = MEM_mallocN(sizeof(*el_store), __func__); @@ -456,6 +457,22 @@ BMEdgeLoopStore *BM_edgeloop_copy(BMEdgeLoopStore *el_store) return el_store_copy; } +BMEdgeLoopStore *BM_edgeloop_from_verts(BMVert **v_arr, const int v_arr_tot, bool is_closed) +{ + BMEdgeLoopStore *el_store = MEM_callocN(sizeof(*el_store), __func__); + int i; + for (i = 0; i < v_arr_tot; i++) { + LinkData *node = MEM_callocN(sizeof(*node), __func__); + node->data = v_arr[i]; + BLI_addtail(&el_store->verts, node); + } + el_store->len = v_arr_tot; + if (is_closed) { + el_store->flag |= BM_EDGELOOP_IS_CLOSED; + } + return el_store; +} + void BM_edgeloop_free(BMEdgeLoopStore *el_store) { BLI_freelistN(&el_store->verts); |