diff options
Diffstat (limited to 'src/render/jobs/pickboundingvolumeutils_p.h')
-rw-r--r-- | src/render/jobs/pickboundingvolumeutils_p.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/render/jobs/pickboundingvolumeutils_p.h b/src/render/jobs/pickboundingvolumeutils_p.h index 0a65c58cc..08615c094 100644 --- a/src/render/jobs/pickboundingvolumeutils_p.h +++ b/src/render/jobs/pickboundingvolumeutils_p.h @@ -136,6 +136,21 @@ private: uint cndx, const QVector3D &c); }; +class Q_AUTOTEST_EXPORT HierarchicalEntityPicker +{ +public: + explicit HierarchicalEntityPicker(const RayCasting::QRay3D &ray); + + bool collectHits(Entity *root); + inline CollisionVisitor::HitList hits() const { return m_hits; } + inline QVector<Entity *> entities() const { return m_entities; } + +private: + RayCasting::QRay3D m_ray; + CollisionVisitor::HitList m_hits; + QVector<Entity *> m_entities; +}; + struct Q_AUTOTEST_EXPORT AbstractCollisionGathererFunctor { AbstractCollisionGathererFunctor(); @@ -148,6 +163,8 @@ struct Q_AUTOTEST_EXPORT AbstractCollisionGathererFunctor typedef CollisionVisitor::HitList result_type; result_type operator ()(const Entity *entity) const; virtual result_type pick(RayCasting::QAbstractCollisionQueryService *rayCasting, const Entity *entity) const = 0; + + static void sortHits(CollisionVisitor::HitList &results); }; struct Q_AUTOTEST_EXPORT EntityCollisionGathererFunctor : public AbstractCollisionGathererFunctor |