36 BMEditMesh *em = MEM_new<BMEditMesh>(__func__);
43 BMEditMesh *em_copy = MEM_new<BMEditMesh>(__func__);
66 return ((
Mesh *)ob->
data)->runtime->edit_mesh.get();
79 params.face_normals =
false;
142 if ((index >= 0 && index < data->totvert) && !
BLI_BITMAP_TEST(data->visit_bitmap, index)) {
162 data.positions_cage = positions_cage;
163 data.visit_bitmap = visit_bitmap;
169 return positions_cage;
181 if (mesh_cage && mesh_cage->
runtime->deformed_only) {
186 else if ((editmesh_eval_final !=
nullptr) &&
200 return vert_positions;
CustomData interface, see also DNA_customdata_types.h.
const CustomData_MeshMasks CD_MASK_BAREMESH
void BKE_mesh_foreach_mapped_vert(const Mesh *mesh, void(*func)(void *user_data, int index, const float co[3], const float no[3]), void *user_data, MeshForeachFlag flag)
blender::Span< blender::float3 > BKE_mesh_wrapper_vert_coords(const Mesh *mesh)
int BKE_mesh_wrapper_vert_len(const Mesh *mesh)
General operations, lookup, etc. for blender objects.
const Mesh * BKE_object_get_editmesh_eval_cage(const Object *object)
const Mesh * BKE_object_get_editmesh_eval_final(const Object *object)
#define BLI_BITMAP_NEW(_num, _alloc_string)
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
MINLINE int poly_to_tri_count(int poly_count, int corner_count)
MINLINE void copy_v3_v3(float r[3], const float a[3])
Object * DEG_get_evaluated_object(const Depsgraph *depsgraph, Object *object)
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_mesh_free(BMesh *bm)
BMesh Free Mesh.
Array< float3 > BM_mesh_vert_coords_alloc(BMesh *bm)
void BM_lnorspace_update(BMesh *bm)
void BM_mesh_normals_update_ex(BMesh *bm, const BMeshNormalsUpdate_Params *params)
BMesh Compute Normals.
void BM_mesh_normals_update_with_partial_ex(BMesh *, const BMPartialUpdate *bmpinfo, const BMeshNormalsUpdate_Params *params)
void BM_mesh_calc_tessellation_with_partial_ex(BMesh *bm, MutableSpan< std::array< BMLoop *, 3 > > looptris, const BMPartialUpdate *bmpinfo, const BMeshCalcTessellation_Params *params)
void BM_mesh_calc_tessellation_ex(BMesh *bm, MutableSpan< std::array< BMLoop *, 3 > > looptris, const BMeshCalcTessellation_Params *params)
Span< T > as_span() const
void reinitialize(const int64_t new_size)
const Depsgraph * depsgraph
void BKE_editmesh_free_data(BMEditMesh *em)
BMEditMesh * BKE_editmesh_from_object(Object *ob)
Return the BMEditMesh for a given object.
BMEditMesh * BKE_editmesh_create(BMesh *bm)
void BKE_editmesh_looptris_and_normals_calc_with_partial(BMEditMesh *em, BMPartialUpdate *bmpinfo)
void BKE_editmesh_looptris_calc_with_partial_ex(BMEditMesh *em, BMPartialUpdate *bmpinfo, const BMeshCalcTessellation_Params *params)
Span< float3 > BKE_editmesh_vert_coords_when_deformed(Depsgraph *depsgraph, BMEditMesh *em, Scene *scene, Object *ob, Array< float3 > &r_alloc)
void BKE_editmesh_looptris_calc(BMEditMesh *em)
void BKE_editmesh_looptris_calc_ex(BMEditMesh *em, const BMeshCalcTessellation_Params *params)
void BKE_editmesh_looptris_and_normals_calc(BMEditMesh *em)
void BKE_editmesh_lnorspace_update(BMEditMesh *em)
BMEditMesh * BKE_editmesh_copy(BMEditMesh *em)
static void cage_mapped_verts_callback(void *user_data, int index, const float co[3], const float[3])
Array< float3 > BKE_editmesh_vert_coords_alloc(Depsgraph *depsgraph, BMEditMesh *em, Scene *scene, Object *ob)
void BKE_editmesh_looptris_calc_with_partial(BMEditMesh *em, BMPartialUpdate *bmpinfo)
Array< float3 > BKE_editmesh_vert_coords_alloc_orco(BMEditMesh *em)
void MEM_freeN(void *vmemh)
Mesh * editbmesh_get_eval_cage(Depsgraph *depsgraph, const Scene *scene, Object *obedit, BMEditMesh *em, const CustomData_MeshMasks *dataMask)
blender::Array< std::array< BMLoop *, 3 > > looptris
blender::MutableSpan< float3 > positions_cage
BLI_bitmap * visit_bitmap
MeshRuntimeHandle * runtime