diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-06-02 05:08:17 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-06-02 05:19:35 +0300 |
commit | f58e76119a4db19e4792b084c12225e3ce10c0a4 (patch) | |
tree | c07fef5d97563e5f7af6e8e4781398852679522f /source | |
parent | 4f3e686cad9b7774fd70c03d77d8eeb7d8249986 (diff) |
Fix T77239: snap 3D cursor in edit-mode
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c index 4397c0396eb..f2cdeacb13d 100644 --- a/source/blender/editors/transform/transform_snap_object.c +++ b/source/blender/editors/transform/transform_snap_object.c @@ -144,6 +144,17 @@ struct SnapObjectContext { /** \} */ /* -------------------------------------------------------------------- */ +/** \name Utilities + * \{ */ + +static bool editmesh_eval_final_is_bmesh(const BMEditMesh *em) +{ + return (em->mesh_eval_final->runtime.wrapper_type == ME_WRAPPER_TYPE_BMESH); +} + +/** \} */ + +/* -------------------------------------------------------------------- */ /** \name Snap Object Data * \{ */ @@ -974,7 +985,7 @@ static void raycast_obj_fn(SnapObjectContext *sctx, Mesh *me = ob->data; bool use_hide = false; if (BKE_object_is_in_editmode(ob)) { - if (use_obedit) { + if (use_obedit || editmesh_eval_final_is_bmesh(me->edit_mesh)) { /* Operators only update the editmesh looptris of the original mesh. */ BMEditMesh *em_orig = BKE_editmesh_from_object(DEG_get_original_object(ob)); retval = raycastEditMesh(sctx, @@ -2641,7 +2652,7 @@ static void sanp_obj_fn(SnapObjectContext *sctx, case OB_MESH: { Mesh *me = ob->data; if (BKE_object_is_in_editmode(ob)) { - if (use_obedit) { + if (use_obedit || editmesh_eval_final_is_bmesh(me->edit_mesh)) { /* Operators only update the editmesh looptris of the original mesh. */ BMEditMesh *em_orig = BKE_editmesh_from_object(DEG_get_original_object(ob)); retval = snapEditMesh(sctx, |