Sceneview
 All Classes Functions Variables Enumerations Enumerator Groups Pages
selection_query.hpp
1 #ifndef SCENEVIEW_SELECTION_QUERY_HPP__
2 #define SCENEVIEW_SELECTION_QUERY_HPP__
3 
4 #include <QVector3D>
5 
6 #include <sceneview/scene.hpp>
7 
8 namespace sv {
9 
10 struct QueryResult {
11  QueryResult(SceneNode* node, double distance) :
12  node(node), distance(distance) {}
13 
14  SceneNode* node;
15  double distance;
16 };
17 
37  public:
38  SelectionQuery(const Scene::Ptr& scene);
39 
51  std::vector<QueryResult> CastRay(const int64_t selection_mask,
52  const QVector3D& start, const QVector3D& dir);
53 
54  static bool Intersection(const AxisAlignedBox& box,
55  const QVector3D& ray_start, const QVector3D& ray_dir, double* result);
56  private:
57  Scene::Ptr scene_;
58 };
59 
60 } // namespace sv
61 
62 #endif // SCENEVIEW_SELECTION_QUERY_HPP__
Use to select objects in the scene.
Definition: selection_query.hpp:36
Pure virtual class that all scene graph nodes inherit.
Definition: scene_node.hpp:41
An axis-aligned box typically used for bounding box and intersection calculations.
Definition: axis_aligned_box.hpp:17
std::vector< QueryResult > CastRay(const int64_t selection_mask, const QVector3D &start, const QVector3D &dir)
Perform a ray cast selection query.
Definition: selection_query.hpp:10