From dd1c12e4d0ee75ad5360bf7ba59db92b82e28b51 Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Sat, 17 Feb 2024 10:17:02 -0300 Subject: [PATCH] Fix: 'V3D_SNAPCURSOR_OCCLUSION_ALWAYS_TRUE' flag not working The name `use_occlusion_test` was misleading and led to errors. If this variable is false, objects will be considered to always be occluders. Not a serious problem, since the flag is not being used. --- .../editors/transform/transform_snap_object.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/transform/transform_snap_object.cc b/source/blender/editors/transform/transform_snap_object.cc index 9f5e6256d09..5ee6ff4d218 100644 --- a/source/blender/editors/transform/transform_snap_object.cc +++ b/source/blender/editors/transform/transform_snap_object.cc @@ -1270,9 +1270,10 @@ eSnapMode ED_transform_snap_object_project_view3d_ex(SnapObjectContext *sctx, eSnapMode retval = SCE_SNAP_TO_NONE; float ray_depth_max = BVH_RAYCAST_DIST_MAX; - bool use_occlusion_test = params->use_occlusion_test && !XRAY_ENABLED(v3d); + const bool is_allways_occluded = !params->use_occlusion_test; + bool use_occlusion_plane = is_allways_occluded || !XRAY_ENABLED(v3d); - if (use_occlusion_test || (snap_to_flag & SCE_SNAP_TO_FACE)) { + if (use_occlusion_plane || (snap_to_flag & SCE_SNAP_TO_FACE)) { const RegionView3D *rv3d = static_cast(region->regiondata); float3 ray_end; ED_view3d_win_to_ray_clipped_ex(depsgraph, @@ -1293,7 +1294,7 @@ eSnapMode ED_transform_snap_object_project_view3d_ex(SnapObjectContext *sctx, } else { snap_to_flag &= ~SCE_SNAP_TO_FACE; - use_occlusion_test = false; + use_occlusion_plane = false; } } } @@ -1312,7 +1313,7 @@ eSnapMode ED_transform_snap_object_project_view3d_ex(SnapObjectContext *sctx, prev_co, dist_px ? square_f(*dist_px) : FLT_MAX, nullptr, - use_occlusion_test)) + use_occlusion_plane)) { return retval; } @@ -1351,7 +1352,7 @@ eSnapMode ED_transform_snap_object_project_view3d_ex(SnapObjectContext *sctx, } } - if (use_occlusion_test || (snap_to_flag & SCE_SNAP_TO_FACE)) { + if (use_occlusion_plane || (snap_to_flag & SCE_SNAP_TO_FACE)) { has_hit = raycastObjects(sctx); if (has_hit) { @@ -1385,7 +1386,7 @@ eSnapMode ED_transform_snap_object_project_view3d_ex(SnapObjectContext *sctx, /* Remove what has already been computed. */ sctx->runtime.snap_to_flag &= ~(SCE_SNAP_TO_FACE | SCE_SNAP_INDIVIDUAL_NEAREST); - if (use_occlusion_test && has_hit && + if (use_occlusion_plane && has_hit && /* By convention we only snap to the original elements of a curve. */ sctx->ret.ob->type != OB_CURVES_LEGACY) {