Beispiel #1
0
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;
}
Beispiel #2
0
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;
}