24 this->
queue.push(vertex);
29 for (
const int vert :
verts) {
36 this->
queue.push(vertex);
41 for (
const int vert :
verts) {
48 this->
queue.push(vertex);
53 for (
const int vert :
verts) {
60 this->
queue.push(vertex);
66 this->
queue.push(vertex);
72 this->
queue.push(vertex);
89 while (!this->
queue.empty()) {
90 const int from_v = this->
queue.front();
94 faces, corner_verts, vert_to_face_map, hide_poly, from_v, neighbors))
100 if (!hide_vert.is_empty() && hide_vert[neighbor]) {
105 if (func(from_v, neighbor)) {
106 this->
queue.push(neighbor);
118 while (!this->
queue.empty()) {
128 for (
int i = neighbors.
coords.
size() - 1; i >= 0; i--) {
130 const int index_in_grid = neighbor.
y * key.
grid_size + neighbor.
x;
143 const bool is_duplicate = i >= num_unique;
144 if (func(from_v, neighbor, is_duplicate)) {
145 this->
queue.push(neighbor);
155 while (!this->
queue.empty()) {
170 if (func(from_v, neighbor)) {
171 this->
queue.push(neighbor);
CCGKey BKE_subdiv_ccg_key_top_level(const SubdivCCG &subdiv_ccg)
void BKE_subdiv_ccg_neighbor_coords_get(const SubdivCCG &subdiv_ccg, const SubdivCCGCoord &coord, bool include_duplicates, SubdivCCGNeighbors &r_neighbors)
#define BM_elem_index_get(ele)
#define BM_elem_flag_test(ele, hflag)
ATTR_WARN_UNUSED_RESULT BMesh * bm
BLI_INLINE BMVert * BM_vert_at_index(BMesh *bm, const int index)
GAttributeReader lookup(const StringRef attribute_id) const
GAttributeReader lookup_or_default(StringRef attribute_id, AttrDomain domain, eCustomDataType data_type, const void *default_value=nullptr) const
Span< BMVert * > vert_neighbors_get_bmesh(BMVert &vert, Vector< BMVert *, 64 > &r_neighbors)
Span< int > vert_neighbors_get_mesh(const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face, const Span< bool > hide_poly, const int vert, Vector< int > &r_neighbors)
static SubdivCCGCoord from_index(const CCGKey &key, int index)
blender::Vector< SubdivCCGCoord, 256 > coords
blender::BitGroupVector grid_hidden
std::queue< BMVert * > queue
void add_initial(BMVert *vertex)
void add_and_skip_initial(BMVert *vertex, int index)
void execute(Object &object, FunctionRef< bool(BMVert *from_v, BMVert *to_v)> func)
void execute(Object &object, const SubdivCCG &subdiv_ccg, FunctionRef< bool(SubdivCCGCoord from_v, SubdivCCGCoord to_v, bool is_duplicate)> func)
std::queue< SubdivCCGCoord > queue
void add_initial(SubdivCCGCoord vertex)
void add_and_skip_initial(SubdivCCGCoord vertex, int index)
void execute(Object &object, GroupedSpan< int > vert_to_face_map, FunctionRef< bool(int from_v, int to_v)> func)
void add_and_skip_initial(int vertex)
void add_initial(int vertex)