32 const int island_index,
35 if (island_data->
center && island_index != -1) {
36 return island_data->
center[island_index];
45 const int island_index)
76 float mtx[3][3], smtx[3][3];
110 data_len =
bm->totvertsel;
118 if (is_island_center) {
125 const bool calc_island_center =
false;
126 const bool calc_island_axismtx =
false;
129 em, calc_single_islands, calc_island_center, calc_island_axismtx, &island_data);
132 copy_m3_m4(mtx, tc->obedit->object_to_world().ptr());
139 int *dists_index =
nullptr;
140 float *dists =
nullptr;
143 if (is_island_center) {
150 if (tc->use_mirror_axis_any) {
153 const bool mirror_axis[3] = {
154 bool(tc->use_mirror_axis_x), bool(tc->use_mirror_axis_y), bool(tc->use_mirror_axis_z)};
156 em, use_select, use_topology, mirror_axis, &mirror_data);
178 tc->data_len = data_len;
188 int island_index = -1;
190 const int connected_index = (dists_index && dists_index[a] != -1) ? dists_index[a] : a;
196 (
TransDataBasic *)td_mirror, em, eve, &island_data, island_index);
204 td_mirror->loc_src = vs->
radius;
216 td->axismtx[0][0] = td->axismtx[0][1] = td->axismtx[0][2] = td->axismtx[1][0] =
217 td->axismtx[1][1] = td->axismtx[1][2] = 0.0f;
233 !crazyspace_data.
defmats.is_empty() ? crazyspace_data.
defmats[a].ptr() :
nullptr,
235 crazyspace_data.
quats[a] :
264 if (tc->use_mirror_axis_any) {
266 for (
int i = 0;
i < tc->data_mirror_len;
i++, td_mirror++) {
void * CustomData_bmesh_get(const CustomData *data, void *block, eCustomDataType type)
bool CustomData_has_layer(const CustomData *data, eCustomDataType type)
BMEditMesh * BKE_editmesh_from_object(Object *ob)
Return the BMEditMesh for a given object.
void BKE_editmesh_looptris_and_normals_calc(BMEditMesh *em)
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
Read Guarded memory(de)allocation.
#define BM_elem_flag_test(ele, hflag)
#define BM_ITER_MESH(ele, iter, bm, itype)
#define BM_ITER_MESH_INDEX(ele, iter, bm, itype, indexvar)
BLI_INLINE BMVert * BM_vert_at_index(BMesh *bm, const int index)
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void * MEM_callocN(size_t len, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)