Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGermano Cavalcante <germano.costa@ig.com.br>2021-11-17 20:54:14 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2021-11-18 19:42:36 +0300
commit77df32548b9f377a834b54d0b740a6a51bb2f0a5 (patch)
tree88c9adba987a194e1f59f1e22210c684d4839c6b
parent5e6fdaa07fff907e02b36813ccde0702bad4fb4d (diff)
Revert "Adjust snap source drawing when adding multiple snap points"
This reverts commit cb3ba68ec4470a170905a2dc9ea64b8fa1f8ace3.
-rw-r--r--source/blender/editors/space_view3d/view3d_cursor_snap.c26
-rw-r--r--source/blender/editors/transform/transform_snap.c36
-rw-r--r--source/blender/gpu/GPU_immediate_util.h2
-rw-r--r--source/blender/gpu/intern/gpu_immediate_util.c29
4 files changed, 34 insertions, 59 deletions
diff --git a/source/blender/editors/space_view3d/view3d_cursor_snap.c b/source/blender/editors/space_view3d/view3d_cursor_snap.c
index ac80a70011a..961b0bd6862 100644
--- a/source/blender/editors/space_view3d/view3d_cursor_snap.c
+++ b/source/blender/editors/space_view3d/view3d_cursor_snap.c
@@ -414,37 +414,13 @@ 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);
- immBegin(GPU_PRIM_LINES, 4);
- immVertex3fv(pos, v3);
- immVertex3fv(pos, v1);
- immVertex3fv(pos, v4);
- immVertex3fv(pos, v2);
- immEnd();
+ imm_drawX(loc_prev, x_size, view_inv, pos);
if (loc_curr && (snap_elem_type & SCE_SNAP_MODE_EDGE_PERPENDICULAR)) {
/* Dashed line. */
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index 8ed0a1f2ea8..f52061f8910 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -237,44 +237,12 @@ 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_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();
+ imm_drawX(
+ snap_point, 0.75f * size * ED_view3d_pixel_size(rv3d, snap_point), view_inv, pos);
}
immUnbindProgram();
diff --git a/source/blender/gpu/GPU_immediate_util.h b/source/blender/gpu/GPU_immediate_util.h
index 047c3d3da00..5b14b139662 100644
--- a/source/blender/gpu/GPU_immediate_util.h
+++ b/source/blender/gpu/GPU_immediate_util.h
@@ -93,6 +93,8 @@ 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
diff --git a/source/blender/gpu/intern/gpu_immediate_util.c b/source/blender/gpu/intern/gpu_immediate_util.c
index df18b89bd67..2dd23fa46ae 100644
--- a/source/blender/gpu/intern/gpu_immediate_util.c
+++ b/source/blender/gpu/intern/gpu_immediate_util.c
@@ -654,3 +654,32 @@ 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();
+}