29 const int island_index,
32 if (island_data->
center && island_index != -1) {
33 return island_data->
center[island_index];
42 const int island_index)
65 float mtx[3][3], smtx[3][3];
92 if (cd_offset == -1) {
105 data_len =
bm->totvertsel;
113 if (is_island_center) {
120 const bool calc_island_center =
false;
121 const bool calc_island_axismtx =
false;
124 em, calc_single_islands, calc_island_center, calc_island_axismtx, &island_data);
127 copy_m3_m4(mtx, tc->obedit->object_to_world().ptr());
134 int *dists_index =
nullptr;
135 float *dists =
nullptr;
138 if (is_island_center) {
149 tc->data_len = data_len;
158 int island_index = -1;
160 const int connected_index = (dists_index && dists_index[a] != -1) ? dists_index[a] : a;
174 td->axismtx[0][0] = td->axismtx[0][1] = td->axismtx[0][2] = td->axismtx[1][0] =
175 td->axismtx[1][1] = td->axismtx[1][2] = 0.0f;
191 !crazyspace_data.
defmats.is_empty() ? crazyspace_data.
defmats[a].ptr() :
nullptr,
193 crazyspace_data.
quats[a] :
bool CustomData_has_layer_named(const CustomData *data, eCustomDataType type, blender::StringRef name)
int CustomData_get_offset_named(const CustomData *data, eCustomDataType type, blender::StringRef name)
BMEditMesh * BKE_editmesh_from_object(Object *ob)
Return the BMEditMesh for a given object.
void pseudoinverse_m3_m3(float inverse[3][3], const float mat[3][3], float epsilon)
void copy_m3_m4(float m1[3][3], const float m2[4][4])
#define PSEUDOINVERSE_EPSILON
MINLINE void copy_v3_v3(float r[3], const float a[3])
void DEG_id_tag_update(ID *id, unsigned int flags)
@ V3D_AROUND_LOCAL_ORIGINS
#define BM_ELEM_CD_GET_VOID_P(ele, offset)
#define BM_elem_flag_test(ele, hflag)
void BM_data_layer_add_named(BMesh *bm, CustomData *data, int type, const StringRef name)
#define BM_ITER_MESH(ele, iter, bm, itype)
#define BM_ITER_MESH_INDEX(ele, iter, bm, itype, indexvar)
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)