diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-10-01 14:15:40 +0100 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2019-10-02 13:54:39 +0100 |
commit | 2dabe5fc1e27e7d0538ee6d28806e7aa56c9fc53 (patch) | |
tree | 766b88fbfd65e565adf505083ea6adc6a2369ff5 /src/core/aspects | |
parent | 89392ac9ae271de531907235685300a974b0492a (diff) |
Add accessor to retrieve frontend node from an id
Useful later to sync backend changes back to the frontend.
Change-Id: I874d140fc97462b8e186b66c882647db26d5678e
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/core/aspects')
-rw-r--r-- | src/core/aspects/qaspectmanager.cpp | 19 | ||||
-rw-r--r-- | src/core/aspects/qaspectmanager_p.h | 3 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp index a33f771e9..99f601cc9 100644 --- a/src/core/aspects/qaspectmanager.cpp +++ b/src/core/aspects/qaspectmanager.cpp @@ -62,6 +62,7 @@ #include <Qt3DCore/private/qtickclockservice_p.h> #include <Qt3DCore/private/qnodevisitor_p.h> #include <Qt3DCore/private/qnode_p.h> +#include <Qt3DCore/private/qscene_p.h> #include <QtCore/QCoreApplication> @@ -379,6 +380,24 @@ void QAspectManager::setPostConstructorInit(NodePostConstructorInit *postConstru m_postConstructorInit = postConstructorInit; } +QNode *QAspectManager::lookupNode(QNodeId id) const +{ + if (!m_root) + return nullptr; + + QNodePrivate *d = QNodePrivate::get(m_root); + return d->m_scene ? d->m_scene->lookupNode(id) : nullptr; +} + +QVector<QNode *> QAspectManager::lookupNodes(const QVector<QNodeId> &ids) const +{ + if (!m_root) + return {}; + + QNodePrivate *d = QNodePrivate::get(m_root); + return d->m_scene ? d->m_scene->lookupNodes(ids) : QVector<QNode *>{}; +} + /*! \internal \brief Drives the Qt3D simulation loop in the main thread diff --git a/src/core/aspects/qaspectmanager_p.h b/src/core/aspects/qaspectmanager_p.h index 38ddbc55d..d9a6c41ec 100644 --- a/src/core/aspects/qaspectmanager_p.h +++ b/src/core/aspects/qaspectmanager_p.h @@ -108,6 +108,9 @@ public: QServiceLocator *serviceLocator() const; void setPostConstructorInit(NodePostConstructorInit *postConstructorInit); + QNode *lookupNode(QNodeId id) const; + QVector<QNode *> lookupNodes(const QVector<QNodeId> &ids) const; + private: bool event(QEvent *event) override; void requestNextFrame(); |