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) {
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];
121 copy_m3_m3(td.smtx, smtx_base.ptr());
122 copy_m3_m3(td.mtx, mtx_base.ptr());
133 tc.custom.type.data);
136 array_utils::scatter(
138 pointcloud.tag_radii_changed();
143 pointcloud.positions_for_write());
144 pointcloud.tag_positions_changed();
154 pointcloud::createTransPointCloudVerts,
155 pointcloud::recalcData_pointcloud,
void DEG_id_tag_update(ID *id, unsigned int flags)
Read Guarded memory(de)allocation.
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
Span< T > as_span() const
MutableSpan< T > as_mutable_span()
void reinitialize(const int64_t new_size)
constexpr IndexRange index_range() const
GAttributeReader lookup_or_default(StringRef attribute_id, AttrDomain domain, eCustomDataType data_type, const void *default_value=nullptr) const
static IndexMask from_bools(Span< bool > bools, IndexMaskMemory &memory)
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
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))