diff options
author | Paul Lemire <paul.lemire350@gmail.com> | 2015-08-06 19:34:16 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-08-07 19:43:21 +0000 |
commit | 1f51eb03d8b4ee5d61f0dfdc1af0cc79b2bb878b (patch) | |
tree | 2fe1e02557dec5f4f57e6ac6a96bb65cebd6076a | |
parent | 0e8b923ec0f9ab07ba542b86b284234df91486e4 (diff) |
QGeometryRenderer: handle backend notifications to set QGeometry
Change-Id: I120e9909d1f657d20e944ef96ca019cfc84b3777
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/render/frontend/qgeometryrenderer.cpp | 15 | ||||
-rw-r--r-- | src/render/frontend/qgeometryrenderer.h | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/render/frontend/qgeometryrenderer.cpp b/src/render/frontend/qgeometryrenderer.cpp index 16ff01fe2..a74fcc579 100644 --- a/src/render/frontend/qgeometryrenderer.cpp +++ b/src/render/frontend/qgeometryrenderer.cpp @@ -254,6 +254,21 @@ void QGeometryRenderer::copy(const QNode *ref) d_func()->m_functor = other->d_func()->m_functor; } +void QGeometryRenderer::sceneChangeEvent(const QSceneChangePtr &e) +{ + Q_D(QGeometryRenderer); + QScenePropertyChangePtr change = qSharedPointerCast<QScenePropertyChange>(e); + if (change->type() == NodeUpdated && change->propertyName() == QByteArrayLiteral("geometry")) { + QGeometry *backendGeometry = change->value().value<QGeometry *>(); + QGeometry *frontendGeometry = static_cast<QGeometry *>(QNode::clone(backendGeometry)); + if (frontendGeometry != Q_NULLPTR) + d->insertTree(frontendGeometry); + setGeometry(frontendGeometry); + } +} + + + } // Qt3D QT_END_NAMESPACE diff --git a/src/render/frontend/qgeometryrenderer.h b/src/render/frontend/qgeometryrenderer.h index 3810c69e2..78a74d798 100644 --- a/src/render/frontend/qgeometryrenderer.h +++ b/src/render/frontend/qgeometryrenderer.h @@ -118,6 +118,7 @@ Q_SIGNALS: protected: QGeometryRenderer(QGeometryRendererPrivate &dd, QNode *parent = 0); void copy(const QNode *ref) Q_DECL_OVERRIDE; + void sceneChangeEvent(const QSceneChangePtr &change) Q_DECL_OVERRIDE; private: Q_DECLARE_PRIVATE(QGeometryRenderer) |