80 const int verts_mask_count)
89 const int default_verts_len_alloc = verts_mask_count;
90 const int default_faces_len_alloc =
min_ii(
bm.totface, verts_mask_count);
123 if (!verts_mask[
i]) {
127 if (e_iter !=
nullptr) {
132 if (e_iter->
l !=
nullptr) {
136 if (l_iter->
v ==
v) {
139 }
while ((l_iter = l_iter->
radial_next) != l_first);
163 }
while ((l_iter = l_iter->
next) != l_first);
176 const int verts_mask_count)
183 int face_tag_loop_len = 0;
192 enum Side { SIDE_A = (1 << 0), SIDE_B = (1 << 1) } side_flag = Side(0);
198 side_flag = Side(side_flag | (verts_mask[j].test() ? SIDE_A : SIDE_B));
199 if (
UNLIKELY(side_flag == (SIDE_A | SIDE_B))) {
201 face_tag_loop_len += f->
len;
204 }
while ((l_iter = l_iter->
next) != l_first);
221 }
while ((l_iter = l_iter->
next) != l_first);
225 if (bmpinfo->
verts.
size() < verts_mask_count) {
246 const int verts_group_count)
256 int face_tag_loop_len = 0;
274 if (
UNLIKELY((group_iter != group_test) || (group_iter == -1))) {
276 face_tag_loop_len += f->
len;
282 }
while ((l_iter = l_iter->
next) != l_first);
299 }
while ((l_iter = l_iter->
next) != l_first);
303 if (bmpinfo->
verts.
size() < verts_group_count) {
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
Read Guarded memory(de)allocation.
#define BM_DISK_EDGE_NEXT(e, v)
#define BM_FACE_FIRST_LOOP(p)
#define BM_elem_index_get(ele)
#define BM_elem_index_set(ele, index)
#define BM_ITER_MESH_INDEX(ele, iter, bm, itype, indexvar)
void BM_mesh_elem_index_ensure(BMesh *bm, const char htype)
BLI_INLINE bool partial_elem_face_ensure(BMPartialUpdate *bmpinfo, MutableBitSpan faces_tag, BMFace *f)
BMPartialUpdate * BM_mesh_partial_create_from_verts_group_single(BMesh &bm, const BMPartialUpdate_Params ¶ms, const BitSpan verts_mask, const int verts_mask_count)
BLI_INLINE bool partial_elem_vert_ensure(BMPartialUpdate *bmpinfo, MutableBitSpan verts_tag, BMVert *v)
BMPartialUpdate * BM_mesh_partial_create_from_verts_group_multi(BMesh &bm, const BMPartialUpdate_Params ¶ms, const Span< int > verts_group, const int verts_group_count)
void BM_mesh_partial_destroy(BMPartialUpdate *bmpinfo)
BMPartialUpdate * BM_mesh_partial_create_from_verts(BMesh &bm, const BMPartialUpdate_Params ¶ms, const BitSpan verts_mask, const int verts_mask_count)
BMLoop * BM_vert_find_first_loop(BMVert *v)
ATTR_WARN_UNUSED_RESULT const BMVert * v
void append(const T &value)
void reserve(const int64_t min_capacity)
void resize(const int64_t new_size_in_bits, const bool value=false)
struct BMLoop * radial_next
blender::Vector< BMFace * > faces
blender::Vector< BMVert * > verts
BMPartialUpdate_Params params