All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorHighlightsModule.h
1 // Copyright eeGeo Ltd (2012-2017), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Modules.h"
6 #include "Interiors.h"
7 #include "InteriorMultipleResultRayCaster.h"
8 #include "InteriorsEntityPickedEvent.h"
9 #include "Types.h"
10 #include "MapCamera.h"
11 
12 #include <string>
13 #include <unordered_set>
14 #include <vector>
15 
16 namespace Eegeo
17 {
18  namespace Resources
19  {
20  namespace Interiors
21  {
22  namespace Highlights
23  {
25  {
26  public:
27 
28  static InteriorHighlightsModule* Create(
29  const Eegeo::Collision::AggregateCollisionBvhProvider& aggregateCollisionBvhProvider,
30  const Rendering::EnvironmentFlatteningService& environmentFlatteningService,
31  const Eegeo::Modules::Map::Layers::InteriorsModelModule& interiorsModelModule,
32  const Modules::Map::Layers::InteriorsPresentationModule& interiorsPresentationModule,
33  const Camera::MapCamera::MapCameraModule& mapCameraModule,
34  const Eegeo::Modules::Core::DebugRenderingModule& debugRenderingModule,
35  bool indoorEntityPickingDebugDrawEnabled
36  );
37 
39 
40  const Entities::IInteriorsEntityPicker& GetPickingService() const { return *m_pInteriorsPickingService; }
41  Entities::IInteriorsEntityPickedEvent& GetInteriorsEntityPickedEvent() const;
42  Input::IGestureHandler& GetInteriorsEntityPickingGestureHandler() const;
43 
44  IInteriorsHighlightService& GetHighlightService() { return *m_pInteriorsHighlightService; }
45  private:
48  const Entities::IInteriorsEntityPicker* pPickingService,
49  IInteriorsHighlightService* pInteriorsHighlightService,
50  const IInteriorsHighlightRepository* pInteriorsHighlightRepository,
51  const InteriorsHighlightController* pInteriorsHighlightController,
52  Entities::InteriorsEntityPickingGestureHandler* pInteriorsEntityPickingGestureHandler,
53  Entities::IInteriorsEntityPickedEvent* pInteriorsEntityPickedEvent
54  );
55 
56  const Collision::IMultipleResultRayCaster* m_pRayCaster;
57  const Entities::IInteriorsEntityPicker* m_pInteriorsPickingService;
58  IInteriorsHighlightService* m_pInteriorsHighlightService;
59  const IInteriorsHighlightRepository* m_pInteriorsHighlightRepository;
60  const InteriorsHighlightController* m_pInteriorsHighlightController;
61  Entities::InteriorsEntityPickingGestureHandler* const m_pInteriorsEntityPickingGestureHandler;
62  Entities::IInteriorsEntityPickedEvent* const m_pInteriorsEntityPickedEvent;
63  };
64  }
65  }
66  }
67 }