BMesh: slight speedup loop-of-verts iterator
This commit is contained in:
parent
3c0605c0ef
commit
ff0b24c4e2
|
@ -108,6 +108,7 @@ bool bmesh_edge_swapverts(BMEdge *e, BMVert *v_orig, BMVert *v_new)
|
|||
* - #bmesh_radial_append
|
||||
* - #bmesh_radial_loop_remove
|
||||
* - #bmesh_radial_facevert_count
|
||||
* - #bmesh_radial_facevert_check
|
||||
* - #bmesh_radial_faceloop_find_first
|
||||
* - #bmesh_radial_faceloop_find_next
|
||||
* - #bmesh_radial_validate
|
||||
|
@ -265,7 +266,7 @@ BMEdge *bmesh_disk_faceedge_find_first(const BMEdge *e, const BMVert *v)
|
|||
{
|
||||
const BMEdge *e_find = e;
|
||||
do {
|
||||
if (e_find->l && bmesh_radial_facevert_count(e_find->l, v)) {
|
||||
if (e_find->l && bmesh_radial_facevert_check(e_find->l, v)) {
|
||||
return (BMEdge *)e_find;
|
||||
}
|
||||
} while ((e_find = bmesh_disk_edge_next(e_find, v)) != e);
|
||||
|
@ -275,10 +276,10 @@ BMEdge *bmesh_disk_faceedge_find_first(const BMEdge *e, const BMVert *v)
|
|||
|
||||
BMEdge *bmesh_disk_faceedge_find_next(const BMEdge *e, const BMVert *v)
|
||||
{
|
||||
BMEdge *e_find = NULL;
|
||||
BMEdge *e_find;
|
||||
e_find = bmesh_disk_edge_next(e, v);
|
||||
do {
|
||||
if (e_find->l && bmesh_radial_facevert_count(e_find->l, v)) {
|
||||
if (e_find->l && bmesh_radial_facevert_check(e_find->l, v)) {
|
||||
return e_find;
|
||||
}
|
||||
} while ((e_find = bmesh_disk_edge_next(e_find, v)) != e);
|
||||
|
@ -455,6 +456,24 @@ int bmesh_radial_facevert_count(const BMLoop *l, const BMVert *v)
|
|||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief RADIAL CHECK FACE VERT
|
||||
*
|
||||
* Quicker check for ``bmesh_radial_facevert_count(...) != 0``
|
||||
*/
|
||||
bool bmesh_radial_facevert_check(const BMLoop *l, const BMVert *v)
|
||||
{
|
||||
const BMLoop *l_iter;
|
||||
l_iter = l;
|
||||
do {
|
||||
if (l_iter->v == v) {
|
||||
return true;
|
||||
}
|
||||
} while ((l_iter = l_iter->radial_next) != l);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*****loop cycle functions, e.g. loops surrounding a face**** */
|
||||
bool bmesh_loop_validate(BMFace *f)
|
||||
{
|
||||
|
|
|
@ -61,6 +61,7 @@ void bmesh_radial_loop_remove(BMLoop *l, BMEdge *e) ATTR_NONNULL(1);
|
|||
* just use member access l->radial_next, l->radial_prev now */
|
||||
|
||||
int bmesh_radial_facevert_count(const BMLoop *l, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
|
||||
bool bmesh_radial_facevert_check(const BMLoop *l, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
|
||||
BMLoop *bmesh_radial_faceloop_find_first(const BMLoop *l, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
|
||||
BMLoop *bmesh_radial_faceloop_find_next(const BMLoop *l, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
|
||||
BMLoop *bmesh_radial_faceloop_find_vert(const BMFace *f, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
|
||||
|
|
Loading…
Reference in New Issue