35 void (*func)(
void *userData,
int index,
const float co[3],
const float no[3]),
47 const float(*vertexNos)[3];
57 func(userData, i, vertexCos[i], no);
63 func(userData, i, eve->
co, no);
77 const int orig = *index++;
81 func(userData, orig,
mv->co, no);
87 func(userData, i,
mv->co, no);
96 void (*func)(
void *userData,
int index,
const float v0co[3],
const float v1co[3]),
118 func(userData, i, eed->
v1->
co, eed->
v2->
co);
129 const int orig = *index++;
133 func(userData, orig,
mv[med->
v1].co,
mv[med->
v2].co);
138 func(userData, i,
mv[med->
v1].co,
mv[med->
v2].co);
145 void (*func)(
void *userData,
181 const float *no = lnors ? *lnors++ :
NULL;
182 func(userData, v_idx, f_idx, vertexCos ? vertexCos[v_idx] : eve->
co, no);
183 }
while ((l_iter = l_iter->
next) != l_first);
198 if (v_index || f_index) {
199 for (p_idx = 0; p_idx <
mesh->
totpoly; p_idx++, mp++) {
200 for (i = 0; i < mp->
totloop; i++, ml++) {
201 const int v_idx = v_index ? v_index[ml->
v] : ml->
v;
202 const int f_idx = f_index ? f_index[p_idx] : p_idx;
203 const float *no = lnors ? *lnors++ :
NULL;
207 func(userData, v_idx, f_idx,
mv[ml->
v].co, no);
212 for (p_idx = 0; p_idx <
mesh->
totpoly; p_idx++, mp++) {
213 for (i = 0; i < mp->
totloop; i++, ml++) {
214 const int v_idx = ml->
v;
215 const int f_idx = p_idx;
216 const float *no = lnors ? *lnors++ :
NULL;
217 func(userData, v_idx, f_idx,
mv[ml->
v].co, no);
226 void (*func)(
void *userData,
int index,
const float cent[3],
const float no[3]),
233 const float(*polyCos)[3];
234 const float(*polyNos)[3];
252 const float *no = polyNos[i];
253 func(userData, i, polyCos[i], no);
259 func(userData, i, polyCos[i], no);
273 const int orig = *index++;
283 func(userData, orig, cent, no);
294 func(userData, i, cent, no);
302 void (*func)(
void *userData,
int index,
const float cent[3],
const float no[3]),
318 const int orig = *index++;
323 for (
int j = 0; j < mp->
totloop; j++, ml++) {
337 for (
int j = 0; j < mp->
totloop; j++, ml++) {
357 const float UNUSED(no[3]))
373 memset(r_cos, 0,
sizeof(*r_cos) * totcos);
typedef float(TangentPoint)[2]
CustomData interface, see also DNA_customdata_types.h.
void * CustomData_get_layer(const struct CustomData *data, int type)
void BKE_editmesh_cache_ensure_poly_centers(struct BMEditMesh *em, struct EditMeshData *emd)
void BKE_editmesh_cache_ensure_vert_normals(struct BMEditMesh *em, struct EditMeshData *emd)
void BKE_editmesh_cache_ensure_poly_normals(struct BMEditMesh *em, struct EditMeshData *emd)
void BKE_mesh_calc_poly_center(const struct MPoly *mpoly, const struct MLoop *loopstart, const struct MVert *mvarray, float r_cent[3])
const float(* BKE_mesh_vertex_normals_ensure(const struct Mesh *mesh))[3]
void BKE_mesh_calc_poly_normal(const struct MPoly *mpoly, const struct MLoop *loopstart, const struct MVert *mvarray, float r_no[3])
@ MESH_FOREACH_USE_NORMAL
#define BLI_BITMAP_NEW(_num, _alloc_string)
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
MINLINE void copy_v3_v3(float r[3], const float a[3])
Read Guarded memory(de)allocation.
#define BM_FACE_FIRST_LOOP(p)
#define BM_elem_index_get(ele)
#define BM_ITER_MESH_INDEX(ele, iter, bm, itype, indexvar)
ATTR_WARN_UNUSED_RESULT BMesh * bm
void BM_mesh_elem_index_ensure(BMesh *bm, const char htype)
void(* MEM_freeN)(void *vmemh)
void BKE_mesh_foreach_mapped_vert_coords_get(Mesh *me_eval, float(*r_cos)[3], const int totcos)
void BKE_mesh_foreach_mapped_subdiv_face_center(Mesh *mesh, void(*func)(void *userData, int index, const float cent[3], const float no[3]), void *userData, MeshForeachFlag flag)
void BKE_mesh_foreach_mapped_loop(Mesh *mesh, void(*func)(void *userData, int vertex_index, int face_index, const float co[3], const float no[3]), void *userData, MeshForeachFlag flag)
void BKE_mesh_foreach_mapped_vert(Mesh *mesh, void(*func)(void *userData, int index, const float co[3], const float no[3]), void *userData, MeshForeachFlag flag)
struct MappedVCosData MappedVCosData
static void get_vertexcos__mapFunc(void *user_data, int index, const float co[3], const float UNUSED(no[3]))
void BKE_mesh_foreach_mapped_face_center(Mesh *mesh, void(*func)(void *userData, int index, const float cent[3], const float no[3]), void *userData, MeshForeachFlag flag)
void BKE_mesh_foreach_mapped_edge(Mesh *mesh, const int tot_edges, void(*func)(void *userData, int index, const float v0co[3], const float v1co[3]), void *userData)
float const (* polyNos)[3]
const float(* polyCos)[3]
float const (* vertexNos)[3]
const float(* vertexCos)[3]
BLI_bitmap * vertex_visit
struct EditMeshData * edit_data
uint32_t * subsurf_face_dot_tags
struct BMEditMesh * edit_mesh