From cf967f8e089d9efacd00e1e1e025ded45b1c08fc Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Tue, 6 Jun 2023 15:30:18 -0300 Subject: [PATCH] Transform: Remove Indication of the Transformed Snap Base This commit removes the transformed `Snap Base` symbol (white target) and displays only the untransformed `Snap Base` symbol (X) when confirming the Snap Base Edit operation. The usefulness of the white target icon representing the transformed `Snap Base` is debatable since it represents the snap target itself (orange circle) during the Move operation or the direction between the pivot and the snap target during the Rotation operation. Having multiple symbols on the screen can clutter the interface and may not be intuitive. Therefore, further discussion is required. Ref. #108669 --- .../editors/transform/transform_snap.cc | 74 +------------------ 1 file changed, 4 insertions(+), 70 deletions(-) diff --git a/source/blender/editors/transform/transform_snap.cc b/source/blender/editors/transform/transform_snap.cc index d7422baefa2..0eaeea6982e 100644 --- a/source/blender/editors/transform/transform_snap.cc +++ b/source/blender/editors/transform/transform_snap.cc @@ -167,17 +167,6 @@ static bool doForceIncrementSnap(const TransInfo *t) return !transformModeUseSnap(t); } -static void snap_source_transformed(TransInfo *t, float r_vec[3]) -{ - float mat[4][4]; - unit_m4(mat); - if (t->mode_info->transform_matrix_fn) { - t->mode_info->transform_matrix_fn(t, mat); - } - - mul_v3_m4v3(r_vec, mat, t->tsnap.snap_source); -} - void drawSnapping(const bContext *C, TransInfo *t) { uchar col[4], selectedCol[4], activeCol[4]; @@ -187,13 +176,10 @@ void drawSnapping(const bContext *C, TransInfo *t) const bool draw_source = (t->spacetype == SPACE_VIEW3D) && (t->tsnap.status & SNAP_SOURCE_FOUND) && - (t->tsnap.mode & SCE_SNAP_MODE_EDGE_PERPENDICULAR); + ((t->tsnap.mode & SCE_SNAP_MODE_EDGE_PERPENDICULAR) || + t->tsnap.snap_source_fn == nullptr); - bool draw_source_transformed = (t->spacetype == SPACE_VIEW3D) && - (t->tsnap.status & SNAP_SOURCE_FOUND) && - !(t->modifiers & MOD_EDIT_SNAP_SOURCE); - - if (!(draw_source || draw_source_transformed || validSnap(t))) { + if (!(draw_source || validSnap(t))) { return; } @@ -220,7 +206,7 @@ void drawSnapping(const bContext *C, TransInfo *t) GPU_depth_test(GPU_DEPTH_NONE); RegionView3D *rv3d = (RegionView3D *)t->region->regiondata; - if (draw_source_transformed || !BLI_listbase_is_empty(&t->tsnap.points)) { + if (!BLI_listbase_is_empty(&t->tsnap.points)) { /* Draw snap points. */ float size = 2.0f * UI_GetThemeValuef(TH_VERTEX_SIZE); @@ -232,11 +218,6 @@ void drawSnapping(const bContext *C, TransInfo *t) immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR); - float snap_source_tranformed[3]; - if (draw_source_transformed) { - snap_source_transformed(t, snap_source_tranformed); - } - if (!BLI_listbase_is_empty(&t->tsnap.points)) { LISTBASE_FOREACH (TransSnapPoint *, p, &t->tsnap.points) { if (p == t->tsnap.selectedPoint) { @@ -247,53 +228,6 @@ void drawSnapping(const bContext *C, TransInfo *t) } imm_drawcircball(p->co, ED_view3d_pixel_size(rv3d, p->co) * size, view_inv, pos); } - - if (t->modifiers & MOD_EDIT_SNAP_SOURCE) { - /* Indicate the new snap source position. */ - getSnapPoint(t, snap_source_tranformed); - draw_source_transformed = true; - } - } - - if (draw_source_transformed && - !compare_v3v3(snap_source_tranformed, t->tsnap.snap_target, FLT_EPSILON)) - { - float view_inv[4][4]; - copy_m4_m4(view_inv, rv3d->viewinv); - - float vx[3], vy[3], v[3]; - float size_tmp = ED_view3d_pixel_size(rv3d, snap_source_tranformed) * size; - float size_fac = 0.5f; - - mul_v3_v3fl(vx, view_inv[0], size_tmp); - mul_v3_v3fl(vy, view_inv[1], size_tmp); - - immUniformColor4ubv(col); - - imm_drawcircball(snap_source_tranformed, size_tmp, view_inv, pos); - - immBegin(GPU_PRIM_LINES, 8); - add_v3_v3v3(v, snap_source_tranformed, vx); - immVertex3fv(pos, v); - madd_v3_v3fl(v, vx, size_fac); - immVertex3fv(pos, v); - - sub_v3_v3v3(v, snap_source_tranformed, vx); - immVertex3fv(pos, v); - madd_v3_v3fl(v, vx, -size_fac); - immVertex3fv(pos, v); - - add_v3_v3v3(v, snap_source_tranformed, vy); - immVertex3fv(pos, v); - madd_v3_v3fl(v, vy, size_fac); - immVertex3fv(pos, v); - - sub_v3_v3v3(v, snap_source_tranformed, vy); - immVertex3fv(pos, v); - madd_v3_v3fl(v, vy, -size_fac); - immVertex3fv(pos, v); - - immEnd(); } immUnbindProgram();