diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2021-07-29 15:19:59 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2021-08-09 10:22:05 +0200 |
commit | 406ea4134444a05dd89f215b3144181c0b0ce924 (patch) | |
tree | 8df7212cd2e6a1bd9c9a5f1b7817fcaeaca459bd /src/render/jobs/pickboundingvolumeutils_p.h | |
parent | e354c455f50a2d4ebc317fc805159cce43329c10 (diff) |
Picking: reuse LayerFilterJob to perform layer filtering
This fixes picking for cases where multiple LayerFilters using different
filter modes are present in the FrameGraph. This also reduces code
duplication.
Pick-to: 6.2 6.1 5.15
Change-Id: I19d0c2c5777930820ab950cbf2bfe08ef7d2484f
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/jobs/pickboundingvolumeutils_p.h')
-rw-r--r-- | src/render/jobs/pickboundingvolumeutils_p.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/render/jobs/pickboundingvolumeutils_p.h b/src/render/jobs/pickboundingvolumeutils_p.h index d9c8eee22..6a637a1d7 100644 --- a/src/render/jobs/pickboundingvolumeutils_p.h +++ b/src/render/jobs/pickboundingvolumeutils_p.h @@ -84,8 +84,7 @@ struct Q_AUTOTEST_EXPORT ViewportCameraAreaDetails QRectF viewport; QSize area; QSurface *surface = nullptr; - Qt3DCore::QNodeIdVector layers; - QAbstractRayCaster::FilterMode layerFilterMode = QAbstractRayCaster::AcceptAnyMatchingLayers; + Qt3DCore::QNodeIdVector layersFilters; }; QT3D_DECLARE_TYPEINFO_3(Qt3DRender, Render, PickingUtils, ViewportCameraAreaDetails, Q_COMPLEX_TYPE) @@ -124,7 +123,8 @@ class Q_AUTOTEST_EXPORT HierarchicalEntityPicker public: explicit HierarchicalEntityPicker(const RayCasting::QRay3D &ray, bool requireObjectPicker = true); - void setFilterLayers(const Qt3DCore::QNodeIdVector &layerIds, QAbstractRayCaster::FilterMode mode); + void setLayerFilterIds(const Qt3DCore::QNodeIdVector &layerFilterIds); + void setLayerIds(const Qt3DCore::QNodeIdVector &layerIds, QAbstractRayCaster::FilterMode mode); bool collectHits(NodeManagers *manager, Entity *root); inline HitList hits() const { return m_hits; } @@ -136,8 +136,9 @@ private: HitList m_hits; std::vector<Entity *> m_entities; bool m_objectPickersRequired; + Qt3DCore::QNodeIdVector m_layerFilterIds; Qt3DCore::QNodeIdVector m_layerIds; - QAbstractRayCaster::FilterMode m_filterMode; + QAbstractRayCaster::FilterMode m_layerFilterMode = QAbstractRayCaster::AcceptAnyMatchingLayers; QHash<Qt3DCore::QNodeId, int> m_entityToPriorityTable; }; |