diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2016-04-27 09:23:12 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2016-04-29 16:22:34 +0000 |
commit | 80561fcfad953c818ffc1f4d74bb20c4be1a4581 (patch) | |
tree | df6c88225ac28dfa6d5c7f43b9d04fcdc1ee18bb | |
parent | 774b589cc8257a1a759b121a0f839fbabac330a1 (diff) |
QLayer/Layer create and handle creation changes
Change-Id: Id12e4d99b56fcfb8b58c58da778c48fcfa19460b
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r-- | src/render/backend/layer.cpp | 14 | ||||
-rw-r--r-- | src/render/backend/layer_p.h | 2 | ||||
-rw-r--r-- | src/render/frontend/qlayer.cpp | 8 | ||||
-rw-r--r-- | src/render/frontend/qlayer.h | 1 | ||||
-rw-r--r-- | 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 <Qt3DCore/qnodepropertychange.h> +#include <Qt3DRender/qlayer.h> +#include <Qt3DRender/private/qlayer_p.h> #include <Qt3DRender/private/stringtoint_p.h> +#include <Qt3DCore/qnodepropertychange.h> #include <QVariant> 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<Qt3DCore::QNodeCreatedChange<QLayerData>>(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<int> 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<QLayerData>::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 |