83#define COPY_PTR(member) memcpy(elem->member, bone->member, sizeof(bone->member))
84#define COPY_VAL(member) memcpy(&elem->member, &bone->member, sizeof(bone->member))
115#define COPY_PTR(member) memcpy(bone->member, elem->member, sizeof(bone->member))
116#define COPY_VAL(member) memcpy(&bone->member, &elem->member, sizeof(bone->member))
138 const float mat[4][4])
157 ebone = ebone->next, elem++)
160#define COPY_PTR(member) memcpy(elem->member, ebone->member, sizeof(ebone->member))
161#define COPY_VAL(member) memcpy(&elem->member, &ebone->member, sizeof(ebone->member))
178 const float mat[4][4])
182 ebone = ebone->next, elem++)
185#define COPY_PTR(member) memcpy(ebone->member, elem->member, sizeof(ebone->member))
186#define COPY_VAL(member) memcpy(&ebone->member, &elem->member, sizeof(ebone->member))
224 ml = ml->next, elem++)
235 const float mat[4][4])
318 switch (
GS(id->name)) {
321 Key *key = mesh->key;
322 const int key_index = -1;
325 BMesh *
bm = mesh->runtime->edit_mesh->bm;
331 memset(xod, 0x0,
sizeof(*xod));
335 xod_base = &xod->
base;
337 if (key !=
nullptr) {
342 key,
static_cast<float(*)[3]
>(xod->
key_data), key_index);
347 const int elem_array_len = mesh->verts_num;
350 memset(xod, 0x0,
sizeof(*xod));
354 xod_base = &xod->
base;
356 if (key !=
nullptr) {
361 key,
static_cast<float(*)[3]
>(xod->
key_data), key_index);
371 const int key_index = -1;
381 memset(xod, 0x0,
sizeof(*xod));
384 xod_base = &xod->
base;
386 if (key !=
nullptr) {
391 key,
static_cast<float(*)[3]
>(xod->
key_data), key_index);
407 const int key_index = -1;
411 nurbs = &editnurb->
nurbs;
422 memset(xod, 0x0,
sizeof(*xod));
425 xod_base = &xod->
base;
427 if (key !=
nullptr) {
432 key,
static_cast<float(*)[3]
>(xod->
key_data), key_index);
444 memset(xod, 0x0,
sizeof(*xod));
447 xod_base = &xod->
base;
453 memset(xod, 0x0,
sizeof(*xod));
456 xod_base = &xod->
base;
466 memset(xod, 0x0,
sizeof(*xod));
469 xod_base = &xod->
base;
477 memset(xod, 0x0,
sizeof(*xod));
480 xod_base = &xod->
base;
488 memset(xod, 0x0,
sizeof(*xod));
491 xod_base = &xod->
base;
552 Key *key = mesh->key;
553 const int key_index = -1;
557 BMesh *
bm = mesh->runtime->edit_mesh->bm;
565# pragma GCC diagnostic push
566# pragma GCC diagnostic ignored "-Warray-bounds"
568 for (
const int i : positions.index_range()) {
572# pragma GCC diagnostic pop
574 mesh->tag_positions_changed();
577 if (key !=
nullptr) {
579 key, key_index,
static_cast<float(*)[3]
>(xod->
key_data), mat);
589 const int key_index = -1;
598 if ((key !=
nullptr) && (xod->
key_data !=
nullptr)) {
600 key, key_index,
static_cast<float(*)[3]
>(xod->
key_data), mat);
610 const int key_index = -1;
616 nurb = &editnurb->
nurbs;
627 if ((key !=
nullptr) && (xod->
key_data !=
nullptr)) {
677 Key *key = mesh->key;
678 const int key_index = -1;
682 BMesh *
bm = mesh->runtime->edit_mesh->bm;
688 mesh->vert_positions_for_write().copy_from(
690 mesh->tag_positions_changed();
693 if ((key !=
nullptr) && (xod->
key_data !=
nullptr)) {
704 const int key_index = -1;
713 if ((key !=
nullptr) && (xod->
key_data !=
nullptr)) {
723 const int key_index = -1;
736 if ((key !=
nullptr) && (xod->
key_data !=
nullptr)) {
785 params.calc_looptris =
true;
786 params.calc_normals =
true;
787 params.is_destructive =
false;
int BKE_armature_bonelist_count(const ListBase *lb)
void BKE_armature_transform(bArmature *arm, const float mat[4][4], bool do_props)
void BKE_curve_nurbs_vert_coords_get(const ListBase *lb, float(*vert_coords)[3], int vert_len)
void BKE_curve_nurbs_vert_coords_apply(ListBase *lb, const float(*vert_coords)[3], bool constrain_2d)
void BKE_curve_nurbs_vert_coords_apply_with_mat4(ListBase *lb, const float(*vert_coords)[3], const float mat[4][4], bool constrain_2d)
int BKE_nurbList_verts_count(const ListBase *nurb)
short BKE_curve_type_get(const Curve *cu)
void BKE_gpencil_point_coords_apply(struct bGPdata *gpd, const GPencilPointCoordinates *elem_data)
void BKE_gpencil_point_coords_get(struct bGPdata *gpd, GPencilPointCoordinates *elem_data)
int BKE_gpencil_stroke_point_count(const struct bGPdata *gpd)
void BKE_gpencil_point_coords_apply_with_mat4(struct bGPdata *gpd, const GPencilPointCoordinates *elem_data, const float mat[4][4])
Low-level operations for grease pencil.
void BKE_grease_pencil_point_coords_get(const GreasePencil &grease_pencil, GreasePencilPointCoordinates *elem_data)
void BKE_grease_pencil_point_coords_apply_with_mat4(GreasePencil &grease_pencil, GreasePencilPointCoordinates *elem_data, const blender::float4x4 &mat)
void BKE_grease_pencil_point_coords_apply(GreasePencil &grease_pencil, GreasePencilPointCoordinates *elem_data)
int BKE_grease_pencil_stroke_point_count(const GreasePencil &grease_pencil)
void BKE_keyblock_data_set(Key *key, int shape_index, const void *data)
void BKE_keyblock_data_set_with_mat4(Key *key, int shape_index, const float(*coords)[3], const float mat[4][4])
void BKE_keyblock_curve_data_set_with_mat4(Key *key, const ListBase *nurb, int shape_index, const void *data, const float mat[4][4])
void BKE_keyblock_data_get_from_shape(const Key *key, float(*arr)[3], int shape_index)
size_t BKE_keyblock_element_calc_size_from_shape(const Key *key, int shape_index)
void BKE_lattice_vert_coords_apply(Lattice *lt, const float(*vert_coords)[3])
void BKE_lattice_vert_coords_apply_with_mat4(Lattice *lt, const float(*vert_coords)[3], const float mat[4][4])
void BKE_lattice_vert_coords_get(const Lattice *lt, float(*vert_coords)[3])
void BKE_mball_transform(MetaBall *mb, const float mat[4][4], bool do_props)
#define LISTBASE_FOREACH(type, var, list)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void unit_m4(float m[4][4])
void mul_v3_m4v3(float r[3], const float mat[4][4], const float vec[3])
void copy_qt_qt(float q[4], const float a[4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void DEG_id_tag_update(ID *id, unsigned int flags)
Object is a sort of wrapper for general info.
void EDBM_update(Mesh *mesh, const EDBMUpdate_Params *params)
Read Guarded memory(de)allocation.
void ED_armature_edit_transform(bArmature *arm, const float mat[4][4], const bool do_props)
ATTR_WARN_UNUSED_RESULT BMesh * bm
void BM_mesh_vert_coords_apply_with_mat4(BMesh *bm, const float(*vert_coords)[3], const float mat[4][4])
void BM_mesh_vert_coords_apply(BMesh *bm, const float(*vert_coords)[3])
void BM_mesh_vert_coords_get(BMesh *bm, MutableSpan< float3 > positions)
constexpr void copy_from(Span< T > values) const
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
XFormObjectData * data_xform_create(ID *id)
XFormObjectData * data_xform_create_from_edit_mode(ID *id)
static void metaball_coords_and_quats_apply_with_mat4(MetaBall *mb, const ElemData_MetaBall *elem_array, const float mat[4][4])
XFormObjectData * data_xform_create_ex(ID *id, bool is_edit_mode)
void data_xform_destroy(XFormObjectData *xod_base)
static void armature_coords_and_quats_apply_with_mat4(bArmature *arm, const ElemData_Armature *elem_array, const float mat[4][4])
static void edit_armature_coords_and_quats_apply_with_mat4(bArmature *arm, const ElemData_Armature *elem_array, const float mat[4][4])
void data_xform_by_mat4(XFormObjectData *xod, const float mat[4][4])
static void armature_coords_and_quats_apply(bArmature *arm, const ElemData_Armature *elem_array)
static void armature_coords_and_quats_get(const bArmature *arm, ElemData_Armature *elem_array)
static ElemData_Armature * armature_coords_and_quats_get_recurse(const ListBase *bone_base, ElemData_Armature *elem_array)
static void edit_armature_coords_and_quats_get(const bArmature *arm, ElemData_Armature *elem_array)
static void metaball_coords_and_quats_get(const MetaBall *mb, ElemData_MetaBall *elem_array)
static void metaball_coords_and_quats_apply(MetaBall *mb, const ElemData_MetaBall *elem_array)
static void edit_armature_coords_and_quats_apply(bArmature *arm, const ElemData_Armature *elem_array)
void data_xform_tag_update(XFormObjectData *xod)
static const ElemData_Armature * armature_coords_and_quats_apply_with_mat4_recurse(ListBase *bone_base, const ElemData_Armature *elem_array, const float mat[4][4])
void data_xform_restore(XFormObjectData *xod)
struct EditLatt * editlatt