Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/transform/transform.c
| Show First 20 Lines • Show All 6,450 Lines • ▼ Show 20 Lines | BM_ITER_ELEM (e, &iter_other, v, BM_EDGES_OF_VERT) { | ||||
| float dist_sq; | float dist_sq; | ||||
| int l_nr; | int l_nr; | ||||
| if (BM_elem_flag_test(e, BM_ELEM_SELECT)) { | if (BM_elem_flag_test(e, BM_ELEM_SELECT)) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| /* This test is only relevant if object is not wire-drawn! See [#32068]. */ | /* This test is only relevant if object is not wire-drawn! See [#32068]. */ | ||||
| if (use_occlude_geometry && | bool is_visible = !use_occlude_geometry || | ||||
| !BMBVH_EdgeVisible(bmbvh, e, t->depsgraph, ar, v3d, tc->obedit)) { | BMBVH_EdgeVisible(bmbvh, e, t->depsgraph, ar, v3d, tc->obedit); | ||||
| if (!is_visible && !use_calc_direction) { | |||||
| continue; | continue; | ||||
| } | } | ||||
| if (sv->v_side[1]) { | if (sv->v_side[1]) { | ||||
| ED_view3d_project_float_v3_m4(ar, sv->v_side[1]->co, sco_b, projectMat); | ED_view3d_project_float_v3_m4(ar, sv->v_side[1]->co, sco_b, projectMat); | ||||
| } | } | ||||
| else { | else { | ||||
| add_v3_v3v3(sco_b, v->co, sv->dir_side[1]); | add_v3_v3v3(sco_b, v->co, sv->dir_side[1]); | ||||
| ED_view3d_project_float_v3_m4(ar, sco_b, sco_b, projectMat); | ED_view3d_project_float_v3_m4(ar, sco_b, sco_b, projectMat); | ||||
| } | } | ||||
| if (sv->v_side[0]) { | if (sv->v_side[0]) { | ||||
| ED_view3d_project_float_v3_m4(ar, sv->v_side[0]->co, sco_a, projectMat); | ED_view3d_project_float_v3_m4(ar, sv->v_side[0]->co, sco_a, projectMat); | ||||
| } | } | ||||
| else { | else { | ||||
| add_v3_v3v3(sco_a, v->co, sv->dir_side[0]); | add_v3_v3v3(sco_a, v->co, sv->dir_side[0]); | ||||
| ED_view3d_project_float_v3_m4(ar, sco_a, sco_a, projectMat); | ED_view3d_project_float_v3_m4(ar, sco_a, sco_a, projectMat); | ||||
| } | } | ||||
| /* global direction */ | /* global direction */ | ||||
| dist_sq = dist_squared_to_line_segment_v2(mval, sco_b, sco_a); | dist_sq = dist_squared_to_line_segment_v2(mval, sco_b, sco_a); | ||||
| if (is_visible) { | |||||
| if ((dist_best_sq == -1.0f) || | if ((dist_best_sq == -1.0f) || | ||||
| /* intentionally use 2d size on 3d vector */ | /* intentionally use 2d size on 3d vector */ | ||||
| (dist_sq < dist_best_sq && (len_squared_v2v2(sco_b, sco_a) > 0.1f))) { | (dist_sq < dist_best_sq && (len_squared_v2v2(sco_b, sco_a) > 0.1f))) { | ||||
| dist_best_sq = dist_sq; | dist_best_sq = dist_sq; | ||||
| sub_v3_v3v3(mval_dir, sco_b, sco_a); | sub_v3_v3v3(mval_dir, sco_b, sco_a); | ||||
| } | } | ||||
| } | |||||
| if (use_calc_direction) { | if (use_calc_direction) { | ||||
| /* per loop direction */ | /* per loop direction */ | ||||
| l_nr = sv->loop_nr; | l_nr = sv->loop_nr; | ||||
| if (loop_maxdist[l_nr] == -1.0f || dist_sq < loop_maxdist[l_nr]) { | if (loop_maxdist[l_nr] == -1.0f || dist_sq < loop_maxdist[l_nr]) { | ||||
| loop_maxdist[l_nr] = dist_sq; | loop_maxdist[l_nr] = dist_sq; | ||||
| sub_v3_v3v3(loop_dir[l_nr], sco_b, sco_a); | sub_v3_v3v3(loop_dir[l_nr], sco_b, sco_a); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 2,679 Lines • Show Last 20 Lines | |||||