forked from bartvdbraak/blender
Geometry Nodes: warn when output attribute has not been saved
This commit is contained in:
parent
f8e1526fa6
commit
4cb8438e08
@ -94,6 +94,7 @@ class OutputAttribute {
|
|||||||
SaveFn save_;
|
SaveFn save_;
|
||||||
std::optional<fn::GVMutableArray_GSpan> optional_span_varray_;
|
std::optional<fn::GVMutableArray_GSpan> optional_span_varray_;
|
||||||
bool ignore_old_values_ = false;
|
bool ignore_old_values_ = false;
|
||||||
|
bool save_has_been_called_ = false;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OutputAttribute() = default;
|
OutputAttribute() = default;
|
||||||
@ -109,6 +110,10 @@ class OutputAttribute {
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OutputAttribute(OutputAttribute &&other) = default;
|
||||||
|
|
||||||
|
~OutputAttribute();
|
||||||
|
|
||||||
operator bool() const
|
operator bool() const
|
||||||
{
|
{
|
||||||
return varray_.get() != nullptr;
|
return varray_.get() != nullptr;
|
||||||
|
@ -184,6 +184,7 @@ AttributeDomain attribute_domain_highest_priority(Span<AttributeDomain> domains)
|
|||||||
|
|
||||||
void OutputAttribute::save()
|
void OutputAttribute::save()
|
||||||
{
|
{
|
||||||
|
save_has_been_called_ = true;
|
||||||
if (optional_span_varray_.has_value()) {
|
if (optional_span_varray_.has_value()) {
|
||||||
optional_span_varray_->save();
|
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(
|
GVArrayPtr BuiltinCustomDataLayerProvider::try_get_for_read(
|
||||||
const GeometryComponent &component) const
|
const GeometryComponent &component) const
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user