Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/BKE_geometry_set.hh')
-rw-r--r--source/blender/blenkernel/BKE_geometry_set.hh13
1 files changed, 4 insertions, 9 deletions
diff --git a/source/blender/blenkernel/BKE_geometry_set.hh b/source/blender/blenkernel/BKE_geometry_set.hh
index 5fcdbc83e25..571c6c6a0a0 100644
--- a/source/blender/blenkernel/BKE_geometry_set.hh
+++ b/source/blender/blenkernel/BKE_geometry_set.hh
@@ -323,6 +323,7 @@ struct GeometrySet {
bool has_instances() const;
bool has_volume() const;
bool has_curve() const;
+ bool has_realized_data() const;
const Mesh *get_mesh_for_read() const;
const PointCloud *get_pointcloud_for_read() const;
@@ -478,7 +479,7 @@ class InstanceReference {
Type type_ = Type::None;
/** Depending on the type this is either null, an Object or Collection pointer. */
void *data_ = nullptr;
- std::unique_ptr<GeometrySet> geometry_set_;
+ std::shared_ptr<GeometrySet> geometry_set_;
public:
InstanceReference() = default;
@@ -493,17 +494,10 @@ class InstanceReference {
InstanceReference(GeometrySet geometry_set)
: type_(Type::GeometrySet),
- geometry_set_(std::make_unique<GeometrySet>(std::move(geometry_set)))
+ geometry_set_(std::make_shared<GeometrySet>(std::move(geometry_set)))
{
}
- InstanceReference(const InstanceReference &src) : type_(src.type_), data_(src.data_)
- {
- if (src.type_ == Type::GeometrySet) {
- geometry_set_ = std::make_unique<GeometrySet>(*src.geometry_set_);
- }
- }
-
Type type() const
{
return type_;
@@ -595,6 +589,7 @@ class InstancesComponent : public GeometryComponent {
void add_instance(int instance_handle, const blender::float4x4 &transform, const int id = -1);
blender::Span<InstanceReference> references() const;
+ void remove_unused_references();
void ensure_geometry_instances();
GeometrySet &geometry_set_from_reference(const int reference_index);