BMEdge *bmesh_disk_faceedge_find_next(const BMEdge *e, const BMVert *v) { BMEdge *e_find = NULL; e_find = bmesh_disk_edge_next(e, v); do { if (e_find->l && bmesh_radial_facevert_count(e_find->l, v)) { return e_find; } } while ((e_find = bmesh_disk_edge_next(e_find, v)) != e); return (BMEdge *)e; }
BMEdge *bmesh_disk_faceedge_find_next(BMEdge *e, BMVert *v) { BMEdge *searchedge = NULL; searchedge = bmesh_disk_edge_next(e, v); do { if (searchedge->l && bmesh_radial_facevert_count(searchedge->l, v)) { return searchedge; } } while ((searchedge = bmesh_disk_edge_next(searchedge, v)) != e); return e; }
/** * \brief DISK COUNT FACE VERT * * Counts the number of loop users * for this vertex. Note that this is * equivalent to counting the number of * faces incident upon this vertex */ int bmesh_disk_facevert_count(const BMVert *v) { /* is there an edge on this vert at all */ int count = 0; if (v->e) { BMEdge *e_first, *e_iter; /* first, loop around edge */ e_first = e_iter = v->e; do { if (e_iter->l) { count += bmesh_radial_facevert_count(e_iter->l, v); } } while ((e_iter = bmesh_disk_edge_next(e_iter, v)) != e_first); } return count; }