Fix: Missing handling of dynamic instance attribute size
The attributes need to be reallocated when the size changes. Differential Revision: https://developer.blender.org/D13390
This commit is contained in:
parent
2fbb52dd86
commit
c822e03e2a
|
@ -345,6 +345,8 @@ class CustomDataAttributes {
|
|||
|
||||
void reallocate(const int size);
|
||||
|
||||
void clear();
|
||||
|
||||
std::optional<blender::fn::GSpan> get_for_read(const AttributeIDRef &attribute_id) const;
|
||||
|
||||
blender::fn::GVArray get_for_read(const AttributeIDRef &attribute_id,
|
||||
|
|
|
@ -821,6 +821,12 @@ void CustomDataAttributes::reallocate(const int size)
|
|||
CustomData_realloc(&data, size);
|
||||
}
|
||||
|
||||
void CustomDataAttributes::clear()
|
||||
{
|
||||
CustomData_free(&data, size_);
|
||||
size_ = 0;
|
||||
}
|
||||
|
||||
bool CustomDataAttributes::foreach_attribute(const AttributeForeachCallback callback,
|
||||
const AttributeDomain domain) const
|
||||
{
|
||||
|
|
|
@ -63,6 +63,7 @@ void InstancesComponent::reserve(int min_capacity)
|
|||
if (!instance_ids_.is_empty()) {
|
||||
this->instance_ids_ensure();
|
||||
}
|
||||
attributes_.reallocate(min_capacity);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -78,6 +79,7 @@ void InstancesComponent::resize(int capacity)
|
|||
if (!instance_ids_.is_empty()) {
|
||||
this->instance_ids_ensure();
|
||||
}
|
||||
attributes_.reallocate(capacity);
|
||||
}
|
||||
|
||||
void InstancesComponent::clear()
|
||||
|
@ -85,6 +87,7 @@ void InstancesComponent::clear()
|
|||
instance_reference_handles_.clear();
|
||||
instance_transforms_.clear();
|
||||
instance_ids_.clear();
|
||||
attributes_.clear();
|
||||
|
||||
references_.clear();
|
||||
}
|
||||
|
@ -98,6 +101,7 @@ void InstancesComponent::add_instance(const int instance_handle, const float4x4
|
|||
if (!instance_ids_.is_empty()) {
|
||||
this->instance_ids_ensure();
|
||||
}
|
||||
attributes_.reallocate(this->instances_amount());
|
||||
}
|
||||
|
||||
blender::Span<int> InstancesComponent::instance_reference_handles() const
|
||||
|
|
Loading…
Reference in New Issue