All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorMultipleResultRayCaster.h
1 // Copyright eeGeo Ltd (2012-2017), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Collision.h"
6 #include "VectorMath.h"
7 #include "CollisionGroup.h"
8 #include "RayCasterResult.h"
9 #include "RayNodeIntersectionResult.h"
10 #include "Rendering.h"
11 #include "IMultipleResultRayCaster.h"
12 #include "InteriorsPresentationModule.h"
13 #include "RayCasterBase.h"
14 
15 #include <vector>
16 
17 namespace Eegeo
18 {
19  namespace Collision
20  {
22  {
23  public:
24  InteriorMultipleResultRayCaster(const ICollisionBvhProvider& collisionBvhProvider,
25  const Eegeo::Rendering::EnvironmentFlatteningService& environmentFlatteningService,
26  const Eegeo::Modules::Map::Layers::InteriorsPresentationModule& interiorPresentationModel);
27 
28  virtual ~InteriorMultipleResultRayCaster() {;}
29 
30  virtual std::vector<RayCasterResult> CastRay(const Eegeo::dv3& rayOrigin, const Eegeo::dv3& rayDirection, u32 collidableGroupsMask = Collision::CollisionGroup::CollideAll);
31 
32  private:
33  const Eegeo::Rendering::EnvironmentFlatteningService& m_environmentFlatteningService;
34  const Eegeo::Modules::Map::Layers::InteriorsPresentationModule& m_interiorPresentationModel;
35 
36  std::vector<RayCasterResult> FindRayIntersections(
37  const float environmentFlatteningScale, const Eegeo::dv3& rayOrigin, const Eegeo::dv3& rayDirection) const;
38  };
39  }
40 }