42 if (pointcloud_ !=
nullptr) {
52 if (pointcloud_ !=
nullptr) {
56 pointcloud_ =
nullptr;
62 return pointcloud_ !=
nullptr;
70 pointcloud_ = pointcloud;
71 ownership_ = ownership;
80 pointcloud_ =
nullptr;
107 return pointcloud_ ==
nullptr;
132 if (pointcloud_ ==
nullptr) {
143 template<
typename T, AttributeDomain Domain>
146 return std::make_unique<ArrayReadAttribute<T>>(Domain,
Span<T>((
const T *)
data, domain_size));
149 template<
typename T, AttributeDomain Domain>
152 return std::make_unique<ArrayWriteAttribute<T>>(Domain,
MutableSpan<T>((
T *)
data, domain_size));
164 if (pointcloud !=
nullptr) {
172 return pointcloud ? &pointcloud->
pdata :
nullptr;
178 return pointcloud ? &pointcloud->
pdata :
nullptr;
180 update_custom_data_pointers};
191 make_array_read_attribute<float3, ATTR_DOMAIN_POINT>,
192 make_array_write_attribute<float3, ATTR_DOMAIN_POINT>,
203 make_array_read_attribute<float, ATTR_DOMAIN_POINT>,
204 make_array_write_attribute<float, ATTR_DOMAIN_POINT>,
@ GEO_COMPONENT_TYPE_POINT_CLOUD
void BKE_id_free(struct Main *bmain, void *idv)
General operations for point-clouds.
struct PointCloud * BKE_pointcloud_copy_for_eval(struct PointCloud *pointcloud_src, bool reference)
void BKE_pointcloud_update_customdata_pointers(struct PointCloud *pointcloud)
static uint8 component(Color32 c, uint i)
void replace(PointCloud *pointcloud, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
const PointCloud * get_for_read() const
void ensure_owns_direct_data() override
bool has_pointcloud() const
bool owns_direct_data() const override
int attribute_domain_size(const AttributeDomain domain) const final
bool is_empty() const final
GeometryComponent * copy() const override
PointCloud * get_for_write()
static ComponentAttributeProviders create_attribute_providers_for_point_cloud()
std::unique_ptr< WriteAttribute > WriteAttributePtr
static WriteAttributePtr make_array_write_attribute(void *data, const int domain_size)
static ReadAttributePtr make_array_read_attribute(const void *data, const int domain_size)
std::unique_ptr< ReadAttribute > ReadAttributePtr