27 if (pointcloud_ !=
nullptr) {
37 if (pointcloud_ !=
nullptr) {
41 pointcloud_ =
nullptr;
47 return pointcloud_ !=
nullptr;
54 pointcloud_ = pointcloud;
55 ownership_ = ownership;
62 pointcloud_ =
nullptr;
83 return pointcloud_ ==
nullptr;
114 static auto update_custom_data_pointers = [](
void * ) {};
118 return &pointcloud->
pdata;
122 return &pointcloud->
pdata;
124 [](
const void *owner) ->
int {
128 update_custom_data_pointers};
138 make_array_read_attribute<float3>,
139 make_array_write_attribute<float3>,
149 make_array_read_attribute<float>,
150 make_array_write_attribute<float>,
160 make_array_read_attribute<int>,
161 make_array_write_attribute<int>,
172 attribute_accessor_functions::accessor_functions_for_providers<providers>();
174 if (owner ==
nullptr) {
@ 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 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
std::optional< blender::bke::MutableAttributeAccessor > attributes_for_write() final
bool is_empty() const final
GeometryComponent * copy() const override
PointCloud * get_for_write()
std::optional< blender::bke::AttributeAccessor > attributes() const final
static ComponentAttributeProviders create_attribute_providers_for_point_cloud()
static const AttributeAccessorFunctions & get_pointcloud_accessor_functions_ref()
AttributeAccessor pointcloud_attributes(const PointCloud &pointcloud)
MutableAttributeAccessor pointcloud_attributes_for_write(PointCloud &pointcloud)
static AttributeAccessorFunctions get_pointcloud_accessor_functions()
bool(* domain_supported)(const void *owner, eAttrDomain domain)
GVArray(* adapt_domain)(const void *owner, const GVArray &varray, eAttrDomain from_domain, eAttrDomain to_domain)
int(* domain_size)(const void *owner, eAttrDomain domain)