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:
authorCampbell Barton <ideasman42@gmail.com>2019-08-02 15:53:27 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-08-02 16:01:19 +0300
commit5cf6d7e2b0af67e29e52a0b8649129f31cb20e53 (patch)
tree33ebba52ae8a3a2df4886acc369c812827736c27 /source/blender/editors/space_view3d/view3d_select.c
parentd8c610536624da48ade2967253d6ab2c30062073 (diff)
Fix edge selection ignoring clipping in wire-frame display
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_select.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 0fd76b2d6fd..de13bcbc6be 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -848,11 +848,14 @@ static bool do_lasso_select_mesh(ViewContext *vc,
vc->obedit->runtime.select_id, SCE_SELECT_EDGE) :
0,
};
- mesh_foreachScreenEdge(
- vc, do_lasso_select_mesh__doSelectEdge_pass0, &data_for_edge, V3D_PROJ_TEST_CLIP_NEAR);
+
+ const eV3DProjTest clip_flag = V3D_PROJ_TEST_CLIP_NEAR |
+ (use_zbuf ? 0 : V3D_PROJ_TEST_CLIP_BB);
+ mesh_foreachScreenEdge_clip_bb_segment(
+ vc, do_lasso_select_mesh__doSelectEdge_pass0, &data_for_edge, clip_flag);
if (data.is_done == false) {
- mesh_foreachScreenEdge(
- vc, do_lasso_select_mesh__doSelectEdge_pass1, &data_for_edge, V3D_PROJ_TEST_CLIP_NEAR);
+ mesh_foreachScreenEdge_clip_bb_segment(
+ vc, do_lasso_select_mesh__doSelectEdge_pass1, &data_for_edge, clip_flag);
}
}
@@ -2824,11 +2827,14 @@ static bool do_mesh_box_select(ViewContext *vc,
vc->obedit->runtime.select_id, SCE_SELECT_EDGE) :
0,
};
- mesh_foreachScreenEdge(
- vc, do_mesh_box_select__doSelectEdge_pass0, &cb_data, V3D_PROJ_TEST_CLIP_NEAR);
+
+ const eV3DProjTest clip_flag = V3D_PROJ_TEST_CLIP_NEAR |
+ (use_zbuf ? 0 : V3D_PROJ_TEST_CLIP_BB);
+ mesh_foreachScreenEdge_clip_bb_segment(
+ vc, do_mesh_box_select__doSelectEdge_pass0, &cb_data, clip_flag);
if (data.is_done == false) {
- mesh_foreachScreenEdge(
- vc, do_mesh_box_select__doSelectEdge_pass1, &cb_data, V3D_PROJ_TEST_CLIP_NEAR);
+ mesh_foreachScreenEdge_clip_bb_segment(
+ vc, do_mesh_box_select__doSelectEdge_pass1, &cb_data, clip_flag);
}
}
@@ -3410,7 +3416,8 @@ static bool mesh_circle_select(ViewContext *vc,
}
}
else {
- mesh_foreachScreenEdge(vc, mesh_circle_doSelectEdge, &data, V3D_PROJ_TEST_CLIP_NEAR);
+ mesh_foreachScreenEdge_clip_bb_segment(
+ vc, mesh_circle_doSelectEdge, &data, V3D_PROJ_TEST_CLIP_NEAR | V3D_PROJ_TEST_CLIP_BB);
}
}