Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-04-11 15:22:19 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-04-11 15:22:19 +0400
commita8226cbcb24b225670e0f30d79eb180c8b858b1e (patch)
treeaf305cb1391f7293a5edb25c88a277ee70e81165 /source/blender/bmesh/intern/bmesh_mesh_conv.c
parent9e663017d8c4140a16cd747077f33217dc19f35e (diff)
code cleanup: mselect conversion when creating a bmesh from a bmesh was overly verbose.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_mesh_conv.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_mesh_conv.c63
1 files changed, 23 insertions, 40 deletions
diff --git a/source/blender/bmesh/intern/bmesh_mesh_conv.c b/source/blender/bmesh/intern/bmesh_mesh_conv.c
index ca4e068b9a5..3db1a1141d8 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_conv.c
+++ b/source/blender/bmesh/intern/bmesh_mesh_conv.c
@@ -317,56 +317,39 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me, int set_key, int act_key_nr)
}
if (me->mselect && me->totselect != 0) {
- BMIter iter;
- BMVert *vertex;
- BMEdge *edge;
- BMFace *face;
- BMVert **vertex_array = MEM_callocN(sizeof(BMVert *) * bm->totvert,
- "Selection Conversion Vertex Pointer Array");
+
+ BMVert **vert_array = MEM_callocN(sizeof(BMVert *) * bm->totvert,
+ "Selection Conversion Vertex Pointer Array");
BMEdge **edge_array = MEM_callocN(sizeof(BMEdge *) * bm->totedge,
"Selection Conversion Edge Pointer Array");
BMFace **face_array = MEM_callocN(sizeof(BMFace *) * bm->totface,
"Selection Conversion Face Pointer Array");
- for (i = 0, vertex = BM_iter_new(&iter, bm, BM_VERTS_OF_MESH, NULL);
- vertex;
- i++, vertex = BM_iter_step(&iter))
- {
- vertex_array[i] = vertex;
- }
+ BMIter iter;
+ BMVert *vert;
+ BMEdge *edge;
+ BMFace *face;
+ MSelect *msel;
- for (i = 0, edge = BM_iter_new(&iter, bm, BM_EDGES_OF_MESH, NULL);
- edge;
- i++, edge = BM_iter_step(&iter))
- {
- edge_array[i] = edge;
- }
-
- for (i = 0, face = BM_iter_new(&iter, bm, BM_FACES_OF_MESH, NULL);
- face;
- i++, face = BM_iter_step(&iter))
- {
- face_array[i] = face;
- }
+ BM_ITER_INDEX(vert, &iter, bm, BM_VERTS_OF_MESH, NULL, i) { vert_array[i] = vert; }
+ BM_ITER_INDEX(edge, &iter, bm, BM_EDGES_OF_MESH, NULL, i) { edge_array[i] = edge; }
+ BM_ITER_INDEX(face, &iter, bm, BM_FACES_OF_MESH, NULL, i) { face_array[i] = face; }
- if (me->mselect) {
- for (i = 0; i < me->totselect; i++) {
- if (me->mselect[i].type == ME_VSEL) {
- BM_select_history_store(bm, (BMElem *)vertex_array[me->mselect[i].index]);
- }
- else if (me->mselect[i].type == ME_ESEL) {
- BM_select_history_store(bm, (BMElem *)edge_array[me->mselect[i].index]);
- }
- else if (me->mselect[i].type == ME_FSEL) {
- BM_select_history_store(bm, (BMElem *)face_array[me->mselect[i].index]);
- }
+ for (i = 0, msel = me->mselect; i < me->totselect; i++, msel++) {
+ switch (msel->type) {
+ case ME_VSEL:
+ BM_select_history_store(bm, (BMElem *)vert_array[msel->index]);
+ break;
+ case ME_ESEL:
+ BM_select_history_store(bm, (BMElem *)edge_array[msel->index]);
+ break;
+ case ME_FSEL:
+ BM_select_history_store(bm, (BMElem *)face_array[msel->index]);
+ break;
}
}
- else {
- me->totselect = 0;
- }
- MEM_freeN(vertex_array);
+ MEM_freeN(vert_array);
MEM_freeN(edge_array);
MEM_freeN(face_array);
}