diff options
Diffstat (limited to 'src/render/jobs/pickboundingvolumeutils_p.h')
-rw-r--r-- | src/render/jobs/pickboundingvolumeutils_p.h | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/src/render/jobs/pickboundingvolumeutils_p.h b/src/render/jobs/pickboundingvolumeutils_p.h index 780c16cc8..923a49317 100644 --- a/src/render/jobs/pickboundingvolumeutils_p.h +++ b/src/render/jobs/pickboundingvolumeutils_p.h @@ -55,6 +55,7 @@ #include <Qt3DRender/QAbstractRayCaster> #include <Qt3DRender/private/qray3d_p.h> #include <Qt3DRender/private/qraycastingservice_p.h> +#include <Qt3DRender/qpickingsettings.h> QT_BEGIN_NAMESPACE @@ -99,19 +100,6 @@ private: bool isUnique(const QVector<ViewportCameraAreaDetails> &vcaList, const ViewportCameraAreaDetails &vca) const; }; -class Q_AUTOTEST_EXPORT EntityGatherer -{ -public: - explicit EntityGatherer(Entity *root); - - QVector<Entity *> entities() const; - -private: - Entity *m_root; - mutable QVector<Entity *> m_entities; - mutable bool m_needsRefresh; -}; - typedef QVector<RayCasting::QCollisionQueryResult::Hit> HitList; class Q_AUTOTEST_EXPORT HierarchicalEntityPicker @@ -124,6 +112,7 @@ public: bool collectHits(NodeManagers *manager, Entity *root); inline HitList hits() const { return m_hits; } inline QVector<Entity *> entities() const { return m_entities; } + inline QHash<Qt3DCore::QNodeId, int> entityToPriorityTable() const { return m_entityToPriorityTable; } private: RayCasting::QRay3D m_ray; @@ -132,6 +121,7 @@ private: bool m_objectPickersRequired; Qt3DCore::QNodeIdVector m_layerIds; QAbstractRayCaster::FilterMode m_filterMode; + QHash<Qt3DCore::QNodeId, int> m_entityToPriorityTable; }; struct Q_AUTOTEST_EXPORT AbstractCollisionGathererFunctor @@ -142,8 +132,9 @@ struct Q_AUTOTEST_EXPORT AbstractCollisionGathererFunctor bool m_objectPickersRequired = true; NodeManagers *m_manager = nullptr; RayCasting::QRay3D m_ray; + QHash<Qt3DCore::QNodeId, int> m_entityToPriorityTable; - virtual HitList computeHits(const QVector<Entity *> &entities, bool allHitsRequested) = 0; + virtual HitList computeHits(const QVector<Entity *> &entities, Qt3DRender::QPickingSettings::PickResultMode mode) = 0; // This define is required to work with QtConcurrent typedef HitList result_type; @@ -156,7 +147,7 @@ struct Q_AUTOTEST_EXPORT AbstractCollisionGathererFunctor struct Q_AUTOTEST_EXPORT EntityCollisionGathererFunctor : public AbstractCollisionGathererFunctor { - HitList computeHits(const QVector<Entity *> &entities, bool allHitsRequested) override; + HitList computeHits(const QVector<Entity *> &entities, Qt3DRender::QPickingSettings::PickResultMode mode) override; HitList pick(const Entity *entity) const override; }; @@ -165,7 +156,7 @@ struct Q_AUTOTEST_EXPORT TriangleCollisionGathererFunctor : public AbstractColli bool m_frontFaceRequested; bool m_backFaceRequested; - HitList computeHits(const QVector<Entity *> &entities, bool allHitsRequested) override; + HitList computeHits(const QVector<Entity *> &entities, Qt3DRender::QPickingSettings::PickResultMode mode) override; HitList pick(const Entity *entity) const override; }; @@ -173,7 +164,7 @@ struct Q_AUTOTEST_EXPORT LineCollisionGathererFunctor : public AbstractCollision { float m_pickWorldSpaceTolerance; - HitList computeHits(const QVector<Entity *> &entities, bool allHitsRequested) override; + HitList computeHits(const QVector<Entity *> &entities, Qt3DRender::QPickingSettings::PickResultMode mode) override; HitList pick(const Entity *entity) const override; }; @@ -181,7 +172,7 @@ struct Q_AUTOTEST_EXPORT PointCollisionGathererFunctor : public AbstractCollisio { float m_pickWorldSpaceTolerance; - HitList computeHits(const QVector<Entity *> &entities, bool allHitsRequested) override; + HitList computeHits(const QVector<Entity *> &entities, Qt3DRender::QPickingSettings::PickResultMode mode) override; HitList pick(const Entity *entity) const override; }; |