Revert "Revert "Adjust snap source drawing when adding multiple snap points""
This reverts commit 77df32548b
.
This commit is contained in:
parent
25fa6c74b9
commit
c7f9a782aa
Notes:
blender-bot
2023-02-14 03:31:57 +01:00
Referenced by commit b8bf40ed4b
, Revert "Revert "Revert "Adjust snap source drawing when adding multiple snap points"""
|
@ -414,13 +414,37 @@ void ED_view3d_cursor_snap_draw_util(RegionView3D *rv3d,
|
|||
}
|
||||
|
||||
if (loc_prev) {
|
||||
/* Draw an "X" indicating where the previous snap point is.
|
||||
* This is useful for indicating perpendicular snap. */
|
||||
|
||||
/* v1, v2, v3 and v4 indicate the coordinates of the ends of the "X". */
|
||||
float vx[3], vy[3], v1[3], v2[3], v3[3], v4[4];
|
||||
|
||||
/* Multiply by 0.75f so that the final size of the "X" is close to that of
|
||||
* the circle.
|
||||
* (A closer value is 0.7071f, but we don't need to be exact here). */
|
||||
float x_size = 0.75f * radius * ED_view3d_pixel_size(rv3d, loc_prev);
|
||||
|
||||
mul_v3_v3fl(vx, view_inv[0], x_size);
|
||||
mul_v3_v3fl(vy, view_inv[1], x_size);
|
||||
|
||||
add_v3_v3v3(v1, vx, vy);
|
||||
sub_v3_v3v3(v2, vx, vy);
|
||||
negate_v3_v3(v3, v1);
|
||||
negate_v3_v3(v4, v2);
|
||||
|
||||
add_v3_v3(v1, loc_prev);
|
||||
add_v3_v3(v2, loc_prev);
|
||||
add_v3_v3(v3, loc_prev);
|
||||
add_v3_v3(v4, loc_prev);
|
||||
|
||||
immUniformColor4ubv(color_line);
|
||||
imm_drawX(loc_prev, x_size, view_inv, pos);
|
||||
immBegin(GPU_PRIM_LINES, 4);
|
||||
immVertex3fv(pos, v3);
|
||||
immVertex3fv(pos, v1);
|
||||
immVertex3fv(pos, v4);
|
||||
immVertex3fv(pos, v2);
|
||||
immEnd();
|
||||
|
||||
if (loc_curr && (snap_elem_type & SCE_SNAP_MODE_EDGE_PERPENDICULAR)) {
|
||||
/* Dashed line. */
|
||||
|
|
|
@ -237,12 +237,44 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
|
|||
}
|
||||
|
||||
if (t->modifiers & MOD_EDIT_SNAP_SOURCE) {
|
||||
/* Indicate the new snap source position. */
|
||||
|
||||
float snap_point[3];
|
||||
getSnapPoint(t, snap_point);
|
||||
|
||||
float vx[3], vy[3], v[3];
|
||||
float size_tmp = ED_view3d_pixel_size(rv3d, snap_point) * 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_drawX(
|
||||
snap_point, 0.75f * size * ED_view3d_pixel_size(rv3d, snap_point), view_inv, pos);
|
||||
|
||||
imm_drawcircball(snap_point, size_tmp, view_inv, pos);
|
||||
|
||||
immBegin(GPU_PRIM_LINES, 8);
|
||||
add_v3_v3v3(v, snap_point, vx);
|
||||
immVertex3fv(pos, v);
|
||||
madd_v3_v3fl(v, vx, size_fac);
|
||||
immVertex3fv(pos, v);
|
||||
|
||||
sub_v3_v3v3(v, snap_point, vx);
|
||||
immVertex3fv(pos, v);
|
||||
madd_v3_v3fl(v, vx, -size_fac);
|
||||
immVertex3fv(pos, v);
|
||||
|
||||
add_v3_v3v3(v, snap_point, vy);
|
||||
immVertex3fv(pos, v);
|
||||
madd_v3_v3fl(v, vy, size_fac);
|
||||
immVertex3fv(pos, v);
|
||||
|
||||
sub_v3_v3v3(v, snap_point, vy);
|
||||
immVertex3fv(pos, v);
|
||||
madd_v3_v3fl(v, vy, -size_fac);
|
||||
immVertex3fv(pos, v);
|
||||
|
||||
immEnd();
|
||||
}
|
||||
|
||||
immUnbindProgram();
|
||||
|
|
|
@ -93,8 +93,6 @@ void imm_draw_cylinder_fill_3d(
|
|||
uint pos, float base, float top, float height, int slices, int stacks);
|
||||
|
||||
void imm_drawcircball(const float cent[3], float rad, const float tmat[4][4], uint pos);
|
||||
void imm_drawX(const float cent[3], float size, const float tmat[4][4], uint pos);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -654,32 +654,3 @@ void imm_drawcircball(const float cent[3], float rad, const float tmat[4][4], ui
|
|||
}
|
||||
immEnd();
|
||||
}
|
||||
|
||||
void imm_drawX(const float cent[3], float size, const float tmat[4][4], uint pos)
|
||||
{
|
||||
/* Draw an "X" indicating where the previous snap point is.
|
||||
* This is useful for indicating perpendicular snap. */
|
||||
|
||||
/* v1, v2, v3 and v4 indicate the coordinates of the ends of the "X". */
|
||||
float vx[3], vy[3], v1[3], v2[3], v3[3], v4[4];
|
||||
|
||||
mul_v3_v3fl(vx, tmat[0], size);
|
||||
mul_v3_v3fl(vy, tmat[1], size);
|
||||
|
||||
add_v3_v3v3(v1, vx, vy);
|
||||
sub_v3_v3v3(v2, vx, vy);
|
||||
negate_v3_v3(v3, v1);
|
||||
negate_v3_v3(v4, v2);
|
||||
|
||||
add_v3_v3(v1, cent);
|
||||
add_v3_v3(v2, cent);
|
||||
add_v3_v3(v3, cent);
|
||||
add_v3_v3(v4, cent);
|
||||
|
||||
immBegin(GPU_PRIM_LINES, 4);
|
||||
immVertex3fv(pos, v3);
|
||||
immVertex3fv(pos, v1);
|
||||
immVertex3fv(pos, v4);
|
||||
immVertex3fv(pos, v2);
|
||||
immEnd();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue