diff options
Diffstat (limited to 'source/blender/editors/util/ed_transverts.c')
-rw-r--r-- | source/blender/editors/util/ed_transverts.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/source/blender/editors/util/ed_transverts.c b/source/blender/editors/util/ed_transverts.c index b8efbad1ad9..b9e90670a4d 100644 --- a/source/blender/editors/util/ed_transverts.c +++ b/source/blender/editors/util/ed_transverts.c @@ -195,12 +195,12 @@ static void set_mapped_co(void *vuserdata, int index, const float co[3], const f } } -bool ED_transverts_check_obedit(Object *obedit) +bool ED_transverts_check_obedit(const Object *obedit) { return (ELEM(obedit->type, OB_ARMATURE, OB_LATTICE, OB_MESH, OB_SURF, OB_CURVE, OB_MBALL)); } -void ED_transverts_create_from_obedit(TransVertStore *tvs, Object *obedit, const int mode) +void ED_transverts_create_from_obedit(TransVertStore *tvs, const Object *obedit, const int mode) { Nurb *nu; BezTriple *bezt; @@ -214,7 +214,7 @@ void ED_transverts_create_from_obedit(TransVertStore *tvs, Object *obedit, const tvs->transverts_tot = 0; if (obedit->type == OB_MESH) { - BMEditMesh *em = BKE_editmesh_from_object(obedit); + BMEditMesh *em = BKE_editmesh_from_object((Object *)obedit); BMesh *bm = em->bm; BMIter iter; void *userdata[2] = {em, NULL}; @@ -312,10 +312,13 @@ void ED_transverts_create_from_obedit(TransVertStore *tvs, Object *obedit, const userdata[1] = tvs->transverts; } - struct Mesh *editmesh_eval_cage = BKE_object_get_editmesh_eval_cage(obedit); - if (tvs->transverts && editmesh_eval_cage) { - BM_mesh_elem_table_ensure(bm, BM_VERT); - BKE_mesh_foreach_mapped_vert(editmesh_eval_cage, set_mapped_co, userdata, MESH_FOREACH_NOP); + if (mode & TM_CALC_MAPLOC) { + struct Mesh *editmesh_eval_cage = BKE_object_get_editmesh_eval_cage(obedit); + if (tvs->transverts && editmesh_eval_cage) { + BM_mesh_elem_table_ensure(bm, BM_VERT); + BKE_mesh_foreach_mapped_vert( + editmesh_eval_cage, set_mapped_co, userdata, MESH_FOREACH_NOP); + } } } else if (obedit->type == OB_ARMATURE) { |