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
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user