From dfad9b0c09eed2de2c3bedd64691bf11f637725c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 2 Jun 2013 23:20:49 +0000 Subject: fix [#35555] Collada: export destroys mesh in some cases add arguments to calculate normals when converting to bmesh: BM_mesh_bm_from_me, DM_to_bmesh This gives some speedup to undo (which didnt need to re-calculate vertex normals), and array modifier which doesnt need to calculate face normals at all --- source/blender/bmesh/intern/bmesh_mesh_conv.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'source/blender/bmesh/intern/bmesh_mesh_conv.c') diff --git a/source/blender/bmesh/intern/bmesh_mesh_conv.c b/source/blender/bmesh/intern/bmesh_mesh_conv.c index 6d1db98f32e..9d330075a3a 100644 --- a/source/blender/bmesh/intern/bmesh_mesh_conv.c +++ b/source/blender/bmesh/intern/bmesh_mesh_conv.c @@ -185,7 +185,8 @@ static BMFace *bm_face_create_from_mpoly(MPoly *mp, MLoop *ml, * * \warning This function doesn't calculate face normals. */ -void BM_mesh_bm_from_me(BMesh *bm, Mesh *me, bool set_key, int act_key_nr) +void BM_mesh_bm_from_me(BMesh *bm, Mesh *me, + const bool calc_face_normal, const bool set_key, int act_key_nr) { MVert *mvert; MEdge *medge; @@ -397,6 +398,10 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me, bool set_key, int act_key_nr) /* Copy Custom Data */ CustomData_to_bmesh_block(&me->pdata, &bm->pdata, i, &f->head.data, true); + + if (calc_face_normal) { + BM_face_normal_update(f); + } } bm->elem_index_dirty &= ~BM_FACE; /* added in order, clear dirty flag */ -- cgit v1.2.3