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:
authormano-wii <germano.costa@ig.com.br>2019-05-29 07:02:04 +0300
committermano-wii <germano.costa@ig.com.br>2019-05-29 07:02:04 +0300
commit2d8584c15ff76ada379553c235a8ec38f6681645 (patch)
treed75bb76305adb8713121960878e5eeae034f2126 /source/blender/editors/transform
parentd97c841eb88a1d918538fd92c512ed48c8126770 (diff)
Fix T65027: Snap 3D cursor on hidden faces doesn't work in Edit Mode.
I'm not very fond of adding new types of bvhtrees. But this is probably the most efficient solution.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r--source/blender/editors/transform/transform_snap_object.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c
index 829365367ee..f81d01ca754 100644
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@ -337,6 +337,7 @@ static bool raycastMesh(SnapObjectContext *sctx,
Mesh *me,
float obmat[4][4],
const unsigned int ob_index,
+ bool use_hide,
/* read/write args */
float *ray_depth,
/* return args */
@@ -419,7 +420,12 @@ static bool raycastMesh(SnapObjectContext *sctx,
}
if (treedata->tree == NULL) {
- BKE_bvhtree_from_mesh_get(treedata, me, BVHTREE_FROM_LOOPTRI, 4);
+ if (use_hide) {
+ BKE_bvhtree_from_mesh_get(treedata, me, BVHTREE_FROM_LOOPTRI_NO_HIDDEN, 4);
+ }
+ else {
+ BKE_bvhtree_from_mesh_get(treedata, me, BVHTREE_FROM_LOOPTRI, 4);
+ }
/* required for snapping with occlusion. */
treedata->edge = me->medge;
@@ -723,6 +729,7 @@ static bool raycastObj(SnapObjectContext *sctx,
}
Mesh *me = ob->data;
+ bool use_hide = false;
if (BKE_object_is_in_editmode(ob)) {
BMEditMesh *em = BKE_editmesh_from_object(ob);
if (use_obedit) {
@@ -742,6 +749,7 @@ static bool raycastObj(SnapObjectContext *sctx,
}
else if (em->mesh_eval_final) {
me = em->mesh_eval_final;
+ use_hide = true;
}
}
retval = raycastMesh(sctx,
@@ -751,6 +759,7 @@ static bool raycastObj(SnapObjectContext *sctx,
me,
obmat,
ob_index,
+ use_hide,
ray_depth,
r_loc,
r_no,