summaryrefslogtreecommitdiffstats
path: root/src/core/qscene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/qscene.cpp')
-rw-r--r--src/core/qscene.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/core/qscene.cpp b/src/core/qscene.cpp
index 972659131..b5895c7aa 100644
--- a/src/core/qscene.cpp
+++ b/src/core/qscene.cpp
@@ -38,12 +38,14 @@
****************************************************************************/
#include "qscene_p.h"
-#include <QHash>
-#include <QReadLocker>
+
#include <Qt3DCore/qnode.h>
+#include <QtCore/QHash>
+#include <QtCore/QReadLocker>
+
#include <Qt3DCore/private/qlockableobserverinterface_p.h>
-#include <Qt3DCore/private/qobservableinterface_p.h>
#include <Qt3DCore/private/qnode_p.h>
+#include <Qt3DCore/private/qobservableinterface_p.h>
QT_BEGIN_NAMESPACE
@@ -55,6 +57,7 @@ public:
QScenePrivate(QAspectEngine *engine)
: m_engine(engine)
, m_arbiter(nullptr)
+ , m_rootNode(nullptr)
{
}
@@ -67,6 +70,7 @@ public:
QLockableObserverInterface *m_arbiter;
mutable QReadWriteLock m_lock;
mutable QReadWriteLock m_nodePropertyTrackModeLock;
+ QNode *m_rootNode;
};
@@ -171,6 +175,12 @@ QNodeId QScene::nodeIdFromObservable(QObservableInterface *observable) const
return d->m_observableToUuid.value(observable);
}
+QNode *QScene::rootNode() const
+{
+ Q_D(const QScene);
+ return d->m_rootNode;
+}
+
void QScene::setArbiter(QLockableObserverInterface *arbiter)
{
Q_D(QScene);
@@ -212,7 +222,8 @@ bool QScene::hasEntityForComponent(QNodeId componentUuid, QNodeId entityUuid)
{
Q_D(QScene);
QReadLocker lock(&d->m_lock);
- return d->m_componentToEntities.values(componentUuid).contains(entityUuid);
+ const auto range = d->m_componentToEntities.equal_range(componentUuid);
+ return std::find(range.first, range.second, entityUuid) != range.second;
}
QScene::NodePropertyTrackData QScene::lookupNodePropertyTrackData(QNodeId id) const
@@ -236,6 +247,12 @@ void QScene::removePropertyTrackDataForNode(QNodeId nodeId)
d->m_nodePropertyTrackModeLookupTable.remove(nodeId);
}
+void QScene::setRootNode(QNode *root)
+{
+ Q_D(QScene);
+ d->m_rootNode = root;
+}
+
} // Qt3D
QT_END_NAMESPACE