diff options
author | Michael Brasser <mbrasser@ford.com> | 2020-10-21 14:40:23 -0500 |
---|---|---|
committer | Michael Brasser <michael.brasser@live.com> | 2020-11-04 09:11:12 -0500 |
commit | 1f18e01d391cc3baaadabb6fd716d7f8fa889995 (patch) | |
tree | a35f37ef6dfb00be6b91b5c08a3154a2da4723b9 | |
parent | dbf5da312ae3f406cc45a80c6ab2464b6e2d1e14 (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.cpp | 48 |
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); |