All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PointOnMapFactory.h
1 #pragma once
2 
3 #include "Types.h"
4 #include "Helpers.h"
5 #include "Interiors.h"
6 #include "Positioning.h"
7 #include "Labels.h"
8 #include "Terrain.h"
9 #include "MapLayers.h"
10 #include "Rendering.h"
11 
12 #include <memory>
13 #include <string>
14 
15 namespace Eegeo
16 {
17  namespace Positioning
18  {
20  {
21  public:
22  virtual ~IPointOnMapFactory() {};
23 
24  virtual IPointOnMap* Create(const PointOnMapCreateParams& createParams) = 0;
25  };
26 
28  {
29  public:
30  PointOnMapFactory(IPointOnMapIdGenerator& pointOnMapIdGenerator,
31  const Resources::Terrain::Heights::TerrainHeightProvider& terrainHeightProvider,
32  const Resources::Interiors::InteriorsModelRepository& interiorsModelRepository,
33  const IPositioningViewComponent& positioningViewComponent,
34  TerrainHeightResourceChangedEvent& terrainHeightResourceChangedEvent,
35  InteriorModelChangedEvent& interiorModelChangedEvent);
36 
37  virtual ~PointOnMapFactory() override;
38 
39  IPointOnMap* Create(const PointOnMapCreateParams& createParams) override;
40  private:
41  std::unique_ptr<Helpers::MortonKeyEventProxy<TerrainHeightResourceChangedEvent, 17>> m_pMortonKeyEventProxy;
42  std::unique_ptr<Helpers::GenericEventProxy<InteriorModelChangedEvent>> m_pInteriorModelEventProxy;
43 
44  IPointOnMapIdGenerator& m_pointOnMapIdGenerator;
45  const Resources::Terrain::Heights::TerrainHeightProvider& m_terrainHeightProvider;
46  const Resources::Interiors::InteriorsModelRepository& m_interiorsModelRepository;
47  const IPositioningViewComponent& m_positioningViewComponent;
48  TerrainHeightResourceChangedEvent& m_terrainHeightResourceChangedEvent;
49  InteriorModelChangedEvent& m_interiorModelChangedEvent;
50  };
51  }
52 }