diff options
author | mano-wii <germano.costa@ig.com.br> | 2019-08-21 01:18:25 +0300 |
---|---|---|
committer | mano-wii <germano.costa@ig.com.br> | 2019-08-21 01:18:50 +0300 |
commit | dd08d68df835e54ccd1fdf24ae154e461faab685 (patch) | |
tree | 482d5148ed69275a85cffa441a9d68c348214233 /source/blender/editors/space_view3d/view3d_gizmo_ruler.c | |
parent | 2db09212fc7fb2506e7c582aedf08f94e3fff8d7 (diff) |
Transform: New Snap Option: Edge Perpendicular
Part of T66420
Option for snapping to the nearest point of a reference coordinate.
The patch also adds Edge Center and Perpendicular snaps to the ruler.
{F7675906}
Reviewers: campbellbarton, brecht
Reviewed By: campbellbarton
Differential Revision: https://developer.blender.org/D5543
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_gizmo_ruler.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_gizmo_ruler.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_ruler.c b/source/blender/editors/space_view3d/view3d_gizmo_ruler.c index 97a12c7100e..f4e3dc85447 100644 --- a/source/blender/editors/space_view3d/view3d_gizmo_ruler.c +++ b/source/blender/editors/space_view3d/view3d_gizmo_ruler.c @@ -343,6 +343,7 @@ static bool view3d_ruler_item_mousemove(RulerInfo *ruler_info, .use_object_edit_cage = true, }, mval_fl, + NULL, &dist_px, co, ray_normal)) { @@ -363,16 +364,31 @@ static bool view3d_ruler_item_mousemove(RulerInfo *ruler_info, } else if (do_snap) { const float mval_fl[2] = {UNPACK2(mval)}; + float *prev_point = NULL; + + if (inter->co_index != 1) { + if (ruler_item->flag & RULERITEM_USE_ANGLE) { + prev_point = ruler_item->co[1]; + } + else if (inter->co_index == 0) { + prev_point = ruler_item->co[2]; + } + else { + prev_point = ruler_item->co[0]; + } + } if (ED_transform_snap_object_project_view3d( ruler_info->snap_context, - (SCE_SNAP_MODE_VERTEX | SCE_SNAP_MODE_EDGE | SCE_SNAP_MODE_FACE), + (SCE_SNAP_MODE_VERTEX | SCE_SNAP_MODE_EDGE | SCE_SNAP_MODE_FACE | + SCE_SNAP_MODE_EDGE_MIDPOINT | SCE_SNAP_MODE_EDGE_PERPENDICULAR), &(const struct SnapObjectParams){ .snap_select = SNAP_ALL, .use_object_edit_cage = true, .use_occlusion_test = true, }, mval_fl, + prev_point, &dist_px, co, NULL)) { |