summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire350@gmail.com>2015-08-06 19:34:16 +0200
committerPaul Lemire <paul.lemire@kdab.com>2015-08-07 19:43:21 +0000
commit1f51eb03d8b4ee5d61f0dfdc1af0cc79b2bb878b (patch)
tree2fe1e02557dec5f4f57e6ac6a96bb65cebd6076a
parent0e8b923ec0f9ab07ba542b86b284234df91486e4 (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.cpp15
-rw-r--r--src/render/frontend/qgeometryrenderer.h1
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)