86 runtime->
looptris = blender::dna::shallow_zero_initialize();
129 (looptris_len < mesh->runtime.looptris.len_alloc * 2) || (totpoly == 0)) {
180 if (looptri !=
nullptr) {
200 for (
int i = 0; i < looptri_num; i++) {
201 r_verttri[i].
tri[0] = mloop[looptri[i].
tri[0]].
v;
202 r_verttri[i].
tri[1] = mloop[looptri[i].
tri[1]].
v;
203 r_verttri[i].
tri[2] = mloop[looptri[i].
tri[2]].
v;
220 if (edit_data ==
nullptr) {
276 if (!vert_normals_were_dirty) {
279 if (!poly_normals_were_dirty) {
317 const bool do_verbose =
true;
318 const bool do_fixes =
false;
324 printf(
"MESH: %s\n", me_eval->
id.
name + 2);
void bvhcache_free(struct BVHCache *bvh_cache)
void BKE_id_free(struct Main *bmain, void *idv)
bool BKE_mesh_poly_normals_are_dirty(const struct Mesh *mesh)
void BKE_mesh_poly_normals_clear_dirty(struct Mesh *mesh)
bool BKE_mesh_validate_arrays(struct Mesh *me, struct MVert *mverts, unsigned int totvert, struct MEdge *medges, unsigned int totedge, struct MFace *mfaces, unsigned int totface, struct MLoop *mloops, unsigned int totloop, struct MPoly *mpolys, unsigned int totpoly, struct MDeformVert *dverts, bool do_verbose, bool do_fixes, bool *r_change)
void BKE_mesh_recalc_looptri(const struct MLoop *mloop, const struct MPoly *mpoly, const struct MVert *mvert, int totloop, int totpoly, struct MLoopTri *mlooptri)
void BKE_mesh_clear_derived_normals(struct Mesh *mesh)
bool BKE_mesh_validate_all_customdata(struct CustomData *vdata, uint totvert, struct CustomData *edata, uint totedge, struct CustomData *ldata, uint totloop, struct CustomData *pdata, uint totpoly, bool check_meshmask, bool do_verbose, bool do_fixes, bool *r_change)
bool BKE_mesh_vertex_normals_are_dirty(const struct Mesh *mesh)
void BKE_mesh_vertex_normals_clear_dirty(struct Mesh *mesh)
void BKE_mesh_normals_tag_dirty(struct Mesh *mesh)
void BKE_shrinkwrap_discard_boundary_data(struct Mesh *mesh)
void BKE_subdiv_ccg_destroy(SubdivCCG *subdiv_ccg)
MINLINE int poly_to_tri_count(int poly_count, int corner_count)
void BLI_mutex_end(ThreadMutex *mutex)
void BLI_mutex_init(ThreadMutex *mutex)
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
pthread_mutex_t ThreadMutex
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
Provides wrapper around system-specific atomic primitives, and some extensions (faked-atomic operatio...
ATOMIC_INLINE void * atomic_cas_ptr(void **v, void *old, void *_new)
SyclQueue void void size_t num_bytes void
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void(* MEM_freeN)(void *vmemh)
void(* BKE_mesh_batch_cache_free_cb)(Mesh *me)
bool BKE_mesh_runtime_is_valid(Mesh *me_eval)
static void mesh_ensure_looptri_data(Mesh *mesh)
void BKE_mesh_runtime_reset_on_copy(Mesh *mesh, const int UNUSED(flag))
const MLoopTri * BKE_mesh_runtime_looptri_ensure(const Mesh *mesh)
void BKE_mesh_tag_coords_changed_uniformly(Mesh *mesh)
void BKE_mesh_tag_coords_changed(Mesh *mesh)
void BKE_mesh_batch_cache_dirty_tag(Mesh *me, eMeshBatchDirtyMode mode)
void BKE_mesh_runtime_free_data(Mesh *mesh)
Free all data (and mutexes) inside the runtime of the given mesh.
static void mesh_runtime_free_mutexes(Mesh *mesh)
free the mutexes of the given mesh runtime.
void BKE_mesh_runtime_verttri_from_looptri(MVertTri *r_verttri, const MLoop *mloop, const MLoopTri *looptri, int looptri_num)
void BKE_mesh_runtime_clear_cache(Mesh *mesh)
This function clears runtime cache of the given mesh.
void BKE_mesh_runtime_clear_geometry(Mesh *mesh)
static void mesh_runtime_init_mutexes(Mesh *mesh)
Initialize the runtime mutexes of the given mesh.
void BKE_mesh_runtime_looptri_recalc(Mesh *mesh)
bool BKE_mesh_runtime_reset_edit_data(Mesh *mesh)
void BKE_mesh_runtime_init_data(Mesh *mesh)
Initialize the runtime of the given mesh.
int BKE_mesh_runtime_looptri_len(const Mesh *mesh)
bool BKE_mesh_runtime_clear_edit_data(Mesh *mesh)
void(* BKE_mesh_batch_cache_dirty_tag_cb)(Mesh *me, eMeshBatchDirtyMode mode)
void BKE_mesh_batch_cache_free(Mesh *me)
bool BKE_mesh_runtime_ensure_edit_data(struct Mesh *mesh)
void isolate_task(const Function &function)
float const (* polyNos)[3]
const float(* polyCos)[3]
float const (* vertexNos)[3]
const float(* vertexCos)[3]
struct MLoopTri * array_wip
struct EditMeshData * edit_data
uint32_t * subsurf_face_dot_tags
struct BVHCache * bvh_cache
struct SubdivCCG * subdiv_ccg
struct MLoopTri_Store looptris
struct ShrinkwrapBoundaryData * shrinkwrap_data
struct BMEditMesh * edit_mesh
struct MDeformVert * dvert