From 1f51eb03d8b4ee5d61f0dfdc1af0cc79b2bb878b Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Thu, 6 Aug 2015 19:34:16 +0200 Subject: QGeometryRenderer: handle backend notifications to set QGeometry Change-Id: I120e9909d1f657d20e944ef96ca019cfc84b3777 Reviewed-by: Sean Harmer --- src/render/frontend/qgeometryrenderer.cpp | 15 +++++++++++++++ src/render/frontend/qgeometryrenderer.h | 1 + 2 files changed, 16 insertions(+) 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(e); + if (change->type() == NodeUpdated && change->propertyName() == QByteArrayLiteral("geometry")) { + QGeometry *backendGeometry = change->value().value(); + QGeometry *frontendGeometry = static_cast(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) -- cgit v1.2.3