34 if (pointcloud_ !=
nullptr) {
44 if (pointcloud_ !=
nullptr) {
48 pointcloud_ =
nullptr;
54 return pointcloud_ !=
nullptr;
61 pointcloud_ = pointcloud;
62 ownership_ = ownership;
69 pointcloud_ =
nullptr;
90 return pointcloud_ ==
nullptr;
112 pointcloud_->count_memory(memory);
125 points.tag_positions_changed();
131 points.tag_radii_changed();
143 return &pointcloud->
pdata;
147 return &pointcloud->
pdata;
149 [](
const void *owner) ->
int {
183 if (owner ==
nullptr) {
231std::optional<AttributeAccessor> PointCloudComponent::attributes()
const
236std::optional<MutableAttributeAccessor> PointCloudComponent::attributes_for_write()
238 PointCloud *pointcloud = this->get_for_write();
void BKE_id_free(Main *bmain, void *idv)
General operations for point clouds.
PointCloud * BKE_pointcloud_copy_for_eval(const PointCloud *pointcloud_src)
GeometryComponentPtr copy() const override
void count_memory(MemoryCounter &memory) const override
bool owns_direct_data() const override
void replace(PointCloud *pointcloud, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
const PointCloud * get() const
bool is_empty() const final
bool has_pointcloud() const
void ensure_owns_direct_data() override
PointCloud * get_for_write()
AttributeAccessorFunctions accessor_functions_for_providers()
ImplicitSharingPtr< GeometryComponent > GeometryComponentPtr
static ComponentAttributeProviders create_attribute_providers_for_point_cloud()
static void tag_component_positions_changed(void *owner)
static void tag_component_radius_changed(void *owner)
static const AttributeAccessorFunctions & get_pointcloud_accessor_functions_ref()
static AttributeAccessorFunctions get_pointcloud_accessor_functions()
GVArray(* adapt_domain)(const void *owner, const GVArray &varray, AttrDomain from_domain, AttrDomain to_domain)
bool(* domain_supported)(const void *owner, AttrDomain domain)
int(* domain_size)(const void *owner, AttrDomain domain)