summaryrefslogtreecommitdiffstats
path: root/src/core/qscene.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2017-01-24 10:43:32 +0100
committerPaul Lemire <paul.lemire@kdab.com>2017-01-25 14:56:43 +0000
commit393ab950be4a622dc2616c061eeb4f2194991093 (patch)
treea8e83bb510c9cc58c1461eb2345f122925e09c34 /src/core/qscene.cpp
parent4f6bf6d53c50221977d3f6e2c04ced70d815e6ac (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.cpp23
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