109 (looptris_len < mesh->runtime.looptris.len_alloc * 2) || (totpoly == 0)) {
162 if (looptri !=
NULL) {
181 for (
int i = 0; i < looptri_num; i++) {
182 r_verttri[i].
tri[0] = mloop[looptri[i].
tri[0]].
v;
183 r_verttri[i].
tri[1] = mloop[looptri[i].
tri[1]].
v;
184 r_verttri[i].
tri[2] = mloop[looptri[i].
tri[2]].
v;
201 if (edit_data ==
NULL) {
286 const char *structname;
291 " dict(name='%s', struct='%s', type=%d, ptr='%p', elem=%d, length=%d),\n",
311 switch (me_eval->
type) {
313 tstr =
"DM_TYPE_CDDM";
316 tstr =
"DM_TYPE_CCGDM";
373 for (i = 0, layer =
data->layers; i < data->totlayer; i++, layer++) {
377 const char *structname;
380 printf(
" dict(name='%s', struct='%s', type=%d, ptr='%p', elem=%d, length=%d),\n",
384 (
const void *)layer->
data,
394 const bool do_verbose =
true;
395 const bool do_fixes =
false;
401 printf(
"MESH: %s\n", me_eval->
id.
name + 2);
void bvhcache_free(struct BVHCache *bvh_cache)
bool CustomData_has_layer(const struct CustomData *data, int type)
const char * CustomData_layertype_name(int type)
void * CustomData_get_layer(const struct CustomData *data, int type)
int CustomData_sizeof(int type)
void CustomData_file_write_info(int type, const char **r_struct_name, int *r_struct_num)
void BKE_id_free(struct Main *bmain, void *idv)
bool BKE_mesh_validate_all_customdata(struct CustomData *vdata, const uint totvert, struct CustomData *edata, const uint totedge, struct CustomData *ldata, const uint totloop, struct CustomData *pdata, const uint totpoly, const bool check_meshmask, const bool do_verbose, const 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)
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, const bool do_verbose, const bool do_fixes, bool *r_change)
void BKE_shrinkwrap_discard_boundary_data(struct Mesh *mesh)
void BKE_subdiv_ccg_destroy(SubdivCCG *subdiv_ccg)
A dynamically sized string ADT.
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
void BLI_dynstr_appendf(DynStr *__restrict ds, const char *__restrict format,...) ATTR_PRINTF_FORMAT(2
char * BLI_dynstr_get_cstring(DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr) ATTR_NONNULL()
MINLINE int poly_to_tri_count(const int poly_count, const 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.
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
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)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void(* MEM_freeN)(void *vmemh)
size_t(* MEM_allocN_len)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
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))
void BKE_mesh_runtime_debug_print_cdlayers(CustomData *data)
void BKE_mesh_runtime_reset(Mesh *mesh)
char * BKE_mesh_runtime_debug_info(Mesh *me_eval)
void BKE_mesh_runtime_debug_print(Mesh *me_eval)
void BKE_mesh_batch_cache_dirty_tag(Mesh *me, eMeshBatchDirtyMode mode)
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)
void BKE_mesh_runtime_clear_geometry(Mesh *mesh)
void BKE_mesh_runtime_looptri_recalc(Mesh *mesh)
bool BKE_mesh_runtime_reset_edit_data(Mesh *mesh)
static void mesh_runtime_debug_info_layers(DynStr *dynstr, CustomData *cd)
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)
const MLoopTri * BKE_mesh_runtime_looptri_ensure(Mesh *mesh)
void BKE_mesh_batch_cache_free(Mesh *me)
bool BKE_mesh_runtime_ensure_edit_data(struct Mesh *mesh)
float const (* polyNos)[3]
const float(* polyCos)[3]
float const (* vertexNos)[3]
const float(* vertexCos)[3]
struct MLoopTri * array_wip
struct EditMeshData * edit_data
struct BVHCache * bvh_cache
struct SubdivCCG * subdiv_ccg
struct MLoopTri_Store looptris
struct ShrinkwrapBoundaryData * shrinkwrap_data
struct BMEditMesh * edit_mesh
struct CustomData pdata ldata
struct MDeformVert * dvert
struct CustomData vdata edata fdata