Commit: 90f36fc50e1376e8575a379768cdd25a5882aa1b
Author: Germano Cavalcante
Date:   Fri Feb 3 17:16:25 2023 -0300
Branches: master
https://developer.blender.org/rB90f36fc50e1376e8575a379768cdd25a5882aa1b

Fix (unreported): snap to object origin not respecting clipping planes

There was an incorrect conversion for local clip planes although the
coordinates used are in world positions.

===================================================================

M       source/blender/editors/transform/transform_snap_object.cc

===================================================================

diff --git a/source/blender/editors/transform/transform_snap_object.cc 
b/source/blender/editors/transform/transform_snap_object.cc
index ec41c2dd0dd..e81e37ef745 100644
--- a/source/blender/editors/transform/transform_snap_object.cc
+++ b/source/blender/editors/transform/transform_snap_object.cc
@@ -2390,31 +2390,26 @@ static eSnapMode snap_object_center(const 
SnapObjectContext *sctx,
   }
 
   /* for now only vertex supported */
-  if (sctx->runtime.snap_to_flag & SCE_SNAP_MODE_VERTEX) {
-    DistProjectedAABBPrecalc neasrest_precalc;
-    dist_squared_to_projected_aabb_precalc(
-        &neasrest_precalc, sctx->runtime.pmat, sctx->runtime.win_size, 
sctx->runtime.mval);
+  if ((sctx->runtime.snap_to_flag & SCE_SNAP_MODE_VERTEX) == 0) {
+    return retval;
+  }
 
-    float tobmat[4][4], clip_planes_local[MAX_CLIPPLANE_LEN][4];
-    transpose_m4_m4(tobmat, obmat);
-    for (int i = sctx->runtime.clip_plane_len; i--;) {
-      mul_v4_m4v4(clip_planes_local[i], tobmat, sctx->runtime.clip_plane[i]);
-    }
-
-    bool is_persp = sctx->runtime.view_proj == VIEW_PROJ_PERSP;
-    float dist_px_sq = square_f(*dist_px);
-    float co[3];
-    copy_v3_v3(co, obmat[3]);
-    if (test_projected_vert_dist(&neasrest_precalc,
-                                 clip_planes_local,
-                                 sctx->runtime.clip_plane_len,
-                                 is_persp,
-                                 co,
-                                 &dist_px_sq,
-                                 r_loc)) {
-      *dist_px = sqrtf(dist_px_sq);
-      retval = SCE_SNAP_MODE_VERTEX;
-    }
+  DistProjectedAABBPrecalc neasrest_precalc;
+  dist_squared_to_projected_aabb_precalc(
+      &neasrest_precalc, sctx->runtime.pmat, sctx->runtime.win_size, 
sctx->runtime.mval);
+
+  bool is_persp = sctx->runtime.view_proj == VIEW_PROJ_PERSP;
+  float dist_px_sq = square_f(*dist_px);
+
+  if (test_projected_vert_dist(&neasrest_precalc,
+                               sctx->runtime.clip_plane,
+                               sctx->runtime.clip_plane_len,
+                               is_persp,
+                               obmat[3],
+                               &dist_px_sq,
+                               r_loc)) {
+    *dist_px = sqrtf(dist_px_sq);
+    retval = SCE_SNAP_MODE_VERTEX;
   }
 
   if (retval) {

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to