summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brasser <mbrasser@ford.com>2020-10-21 14:40:23 -0500
committerMichael Brasser <michael.brasser@live.com>2020-11-04 09:11:12 -0500
commit1f18e01d391cc3baaadabb6fd716d7f8fa889995 (patch)
treea35f37ef6dfb00be6b91b5c08a3154a2da4723b9
parentdbf5da312ae3f406cc45a80c6ab2464b6e2d1e14 (diff)
Make ObjectPicker optional for Scene2D
Don't require it if mouseEnabled is false. Change-Id: I901e53b9df2f51e507af3c4423ebd71b253d1a6b Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--src/quick3d/quick3dscene2d/items/scene2d.cpp48
1 files changed, 25 insertions, 23 deletions
diff --git a/src/quick3d/quick3dscene2d/items/scene2d.cpp b/src/quick3d/quick3dscene2d/items/scene2d.cpp
index d3cacda3e..bee6c5ca5 100644
--- a/src/quick3d/quick3dscene2d/items/scene2d.cpp
+++ b/src/quick3d/quick3dscene2d/items/scene2d.cpp
@@ -190,31 +190,33 @@ void Scene2D::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
if (id != m_outputId)
setOutput(id);
- auto ids = Qt3DCore::qIdsForNodes(node->entities());
- std::sort(std::begin(ids), std::end(ids));
- Qt3DCore::QNodeIdVector addedEntities;
- Qt3DCore::QNodeIdVector removedEntities;
- std::set_difference(std::begin(ids), std::end(ids),
- std::begin(m_entities), std::end(m_entities),
- std::inserter(addedEntities, addedEntities.end()));
- std::set_difference(std::begin(m_entities), std::end(m_entities),
- std::begin(ids), std::end(ids),
- std::inserter(removedEntities, removedEntities.end()));
- for (const auto &id: addedEntities) {
- Qt3DCore::QEntity *entity = qobject_cast<Qt3DCore::QEntity *>(dnode->m_scene->lookupNode(id));
- if (!entity)
- return;
+ if (m_mouseEnabled) {
+ auto ids = Qt3DCore::qIdsForNodes(node->entities());
+ std::sort(std::begin(ids), std::end(ids));
+ Qt3DCore::QNodeIdVector addedEntities;
+ Qt3DCore::QNodeIdVector removedEntities;
+ std::set_difference(std::begin(ids), std::end(ids),
+ std::begin(m_entities), std::end(m_entities),
+ std::inserter(addedEntities, addedEntities.end()));
+ std::set_difference(std::begin(m_entities), std::end(m_entities),
+ std::begin(ids), std::end(ids),
+ std::inserter(removedEntities, removedEntities.end()));
+ for (const auto &id: addedEntities) {
+ Qt3DCore::QEntity *entity = qobject_cast<Qt3DCore::QEntity *>(dnode->m_scene->lookupNode(id));
+ if (!entity)
+ return;
- if (registerObjectPickerEvents(entity))
- m_entities.push_back(id);
- else
- Qt3DCore::QNodePrivate::get(const_cast<Qt3DCore::QNode *>(frontEnd))->update();
- }
- for (const auto &id: removedEntities) {
- m_entities.removeOne(id);
- unregisterObjectPickerEvents(id);
+ if (registerObjectPickerEvents(entity))
+ m_entities.push_back(id);
+ else
+ Qt3DCore::QNodePrivate::get(const_cast<Qt3DCore::QNode *>(frontEnd))->update();
+ }
+ for (const auto &id: removedEntities) {
+ m_entities.removeOne(id);
+ unregisterObjectPickerEvents(id);
+ }
+ std::sort(std::begin(m_entities), std::end(m_entities));
}
- std::sort(std::begin(m_entities), std::end(m_entities));
if (firstTime)
setSharedObject(dnode->m_renderManager->m_sharedObject);