44 custom_data.
data = transform_data;
48 custom_data->
data =
nullptr;
50 return transform_data;
58 for (
const int i : trans_data_contrainers.
index_range()) {
65 if (use_proportional_edit) {
84 transform_data.
positions.as_mutable_span());
97 for (const int64_t i : range) {
98 TransData &td = tc_data[i];
99 float3 *elem = &transform_data.positions[i];
100 copy_v3_v3(td.iloc, *elem);
101 copy_v3_v3(td.center, *elem);
105 if (use_proportional_edit) {
106 if (selection_attr[i]) {
107 td.flag = TD_SELECTED;
111 td.flag = TD_SELECTED;
114 if (t->mode == TFM_CURVE_SHRINKFATTEN) {
115 float *value = &transform_data.radii[i];
120 copy_m3_m3(td.smtx, smtx_base.ptr());
121 copy_m3_m3(td.mtx, mtx_base.ptr());
132 tc.custom.type.data);
void DEG_id_tag_update(ID *id, unsigned int flags)
Read Guarded memory(de)allocation.
BMesh const char void * data
Span< T > as_span() const
MutableSpan< T > as_mutable_span()
void reinitialize(const int64_t new_size)
static IndexMask from_bools(Span< bool > bools, IndexMaskMemory &memory)
constexpr IndexRange index_range() const
GAttributeReader lookup_or_default(StringRef attribute_id, AttrDomain domain, AttrType data_type, const void *default_value=nullptr) const
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void scatter(const Span< T > src, const Span< IndexT > indices, MutableSpan< T > dst, const int64_t grain_size=4096)
void gather(const GVArray &src, const IndexMask &indices, GMutableSpan dst, int64_t grain_size=4096)
MatBase< T, Size, Size > pseudo_invert(const MatBase< T, Size, Size > &mat, T epsilon=1e-8)
void parallel_for(const IndexRange range, const int64_t grain_size, const Function &function, const TaskSizeHints &size_hints=detail::TaskSizeHints_Static(1))
MatBase< float, 4, 4 > float4x4
MatBase< float, 3, 3 > float3x3