mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 01:24:03 +02:00
"Clear spanners" clears the voxelized attributes, too.
This commit is contained in:
parent
40b1d2f284
commit
10588cff9f
1 changed files with 32 additions and 0 deletions
|
@ -180,8 +180,40 @@ ClearSpannersEdit::ClearSpannersEdit(const AttributePointer& attribute) :
|
|||
attribute(attribute) {
|
||||
}
|
||||
|
||||
class GetSpannerAttributesVisitor : public SpannerVisitor {
|
||||
public:
|
||||
|
||||
GetSpannerAttributesVisitor(const AttributePointer& attribute);
|
||||
|
||||
const QSet<AttributePointer>& getAttributes() const { return _attributes; }
|
||||
|
||||
virtual bool visit(Spanner* spanner);
|
||||
|
||||
protected:
|
||||
|
||||
QSet<AttributePointer> _attributes;
|
||||
};
|
||||
|
||||
GetSpannerAttributesVisitor::GetSpannerAttributesVisitor(const AttributePointer& attribute) :
|
||||
SpannerVisitor(QVector<AttributePointer>() << attribute) {
|
||||
}
|
||||
|
||||
bool GetSpannerAttributesVisitor::visit(Spanner* spanner) {
|
||||
foreach (const AttributePointer& attribute, spanner->getVoxelizedAttributes()) {
|
||||
_attributes.insert(attribute);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void ClearSpannersEdit::apply(MetavoxelData& data, const WeakSharedObjectHash& objects) const {
|
||||
// find all the spanner attributes
|
||||
GetSpannerAttributesVisitor visitor(attribute);
|
||||
data.guide(visitor);
|
||||
|
||||
data.clear(attribute);
|
||||
foreach (const AttributePointer& attribute, visitor.getAttributes()) {
|
||||
data.clear(attribute);
|
||||
}
|
||||
}
|
||||
|
||||
SetSpannerEdit::SetSpannerEdit(const SharedObjectPointer& spanner) :
|
||||
|
|
Loading…
Reference in a new issue