From 80561fcfad953c818ffc1f4d74bb20c4be1a4581 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Wed, 27 Apr 2016 09:23:12 +0100 Subject: QLayer/Layer create and handle creation changes Change-Id: Id12e4d99b56fcfb8b58c58da778c48fcfa19460b Reviewed-by: Paul Lemire --- src/render/backend/layer.cpp | 14 ++++++++++++-- src/render/backend/layer_p.h | 2 ++ src/render/frontend/qlayer.cpp | 8 ++++++++ src/render/frontend/qlayer.h | 1 + src/render/frontend/qlayer_p.h | 5 +++++ 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/render/backend/layer.cpp b/src/render/backend/layer.cpp index e7fcf759f..19eaa40f7 100644 --- a/src/render/backend/layer.cpp +++ b/src/render/backend/layer.cpp @@ -38,9 +38,10 @@ ****************************************************************************/ #include "layer_p.h" -#include "qlayer.h" -#include +#include +#include #include +#include #include QT_BEGIN_NAMESPACE @@ -75,6 +76,15 @@ void Layer::updateFromPeer(Qt3DCore::QNode *peer) m_layerIds.push_back(StringToInt::lookupId(name)); } +void Layer::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) +{ + const auto typedChange = qSharedPointerCast>(change); + const auto &data = typedChange->data; + m_layers = data.names; + for (const QString &name : qAsConst(m_layers)) + m_layerIds.push_back(StringToInt::lookupId(name)); +} + QStringList Layer::layers() const { return m_layers; diff --git a/src/render/backend/layer_p.h b/src/render/backend/layer_p.h index 1e64e66db..1705f7e63 100644 --- a/src/render/backend/layer_p.h +++ b/src/render/backend/layer_p.h @@ -79,6 +79,8 @@ public: void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; private: + void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) Q_DECL_FINAL; + QStringList m_layers; QVector m_layerIds; }; diff --git a/src/render/frontend/qlayer.cpp b/src/render/frontend/qlayer.cpp index b4c85a596..eda3551a7 100644 --- a/src/render/frontend/qlayer.cpp +++ b/src/render/frontend/qlayer.cpp @@ -105,6 +105,14 @@ void QLayer::setNames(const QStringList &names) } } +Qt3DCore::QNodeCreatedChangeBasePtr QLayer::createNodeCreationChange() const +{ + auto creationChange = Qt3DCore::QNodeCreatedChangePtr::create(this); + auto &data = creationChange->data; + data.names = d_func()->m_names; + return creationChange; +} + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/render/frontend/qlayer.h b/src/render/frontend/qlayer.h index ad245b60f..1517148ee 100644 --- a/src/render/frontend/qlayer.h +++ b/src/render/frontend/qlayer.h @@ -70,6 +70,7 @@ protected: private: Q_DECLARE_PRIVATE(QLayer) + Qt3DCore::QNodeCreatedChangeBasePtr createNodeCreationChange() const Q_DECL_OVERRIDE; }; } // namespace Qt3DRender diff --git a/src/render/frontend/qlayer_p.h b/src/render/frontend/qlayer_p.h index b748003a8..824621281 100644 --- a/src/render/frontend/qlayer_p.h +++ b/src/render/frontend/qlayer_p.h @@ -67,6 +67,11 @@ public: QStringList m_names; }; +struct QLayerData +{ + QStringList names; +}; + } // namespace Qt3DRender QT_END_NAMESPACE -- cgit v1.2.3