diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2016-04-01 11:50:20 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-04-05 12:17:29 +0000 |
commit | ececb69761f1b37cb09b26e4c7f096cb6a948c5f (patch) | |
tree | 4c0af0e9dd63ec42b62be3333bfebf07078ff377 /src/render | |
parent | 3c5e3a1e99452b5a7f963eecef3478ab403c03f1 (diff) |
QSceneLoader/Scene creates and handles creation changes
Change-Id: Iff910e1b9c3556a40eead4d050605ac72b953f92
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/io/qsceneloader.cpp | 8 | ||||
-rw-r--r-- | src/render/io/qsceneloader.h | 1 | ||||
-rw-r--r-- | src/render/io/qsceneloader_p.h | 5 | ||||
-rw-r--r-- | src/render/io/scene.cpp | 10 | ||||
-rw-r--r-- | src/render/io/scene_p.h | 2 |
5 files changed, 26 insertions, 0 deletions
diff --git a/src/render/io/qsceneloader.cpp b/src/render/io/qsceneloader.cpp index e43a2cb1f..e1cf83735 100644 --- a/src/render/io/qsceneloader.cpp +++ b/src/render/io/qsceneloader.cpp @@ -139,6 +139,14 @@ void QSceneLoader::setStatus(QSceneLoader::Status status) } } +Qt3DCore::QNodeCreatedChangeBasePtr QSceneLoader::createNodeCreationChange() const +{ + auto creationChange = Qt3DCore::QNodeCreatedChangePtr<QSceneLoaderData>::create(this); + auto &data = creationChange->data; + data.source = d_func()->m_source; + return creationChange; +} + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/render/io/qsceneloader.h b/src/render/io/qsceneloader.h index 451848fff..e6003ec01 100644 --- a/src/render/io/qsceneloader.h +++ b/src/render/io/qsceneloader.h @@ -87,6 +87,7 @@ protected: private: Q_DECLARE_PRIVATE(QSceneLoader) + Qt3DCore::QNodeCreatedChangeBasePtr createNodeCreationChange() const Q_DECL_OVERRIDE; }; } // namespace Qt3DRender diff --git a/src/render/io/qsceneloader_p.h b/src/render/io/qsceneloader_p.h index f884feb75..dcc7f4c5f 100644 --- a/src/render/io/qsceneloader_p.h +++ b/src/render/io/qsceneloader_p.h @@ -71,6 +71,11 @@ public: QSceneLoader::Status m_status; }; +struct QSceneLoaderData +{ + QUrl source; +}; + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/render/io/scene.cpp b/src/render/io/scene.cpp index e5acc919b..85c699d2c 100644 --- a/src/render/io/scene.cpp +++ b/src/render/io/scene.cpp @@ -44,6 +44,7 @@ #include <Qt3DCore/private/qscene_p.h> #include <Qt3DCore/qbackendscenepropertychange.h> #include <Qt3DRender/qsceneloader.h> +#include <Qt3DRender/private/qsceneloader_p.h> #include <Qt3DRender/private/scenemanager_p.h> QT_BEGIN_NAMESPACE @@ -67,6 +68,15 @@ void Scene::updateFromPeer(Qt3DCore::QNode *peer) m_sceneManager->addSceneData(m_source, peerId()); } +void Scene::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) +{ + const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QSceneLoaderData>>(change); + const auto &data = typedChange->data; + m_source = data.source; + Q_ASSERT(m_sceneManager); + m_sceneManager->addSceneData(m_source, peerId()); +} + void Scene::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) { QScenePropertyChangePtr propertyChange = qSharedPointerCast<QScenePropertyChange>(e); diff --git a/src/render/io/scene_p.h b/src/render/io/scene_p.h index a9d8bb95b..bf7ce85e0 100644 --- a/src/render/io/scene_p.h +++ b/src/render/io/scene_p.h @@ -80,6 +80,8 @@ public: void setSceneManager(SceneManager *manager); private: + void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) Q_DECL_FINAL; + SceneManager *m_sceneManager; QUrl m_source; }; |