summaryrefslogtreecommitdiffstats
path: root/src/core/qscene.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-09-16 12:01:01 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-09-30 00:23:39 +0200
commit6b8cd87f5d32825afa36d495aa36d3cbb1b45deb (patch)
tree224c25a151ca0561bedde9c09e3030f3f165766c /src/core/qscene.cpp
parent7ec4f470c3eac058186e7690547ffe15ea365050 (diff)
QSceneInterface method to add Component/Entities lookup
Change-Id: Id065c5c62906dc25f3b87385110af30854823d13 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/core/qscene.cpp')
-rw-r--r--src/core/qscene.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/core/qscene.cpp b/src/core/qscene.cpp
index 60be32c2e..ff190feab 100644
--- a/src/core/qscene.cpp
+++ b/src/core/qscene.cpp
@@ -60,6 +60,7 @@ public:
Q_DECLARE_PUBLIC(QScene)
QScene *q_ptr;
QHash<QUuid, QNode *> m_nodeLookupTable;
+ QMultiHash<QUuid, QUuid> m_componentToEntities;
QMultiHash<QUuid, QObservableInterface *> m_observablesLookupTable;
QChangeArbiter *m_arbiter;
mutable QReadWriteLock m_lock;
@@ -138,6 +139,27 @@ void QScene::setArbiter(QChangeArbiter *arbiter)
d->m_arbiter = arbiter;
}
+QList<QUuid> QScene::entitiesForComponent(const QUuid &uuid) const
+{
+ Q_D(const QScene);
+ QReadLocker lock(&d->m_lock);
+ return d->m_componentToEntities.values(uuid);
+}
+
+void QScene::addEntityForComponent(const QUuid &componentUuid, const QUuid &entityUuid)
+{
+ Q_D(QScene);
+ QWriteLocker lock(&d->m_lock);
+ d->m_componentToEntities.insert(componentUuid, entityUuid);
+}
+
+void QScene::removeEntityForComponent(const QUuid &componentUuid, const QUuid &entityUuid)
+{
+ Q_D(QScene);
+ QWriteLocker lock(&d->m_lock);
+ d->m_componentToEntities.remove(componentUuid, entityUuid);
+}
+
} // Qt3D
QT_END_NAMESPACE