diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2016-04-23 17:33:29 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-04-27 11:19:18 +0000 |
commit | 5157512a7e83cb1b98c68f12f9b164433eddd644 (patch) | |
tree | 57ddaa5e0955172f3c923750baa25b687d976808 /src/render/geometry | |
parent | 9ef21c30528f25d2128d7a0357d450ec2f65425a (diff) |
QGeometry use new added/removed change types
Change-Id: I2af76675187f9dc16aa466a95f5e6fb0d0b03a09
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/geometry')
-rw-r--r-- | src/render/geometry/geometry.cpp | 32 | ||||
-rw-r--r-- | src/render/geometry/qgeometry.cpp | 12 |
2 files changed, 20 insertions, 24 deletions
diff --git a/src/render/geometry/geometry.cpp b/src/render/geometry/geometry.cpp index 612e4f4e9..5f1b73760 100644 --- a/src/render/geometry/geometry.cpp +++ b/src/render/geometry/geometry.cpp @@ -38,10 +38,12 @@ ****************************************************************************/ #include "geometry_p.h" -#include <Qt3DCore/qnodepropertychange.h> #include <Qt3DRender/qattribute.h> #include <Qt3DRender/qgeometry.h> #include <Qt3DRender/private/qgeometry_p.h> +#include <Qt3DCore/qnodepropertychange.h> +#include <Qt3DCore/qnodeaddedpropertychange.h> +#include <Qt3DCore/qnoderemovedpropertychange.h> QT_BEGIN_NAMESPACE @@ -92,38 +94,30 @@ void Geometry::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &cha void Geometry::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) { - switch (e->type()) { case NodeAdded: { - QNodePropertyChangePtr propertyChange = qSharedPointerCast<QNodePropertyChange>(e); - QByteArray propertyName = propertyChange->propertyName(); - - if (propertyName == QByteArrayLiteral("attribute")) { - m_attributes.push_back(propertyChange->value().value<QNodeId>()); + const auto change = qSharedPointerCast<QNodeAddedPropertyChange>(e); + if (change->propertyName() == QByteArrayLiteral("attribute")) { + m_attributes.push_back(change->addedNodeId()); m_geometryDirty = true; } break; } case NodeRemoved: { - QNodePropertyChangePtr propertyChange = qSharedPointerCast<QNodePropertyChange>(e); - QByteArray propertyName = propertyChange->propertyName(); - - if (propertyName == QByteArrayLiteral("attribute")) { - m_attributes.removeOne(propertyChange->value().value<QNodeId>()); + const auto change = qSharedPointerCast<QNodeRemovedPropertyChange>(e); + if (change->propertyName() == QByteArrayLiteral("attribute")) { + m_attributes.removeOne(change->removedNodeId()); m_geometryDirty = true; } break; } case NodeUpdated: { - // Note: doesn't set dirtyness as this parameter changing doesn't need - // a new VAO update. - QNodePropertyChangePtr propertyChange = qSharedPointerCast<QNodePropertyChange>(e); - QByteArray propertyName = propertyChange->propertyName(); - - if (propertyName == QByteArrayLiteral("boundingVolumePositionAttribute")) { - m_boundingPositionAttribute = propertyChange->value().value<QNodeId>(); + // Note: doesn't set dirtyness as this parameter changing doesn't need a new VAO update. + const auto change = qSharedPointerCast<QNodePropertyChange>(e); + if (change->propertyName() == QByteArrayLiteral("boundingVolumePositionAttribute")) { + m_boundingPositionAttribute = change->value().value<QNodeId>(); break; } } diff --git a/src/render/geometry/qgeometry.cpp b/src/render/geometry/qgeometry.cpp index 834d961ba..5399517e5 100644 --- a/src/render/geometry/qgeometry.cpp +++ b/src/render/geometry/qgeometry.cpp @@ -40,8 +40,10 @@ #include "qgeometry.h" #include "qgeometry_p.h" #include <private/qnode_p.h> -#include <Qt3DCore/qnodepropertychange.h> #include <Qt3DRender/qattribute.h> +#include <Qt3DCore/qnodepropertychange.h> +#include <Qt3DCore/qnodeaddedpropertychange.h> +#include <Qt3DCore/qnoderemovedpropertychange.h> QT_BEGIN_NAMESPACE @@ -97,6 +99,7 @@ QGeometry::QGeometry(QGeometryPrivate &dd, QNode *parent) */ void QGeometry::addAttribute(QAttribute *attribute) { + Q_ASSERT(attribute); Q_D(QGeometry); if (!d->m_attributes.contains(attribute)) { d->m_attributes.append(attribute); @@ -109,9 +112,8 @@ void QGeometry::addAttribute(QAttribute *attribute) attribute->setParent(this); if (d->m_changeArbiter != Q_NULLPTR) { - QNodePropertyChangePtr change(new QNodePropertyChange(NodeAdded, QSceneChange::Node, id())); + const auto change = QNodeAddedPropertyChangePtr::create(id(), attribute->id()); change->setPropertyName("attribute"); - change->setValue(QVariant::fromValue(attribute->id())); d->notifyObservers(change); } } @@ -122,11 +124,11 @@ void QGeometry::addAttribute(QAttribute *attribute) */ void QGeometry::removeAttribute(QAttribute *attribute) { + Q_ASSERT(attribute); Q_D(QGeometry); if (d->m_changeArbiter != Q_NULLPTR) { - QNodePropertyChangePtr change(new QNodePropertyChange(NodeRemoved, QSceneChange::Node, id())); + const auto change = QNodeRemovedPropertyChangePtr::create(id(), attribute->id()); change->setPropertyName("attribute"); - change->setValue(QVariant::fromValue(attribute->id())); d->notifyObservers(change); } d->m_attributes.removeOne(attribute); |