diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-07-22 22:01:27 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-07-22 22:01:27 +0400 |
commit | e590abfb87aa3ee14e6946350d55d8960e70dab7 (patch) | |
tree | 5ce5e11cc14f64d7ebcdd737e34b8aac34190070 /source/blender/blenkernel/intern/editderivedmesh.c | |
parent | 90fdaa82195c2eb9b6412ffa8b4f4f70e16a35dc (diff) |
optimization:
- halve the number of allocs in layerInterp_mdeformvert list creation.
- use direct loop access in emDM_copyLoopArray
Diffstat (limited to 'source/blender/blenkernel/intern/editderivedmesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/editderivedmesh.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c index 9f873cafa55..b853d2b87a2 100644 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@ -1420,18 +1420,20 @@ static void emDM_copyLoopArray(DerivedMesh *dm, MLoop *r_loop) { EditDerivedBMesh *bmdm = (EditDerivedBMesh *)dm; BMesh *bm = bmdm->em->bm; - BMIter iter, liter; + BMIter iter; BMFace *efa; BMLoop *l; BM_mesh_elem_index_ensure(bm, BM_VERT | BM_EDGE); BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) { - BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { + BMLoop *l_iter, *l_first; + l_iter = l_first = BM_FACE_FIRST_LOOP(efa); + do { r_loop->v = BM_elem_index_get(l->v); r_loop->e = BM_elem_index_get(l->e); r_loop++; - } + } while ((l_iter = l_iter->next) != l_first); } } |