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);
80 Mesh &mesh = *
static_cast<Mesh *
>(
object.data);
82 const Span<int> corner_verts = mesh.corner_verts();
85 const VArray hide_vert = *attributes.lookup_or_default<
bool>(
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()) {
156 BMVert *from_v = this->queue.front();
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)
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
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)
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)