diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-01-18 09:35:42 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-01-18 10:01:50 +0300 |
commit | 44c1a018f4135d32a93446f14e07d4d4aeef7f88 (patch) | |
tree | 5764b5b6dc027b01f772506cb350827b672273dd /source | |
parent | 4ef0654449e9cf9d033b9902e1c45e36f2b99c3c (diff) |
Cleanup: move UvNearestHit.ob assignment in find nearest functions
This makes it possible to pass multiple hit arguments.
Also rename 'hit_final' to 'hit', since there are no longer a local
'hit' variable defined in these functions.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/uvedit/uvedit_intern.h | 12 | ||||
-rw-r--r-- | source/blender/editors/uvedit/uvedit_select.c | 42 |
2 files changed, 24 insertions, 30 deletions
diff --git a/source/blender/editors/uvedit/uvedit_intern.h b/source/blender/editors/uvedit/uvedit_intern.h index 6fef7ebcf22..45d65e7070e 100644 --- a/source/blender/editors/uvedit/uvedit_intern.h +++ b/source/blender/editors/uvedit/uvedit_intern.h @@ -75,33 +75,33 @@ bool uv_find_nearest_vert(struct Scene *scene, struct Object *obedit, const float co[2], const float penalty_dist, - struct UvNearestHit *hit_final); + struct UvNearestHit *hit); bool uv_find_nearest_vert_multi(struct Scene *scene, struct Object **objects, const uint objects_len, const float co[2], const float penalty_dist, - struct UvNearestHit *hit_final); + struct UvNearestHit *hit); bool uv_find_nearest_edge(struct Scene *scene, struct Object *obedit, const float co[2], - struct UvNearestHit *hit_final); + struct UvNearestHit *hit); bool uv_find_nearest_edge_multi(struct Scene *scene, struct Object **objects, const uint objects_len, const float co[2], - struct UvNearestHit *hit_final); + struct UvNearestHit *hit); bool uv_find_nearest_face(struct Scene *scene, struct Object *obedit, const float co[2], - struct UvNearestHit *hit_final); + struct UvNearestHit *hit); bool uv_find_nearest_face_multi(struct Scene *scene, struct Object **objects, const uint objects_len, const float co[2], - struct UvNearestHit *hit_final); + struct UvNearestHit *hit); BMLoop *uv_find_nearest_loop_from_vert(struct Scene *scene, struct Object *obedit, diff --git a/source/blender/editors/uvedit/uvedit_select.c b/source/blender/editors/uvedit/uvedit_select.c index 067c4df927c..1cbd2553879 100644 --- a/source/blender/editors/uvedit/uvedit_select.c +++ b/source/blender/editors/uvedit/uvedit_select.c @@ -695,6 +695,7 @@ bool uv_find_nearest_edge(Scene *scene, Object *obedit, const float co[2], UvNea const float dist_test_sq = len_squared_v2(delta); if (dist_test_sq < hit->dist_sq) { + hit->ob = obedit; hit->efa = efa; hit->l = l; @@ -707,17 +708,13 @@ bool uv_find_nearest_edge(Scene *scene, Object *obedit, const float co[2], UvNea return found; } -bool uv_find_nearest_edge_multi(Scene *scene, - Object **objects, - const uint objects_len, - const float co[2], - UvNearestHit *hit_final) +bool uv_find_nearest_edge_multi( + Scene *scene, Object **objects, const uint objects_len, const float co[2], UvNearestHit *hit) { bool found = false; for (uint ob_index = 0; ob_index < objects_len; ob_index++) { Object *obedit = objects[ob_index]; - if (uv_find_nearest_edge(scene, obedit, co, hit_final)) { - hit_final->ob = obedit; + if (uv_find_nearest_edge(scene, obedit, co, hit)) { found = true; } } @@ -750,6 +747,7 @@ bool uv_find_nearest_face(Scene *scene, Object *obedit, const float co[2], UvNea const float dist_test_sq = len_squared_v2(delta); if (dist_test_sq < hit->dist_sq) { + hit->ob = obedit; hit->efa = efa; hit->dist_sq = dist_test_sq; found = true; @@ -758,17 +756,13 @@ bool uv_find_nearest_face(Scene *scene, Object *obedit, const float co[2], UvNea return found; } -bool uv_find_nearest_face_multi(Scene *scene, - Object **objects, - const uint objects_len, - const float co[2], - UvNearestHit *hit_final) +bool uv_find_nearest_face_multi( + Scene *scene, Object **objects, const uint objects_len, const float co[2], UvNearestHit *hit) { bool found = false; for (uint ob_index = 0; ob_index < objects_len; ob_index++) { Object *obedit = objects[ob_index]; - if (uv_find_nearest_face(scene, obedit, co, hit_final)) { - hit_final->ob = obedit; + if (uv_find_nearest_face(scene, obedit, co, hit)) { found = true; } } @@ -830,8 +824,9 @@ bool uv_find_nearest_vert( hit->dist_sq = dist_test_sq; - hit->l = l; + hit->ob = obedit; hit->efa = efa; + hit->l = l; found = true; } } @@ -845,13 +840,12 @@ bool uv_find_nearest_vert_multi(Scene *scene, const uint objects_len, float const co[2], const float penalty_dist, - UvNearestHit *hit_final) + UvNearestHit *hit) { bool found = false; for (uint ob_index = 0; ob_index < objects_len; ob_index++) { Object *obedit = objects[ob_index]; - if (uv_find_nearest_vert(scene, obedit, co, penalty_dist, hit_final)) { - hit_final->ob = obedit; + if (uv_find_nearest_vert(scene, obedit, co, penalty_dist, hit)) { found = true; } } @@ -1298,7 +1292,7 @@ static int uv_select_edgering( static void uv_select_linked_multi(Scene *scene, Object **objects, const uint objects_len, - UvNearestHit *hit_final, + UvNearestHit *hit, const bool extend, bool deselect, const bool toggle, @@ -1306,12 +1300,12 @@ static void uv_select_linked_multi(Scene *scene, { const bool uv_sync_select = (scene->toolsettings->uv_flag & UV_SYNC_SELECTION); - /* loop over objects, or just use hit_final->ob */ + /* loop over objects, or just use hit->ob */ for (uint ob_index = 0; ob_index < objects_len; ob_index++) { - if (hit_final && ob_index != 0) { + if (hit && ob_index != 0) { break; } - Object *obedit = hit_final ? hit_final->ob : objects[ob_index]; + Object *obedit = hit ? hit->ob : objects[ob_index]; BMFace *efa; BMLoop *l; @@ -1342,7 +1336,7 @@ static void uv_select_linked_multi(Scene *scene, stack = MEM_mallocN(sizeof(*stack) * (em->bm->totface + 1), "UvLinkStack"); flag = MEM_callocN(sizeof(*flag) * em->bm->totface, "UvLinkFlag"); - if (hit_final == NULL) { + if (hit == NULL) { /* Use existing selection */ BM_ITER_MESH_INDEX (efa, &iter, em->bm, BM_FACES_OF_MESH, a) { if (uvedit_face_visible_test(scene, efa)) { @@ -1399,7 +1393,7 @@ static void uv_select_linked_multi(Scene *scene, } else { BM_ITER_MESH_INDEX (efa, &iter, em->bm, BM_FACES_OF_MESH, a) { - if (efa == hit_final->efa) { + if (efa == hit->efa) { stack[stacksize] = a; stacksize++; flag[a] = 1; |