diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2017-01-24 10:43:32 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2017-01-25 14:56:43 +0000 |
commit | 393ab950be4a622dc2616c061eeb4f2194991093 (patch) | |
tree | a8e83bb510c9cc58c1461eb2345f122925e09c34 /src/core/qscene.cpp | |
parent | 4f6bf6d53c50221977d3f6e2c04ced70d815e6ac (diff) |
Allow to filter change events based on a track property
* QNode now has a PropertyTrackMode property
* QScene contains a table of PropertyTrakcMode data
* QPostman checks if a QNode is supposed to receive a change based on the
information available in the QScene property track mode table
* Unit tests updated and added for QPostman
Change-Id: I3b88037a949020a917c81817f1451ef532065982
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/core/qscene.cpp')
-rw-r--r-- | src/core/qscene.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/core/qscene.cpp b/src/core/qscene.cpp index 42c3a2bc8..972659131 100644 --- a/src/core/qscene.cpp +++ b/src/core/qscene.cpp @@ -63,8 +63,10 @@ public: QMultiHash<QNodeId, QNodeId> m_componentToEntities; QMultiHash<QNodeId, QObservableInterface *> m_observablesLookupTable; QHash<QObservableInterface *, QNodeId> m_observableToUuid; + QHash<QNodeId, QScene::NodePropertyTrackData> m_nodePropertyTrackModeLookupTable; QLockableObserverInterface *m_arbiter; mutable QReadWriteLock m_lock; + mutable QReadWriteLock m_nodePropertyTrackModeLock; }; @@ -213,6 +215,27 @@ bool QScene::hasEntityForComponent(QNodeId componentUuid, QNodeId entityUuid) return d->m_componentToEntities.values(componentUuid).contains(entityUuid); } +QScene::NodePropertyTrackData QScene::lookupNodePropertyTrackData(QNodeId id) const +{ + Q_D(const QScene); + QReadLocker lock(&d->m_nodePropertyTrackModeLock); + return d->m_nodePropertyTrackModeLookupTable.value(id); +} + +void QScene::setPropertyTrackDataForNode(QNodeId nodeId, const QScene::NodePropertyTrackData &data) +{ + Q_D(QScene); + QWriteLocker lock(&d->m_nodePropertyTrackModeLock); + d->m_nodePropertyTrackModeLookupTable.insert(nodeId, data); +} + +void QScene::removePropertyTrackDataForNode(QNodeId nodeId) +{ + Q_D(QScene); + QWriteLocker lock(&d->m_nodePropertyTrackModeLock); + d->m_nodePropertyTrackModeLookupTable.remove(nodeId); +} + } // Qt3D QT_END_NAMESPACE |