Geometry Nodes: warn when output attribute has not been saved

This commit is contained in:
Jacques Lucke 2021-04-23 12:44:59 +02:00
parent f8e1526fa6
commit 4cb8438e08
2 changed files with 15 additions and 0 deletions

View File

@ -94,6 +94,7 @@ class OutputAttribute {
SaveFn save_;
std::optional<fn::GVMutableArray_GSpan> optional_span_varray_;
bool ignore_old_values_ = false;
bool save_has_been_called_ = false;
public:
OutputAttribute() = default;
@ -109,6 +110,10 @@ class OutputAttribute {
{
}
OutputAttribute(OutputAttribute &&other) = default;
~OutputAttribute();
operator bool() const
{
return varray_.get() != nullptr;

View File

@ -184,6 +184,7 @@ AttributeDomain attribute_domain_highest_priority(Span<AttributeDomain> domains)
void OutputAttribute::save()
{
save_has_been_called_ = true;
if (optional_span_varray_.has_value()) {
optional_span_varray_->save();
}
@ -192,6 +193,15 @@ void OutputAttribute::save()
}
}
OutputAttribute::~OutputAttribute()
{
if (!save_has_been_called_) {
if (varray_) {
std::cout << "Warning: Call `save()` to make sure that changes persist in all cases.\n";
}
}
}
GVArrayPtr BuiltinCustomDataLayerProvider::try_get_for_read(
const GeometryComponent &component) const
{