Cleanup: use early return in view3d iterator callbacks

This commit is contained in:
2021-06-21 12:49:16 +10:00
parent 5df6b4004c
commit b45cee1aaf

View File

@@ -150,10 +150,11 @@ static void mesh_foreachScreenVert__mapFunc(void *userData,
{ {
foreachScreenVert_userData *data = userData; foreachScreenVert_userData *data = userData;
BMVert *eve = BM_vert_at_index(data->vc.em->bm, index); BMVert *eve = BM_vert_at_index(data->vc.em->bm, index);
if (UNLIKELY(BM_elem_flag_test(eve, BM_ELEM_HIDDEN))) {
return;
}
if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) {
float screen_co[2]; float screen_co[2];
if (ED_view3d_project_float_object(data->vc.region, co, screen_co, data->clip_flag) != if (ED_view3d_project_float_object(data->vc.region, co, screen_co, data->clip_flag) !=
V3D_PROJ_RET_OK) { V3D_PROJ_RET_OK) {
return; return;
@@ -161,7 +162,6 @@ static void mesh_foreachScreenVert__mapFunc(void *userData,
data->func(data->userData, eve, screen_co, index); data->func(data->userData, eve, screen_co, index);
} }
}
void mesh_foreachScreenVert( void mesh_foreachScreenVert(
ViewContext *vc, ViewContext *vc,
@@ -198,8 +198,10 @@ static void mesh_foreachScreenEdge__mapFunc(void *userData,
{ {
foreachScreenEdge_userData *data = userData; foreachScreenEdge_userData *data = userData;
BMEdge *eed = BM_edge_at_index(data->vc.em->bm, index); BMEdge *eed = BM_edge_at_index(data->vc.em->bm, index);
if (UNLIKELY(BM_elem_flag_test(eed, BM_ELEM_HIDDEN))) {
return;
}
if (!BM_elem_flag_test(eed, BM_ELEM_HIDDEN)) {
float screen_co_a[2]; float screen_co_a[2];
float screen_co_b[2]; float screen_co_b[2];
eV3DProjTest clip_flag_nowin = data->clip_flag & ~V3D_PROJ_TEST_CLIP_WIN; eV3DProjTest clip_flag_nowin = data->clip_flag & ~V3D_PROJ_TEST_CLIP_WIN;
@@ -221,7 +223,6 @@ static void mesh_foreachScreenEdge__mapFunc(void *userData,
data->func(data->userData, eed, screen_co_a, screen_co_b, index); data->func(data->userData, eed, screen_co_a, screen_co_b, index);
} }
}
void mesh_foreachScreenEdge(ViewContext *vc, void mesh_foreachScreenEdge(ViewContext *vc,
void (*func)(void *userData, void (*func)(void *userData,
@@ -271,10 +272,12 @@ static void mesh_foreachScreenEdge_clip_bb_segment__mapFunc(void *userData,
{ {
foreachScreenEdge_userData *data = userData; foreachScreenEdge_userData *data = userData;
BMEdge *eed = BM_edge_at_index(data->vc.em->bm, index); BMEdge *eed = BM_edge_at_index(data->vc.em->bm, index);
if (UNLIKELY(BM_elem_flag_test(eed, BM_ELEM_HIDDEN))) {
return;
}
BLI_assert(data->clip_flag & V3D_PROJ_TEST_CLIP_BB); BLI_assert(data->clip_flag & V3D_PROJ_TEST_CLIP_BB);
if (!BM_elem_flag_test(eed, BM_ELEM_HIDDEN)) {
float v0co_clip[3]; float v0co_clip[3];
float v1co_clip[3]; float v1co_clip[3];
@@ -306,7 +309,6 @@ static void mesh_foreachScreenEdge_clip_bb_segment__mapFunc(void *userData,
data->func(data->userData, eed, screen_co_a, screen_co_b, index); data->func(data->userData, eed, screen_co_a, screen_co_b, index);
} }
}
/** /**
* A version of #mesh_foreachScreenEdge that clips the segment when * A version of #mesh_foreachScreenEdge that clips the segment when
@@ -359,15 +361,18 @@ static void mesh_foreachScreenFace__mapFunc(void *userData,
{ {
foreachScreenFace_userData *data = userData; foreachScreenFace_userData *data = userData;
BMFace *efa = BM_face_at_index(data->vc.em->bm, index); BMFace *efa = BM_face_at_index(data->vc.em->bm, index);
if (UNLIKELY(BM_elem_flag_test(efa, BM_ELEM_HIDDEN))) {
return;
}
if (!BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
float screen_co[2]; float screen_co[2];
if (ED_view3d_project_float_object(data->vc.region, cent, screen_co, data->clip_flag) == if (ED_view3d_project_float_object(data->vc.region, cent, screen_co, data->clip_flag) !=
V3D_PROJ_RET_OK) { V3D_PROJ_RET_OK) {
return;
}
data->func(data->userData, efa, screen_co, index); data->func(data->userData, efa, screen_co, index);
} }
}
}
void mesh_foreachScreenFace( void mesh_foreachScreenFace(
ViewContext *vc, ViewContext *vc,