From 771b0e354c3ce3fbce5f73c3ca42e8ce0465659a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 28 Feb 2014 21:10:32 +1100 Subject: Fix Crazyspace with proportional editing --- source/blender/editors/include/ED_util.h | 3 ++- source/blender/editors/transform/transform_conversions.c | 2 +- source/blender/editors/util/crazyspace.c | 9 +++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/include/ED_util.h b/source/blender/editors/include/ED_util.h index 9d1f88cfc89..f268595ff52 100644 --- a/source/blender/editors/include/ED_util.h +++ b/source/blender/editors/include/ED_util.h @@ -81,7 +81,8 @@ void undo_editmode_clear(void); /* crazyspace.c */ float (*crazyspace_get_mapped_editverts(struct Scene *scene, struct Object *obedit))[3]; -void crazyspace_set_quats_editmesh(struct BMEditMesh *em, float (*origcos)[3], float (*mappedcos)[3], float (*quats)[4]); +void crazyspace_set_quats_editmesh(struct BMEditMesh *em, float (*origcos)[3], float (*mappedcos)[3], float (*quats)[4], + const bool use_select); void crazyspace_set_quats_mesh(struct Mesh *me, float (*origcos)[3], float (*mappedcos)[3], float (*quats)[4]); int sculpt_get_first_deform_matrices(struct Scene *scene, struct Object *ob, float (**deformmats)[3][3], float (**deformcos)[3]); void crazyspace_build_sculpt(struct Scene *scene, struct Object *ob, float (**deformmats)[3][3], float (**deformcos)[3]); diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 31123827c4c..a8c6f476999 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2252,7 +2252,7 @@ static void createTransEditVerts(TransInfo *t) { mappedcos = crazyspace_get_mapped_editverts(t->scene, t->obedit); quats = MEM_mallocN(em->bm->totvert * sizeof(*quats), "crazy quats"); - crazyspace_set_quats_editmesh(em, defcos, mappedcos, quats); + crazyspace_set_quats_editmesh(em, defcos, mappedcos, quats, !propmode); if (mappedcos) MEM_freeN(mappedcos); } diff --git a/source/blender/editors/util/crazyspace.c b/source/blender/editors/util/crazyspace.c index 67b805943bf..86d2017e997 100644 --- a/source/blender/editors/util/crazyspace.c +++ b/source/blender/editors/util/crazyspace.c @@ -152,7 +152,8 @@ float (*crazyspace_get_mapped_editverts(Scene *scene, Object *obedit))[3] return vertexcos; } -void crazyspace_set_quats_editmesh(BMEditMesh *em, float (*origcos)[3], float (*mappedcos)[3], float (*quats)[4]) +void crazyspace_set_quats_editmesh(BMEditMesh *em, float (*origcos)[3], float (*mappedcos)[3], float (*quats)[4], + const bool use_select) { BMFace *f; BMIter iter; @@ -172,8 +173,12 @@ void crazyspace_set_quats_editmesh(BMEditMesh *em, float (*origcos)[3], float (* l_iter = l_first = BM_FACE_FIRST_LOOP(f); do { - if (!BM_elem_flag_test(l_iter->v, BM_ELEM_SELECT) || BM_elem_flag_test(l_iter->v, BM_ELEM_HIDDEN)) + if (BM_elem_flag_test(l_iter->v, BM_ELEM_HIDDEN) || + BM_elem_flag_test(l_iter->v, BM_ELEM_TAG) || + (use_select && !BM_elem_flag_test(l_iter->v, BM_ELEM_SELECT))) + { continue; + } if (!BM_elem_flag_test(l_iter->v, BM_ELEM_TAG)) { const float *co_prev, *co_curr, *co_next; /* orig */ -- cgit v1.2.3