From 0cd6c1d502bcec9e41d9d8d9d67f79179ee3c71a Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Wed, 9 Jun 2021 09:32:50 -0300 Subject: Fix T88998: GPencil not projecting to the most front surface It was projecting from the stroke position. The behavior has changed in {rB5400be9ffee2}. --- source/blender/editors/gpencil/gpencil_utils.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'source') diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c index 04764587ebe..c9ef340b9d3 100644 --- a/source/blender/editors/gpencil/gpencil_utils.c +++ b/source/blender/editors/gpencil/gpencil_utils.c @@ -1276,6 +1276,7 @@ void ED_gpencil_stroke_reproject(Depsgraph *depsgraph, } else { /* Geometry - Snap to surfaces of visible geometry */ + float ray_start[3]; float ray_normal[3]; /* magic value for initial depth copied from the default * value of Python's Scene.ray_cast function @@ -1284,14 +1285,17 @@ void ED_gpencil_stroke_reproject(Depsgraph *depsgraph, float location[3] = {0.0f, 0.0f, 0.0f}; float normal[3] = {0.0f, 0.0f, 0.0f}; - ED_view3d_win_to_vector(region, xy, &ray_normal[0]); BLI_assert(gps->flag & GP_STROKE_3DSPACE); + BLI_assert(gsc->area && gsc->area->spacetype == SPACE_VIEW3D); + const View3D *v3d = gsc->area->spacedata.first; + ED_view3d_win_to_ray_clipped( + depsgraph, region, v3d, xy, &ray_start[0], &ray_normal[0], true); if (ED_transform_snap_object_project_ray(sctx, depsgraph, &(const struct SnapObjectParams){ .snap_select = SNAP_ALL, }, - &pt2.x, + &ray_start[0], &ray_normal[0], &depth, &location[0], -- cgit v1.2.3