summaryrefslogtreecommitdiffstats
path: root/src/render/geometry
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-04-23 17:33:29 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-04-27 11:19:18 +0000
commit5157512a7e83cb1b98c68f12f9b164433eddd644 (patch)
tree57ddaa5e0955172f3c923750baa25b687d976808 /src/render/geometry
parent9ef21c30528f25d2128d7a0357d450ec2f65425a (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.cpp32
-rw-r--r--src/render/geometry/qgeometry.cpp12
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);