summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-10-01 14:15:40 +0100
committerMike Krus <mike.krus@kdab.com>2019-10-02 13:54:39 +0100
commit2dabe5fc1e27e7d0538ee6d28806e7aa56c9fc53 (patch)
tree766b88fbfd65e565adf505083ea6adc6a2369ff5
parent89392ac9ae271de531907235685300a974b0492a (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>
-rw-r--r--src/core/aspects/qaspectmanager.cpp19
-rw-r--r--src/core/aspects/qaspectmanager_p.h3
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();