96 return ((
Mesh *)ob->
data)->edit_mesh;
108 const int looptris_tot_prev_alloc = em->
looptris ?
118 ((looptris_tot_prev_alloc >= looptris_tot) &&
119 (looptris_tot_prev_alloc <= looptris_tot * 2))) {
126 looptris =
MEM_mallocN(
sizeof(*looptris) * looptris_tot, __func__);
187 const float UNUSED(no_f[3]),
188 const short UNUSED(no_s[3]))
216 data.totvert = em->bm->totvert;
225 *r_vert_len = em->bm->totvert;
236 bool *r_is_alloc))[3]
247 else if ((em->mesh_eval_final !=
NULL) &&
typedef float(TangentPoint)[2]
struct Mesh * editbmesh_get_eval_cage(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *, struct BMEditMesh *em, const struct CustomData_MeshMasks *dataMask)
bool CustomData_has_layer(const struct CustomData *data, int type)
const CustomData_MeshMasks CD_MASK_BAREMESH
void BKE_id_free(struct Main *bmain, void *idv)
void BKE_mesh_foreach_mapped_vert(struct Mesh *mesh, void(*func)(void *userData, int index, const float co[3], const float no_f[3], const short no_s[3]), void *userData, MeshForeachFlag flag)
const struct MLoopTri * BKE_mesh_runtime_looptri_ensure(struct Mesh *mesh)
bool BKE_mesh_wrapper_minmax(const struct Mesh *me, float min[3], float max[3])
General operations, lookup, etc. for blender objects.
void BKE_boundbox_init_from_minmax(struct BoundBox *bb, const float min[3], const float max[3])
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
#define BLI_BITMAP_NEW(_tot, _alloc_string)
MINLINE int poly_to_tri_count(const int poly_count, const int corner_count)
MINLINE void copy_v3_v3(float r[3], const float a[3])
#define INIT_MINMAX(min, max)
struct Depsgraph Depsgraph
These structs are the foundation for all linked lists in the library system.
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
BMesh * BM_mesh_copy(BMesh *bm_old)
ATTR_WARN_UNUSED_RESULT BMesh * bm
void BM_lnorspace_update(BMesh *bm)
void BM_mesh_free(BMesh *bm)
BMesh Free Mesh.
float(* BM_mesh_vert_coords_alloc(BMesh *bm, int *r_vert_len))[3]
void BM_edges_sharp_from_angle_set(BMesh *bm, const float split_angle)
void BM_mesh_calc_tessellation(BMesh *bm, BMLoop *(*looptris)[3], int *r_looptris_tot)
BM_mesh_calc_tessellation get the looptris and its number from a certain bmesh.
const Depsgraph * depsgraph
void BKE_editmesh_ensure_autosmooth(BMEditMesh *em, Mesh *me)
static void editmesh_tessface_calc_intern(BMEditMesh *em)
void BKE_editmesh_free_derivedmesh(BMEditMesh *em)
void BKE_editmesh_looptri_calc(BMEditMesh *em)
BoundBox * BKE_editmesh_cage_boundbox_get(BMEditMesh *em)
void BKE_editmesh_lnorspace_update(BMEditMesh *em, Mesh *me)
static void cage_mapped_verts_callback(void *userData, int index, const float co[3], const float UNUSED(no_f[3]), const short UNUSED(no_s[3]))
void BKE_editmesh_free(BMEditMesh *em)
const float(* BKE_editmesh_vert_coords_when_deformed(struct Depsgraph *depsgraph, BMEditMesh *em, struct Scene *scene, Object *ob, int *r_vert_len, bool *r_is_alloc))[3]
BMEditMesh * BKE_editmesh_copy(BMEditMesh *em)
float(* BKE_editmesh_vert_coords_alloc_orco(BMEditMesh *em, int *r_vert_len))[3]
float(* BKE_editmesh_vert_coords_alloc(struct Depsgraph *depsgraph, BMEditMesh *em, struct Scene *scene, Object *ob, int *r_vert_len))[3]
BMEditMesh * BKE_editmesh_from_object(Object *ob)
Return the BMEditMesh for a given object.
BMEditMesh * BKE_editmesh_create(BMesh *bm, const bool do_tessellate)
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)
struct Mesh * mesh_eval_final
struct Mesh * mesh_eval_cage
struct BoundBox * bb_cage
struct BMLoop *(* looptris)[3]
BLI_bitmap * visit_bitmap
const float(* vertexCos)[3]
struct EditMeshData * edit_data