summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)