diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-09-16 12:01:01 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-09-30 00:23:39 +0200 |
commit | 6b8cd87f5d32825afa36d495aa36d3cbb1b45deb (patch) | |
tree | 224c25a151ca0561bedde9c09e3030f3f165766c /src/core/qscene.cpp | |
parent | 7ec4f470c3eac058186e7690547ffe15ea365050 (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.cpp | 22 |
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 |