All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorsPresentationModule.h
1 #pragma once
2 
3 #include "Modules.h"
4 #include "Interiors.h"
5 #include "Rendering.h"
6 #include "Streaming.h"
7 #include "InteriorsRenderableFilter.h"
8 #include "LandmarkToRenderableRepository.h"
9 #include "Lighting.h"
10 #include "Pins.h"
11 #include "Helpers.h"
12 #include "GLHelpers.h"
13 #include "Terrain.h"
14 #include "Camera.h"
15 #include "InteriorsConfiguration.h"
16 #include "Fonts.h"
17 #include "Labels.h"
18 #include "Culling.h"
19 #include "Input.h"
20 
21 
22 namespace Eegeo
23 {
24  namespace Modules
25  {
26  namespace Map
27  {
28  namespace Layers
29  {
31  {
32  public:
34 
35  static InteriorsPresentationModule* Create(
36  const InteriorsModelModule& interiorsModelModule,
37  const InteriorsStreamingModule& interiorsStreamingModule,
38  const Resources::Interiors::MetaData::InteriorMetaDataModule& interiorMetaDataModule,
39  BuildingModelModule& buildingModelModule,
40  BuildingPresentationModule& buildingPresentationModule,
41  Core::LightingModule& lightingModule,
42  Core::RenderingModule& renderingModule,
43  Core::FontsModule& fontsModule,
44  Eegeo::Labels::LabelsModule& labelsModule,
45  Helpers::ITextureFileLoader& textureFileLoader,
46  TerrainModelModule& terrainModelModule,
47  Rendering::EnvironmentFlatteningService& environmentFlatteningService,
49  Culling::CullingVolumeVisibilityUpdater& cullingVolumeVisibilityUpdater,
50  const Eegeo::Rendering::ScreenProperties& screenProperties,
52  Map::Layers::PlaceNamesPresentationModule& placenamesPresentationModule,
53  Map::Layers::PlaceNamesModelModule& placeNamesModelModule,
54  const Resources::Interiors::InteriorsConfiguration& interiorsConfig,
55  bool enableInteriors,
56  bool enableLabels
57  );
58 
59  static Resources::Interiors::InteriorsConfiguration DefaultConfig();
60 
61  Rendering::Filters::InteriorsRenderableFilter& GetInteriorsRenderableFilter() const;
62 
63  Resources::Interiors::InteriorsBackgroundRenderableFilter& GetInteriorsBackgroundRenderableFilter() const;
64 
65  Resources::Interiors::InteriorSelectionModel& GetInteriorSelectionModel() const;
66 
67  Resources::Interiors::InteriorInteractionModel& GetInteriorInteractionModel() const;
68 
69  Resources::Interiors::InteriorTransitionModel& GetInteriorTransitionModel() const;
70 
71  Resources::Interiors::IImmutableInteriorViewModel& GetInteriorViewModel() const;
72 
73  Resources::Interiors::IInteriorViewModelObserver& GetInteriorViewModelObserver() const;
74 
75  void Update(float dt, const Eegeo::Camera::RenderCamera& renderCamera);
76 
77  void EarlyUpdate(float dt);
78 
79  Resources::Interiors::Entities::IInteriorsLabelController& GetInteriorsLabelsController() const;
80 
81  const Resources::Interiors::InteriorsConfiguration& GetConfig() const;
82 
83  const Resources::Interiors::InteriorsHeightProvider& GetInteriorsHeightProvider() const;
84 
85  Resources::Interiors::Markers::IInteriorMarkerPickingService& GetInteriorMarkerPickingService() const;
86 
87  Resources::Interiors::Markers::InteriorMarkerPickingGestureHandler& GetInteriorMarkerPickingGestureHandler() const;
88 
89  Resources::Interiors::PropRenderableRepository& GetPropRenderableRepository() const;
90 
91  private:
93  Resources::Interiors::InteriorSelectionModel* pInteriorSelectionModel,
95  Resources::Interiors::InteriorsBackgroundMaterial* pInteriorsBackgroundMaterial,
96  Resources::Interiors::InteriorsBackgroundRenderable* pInteriorsBackgroundRenderable,
97  Resources::Interiors::InteriorsBackgroundViewModel* pInteriorsBackgroundViewModel,
98  Resources::Interiors::InteriorsBackgroundRenderableFilter* pInteriorsBackgroundRenderableFilter,
99  Rendering::Filters::InteriorsRenderableFilter* pInteriorsRenderableFilter,
100  Resources::Interiors::InteriorFloorAnimator* pInteriorFloorAnimator,
101  Resources::Interiors::InteriorInteractionModel& interiorInteractionModel,
102  Resources::Interiors::InteriorTransitionModel* pInteriorTransitionModel,
103  Resources::Interiors::InteriorInteractionModelAnimator* pInteriorInteractionModelAnimator,
106  Resources::Interiors::InteriorLandmarkViewModel* pInteriorLandmarkViewModel,
107  Fonts::IFontInstanceService& fontInstanceService,
108  const Fonts::FontInstance* pLegacyLabelFont,
110  Resources::Interiors::InteriorsHeightProvider* pInteriorsHeightProvicer,
111  Resources::Interiors::InteriorLabelModel* pInteriorLabelModel,
112  Resources::Interiors::InteriorLabelModelController* pInteriorLabelModelController,
114  Resources::Interiors::Markers::InteriorMarkerPickingGestureHandler* pInteriorMarkerPickingGestureHandler,
115  Resources::Interiors::PropRenderableRepository* pPropModelRenderableRepository
116  );
117 
118  const Resources::Interiors::InteriorsConfiguration m_interiorsConfig;
119 
120  Resources::Interiors::InteriorSelectionModel* m_pInteriorSelectionModel;
121 
123 
124  Resources::Interiors::InteriorsBackgroundMaterial* m_pInteriorsBackgroundMaterial;
125  Resources::Interiors::InteriorsBackgroundRenderable* m_pInteriorsBackgroundRenderable;
126 
127  Resources::Interiors::InteriorsBackgroundViewModel* m_pInteriorsBackgroundViewModel;
128  Resources::Interiors::InteriorsBackgroundRenderableFilter* m_pInteriorsBackgroundRenderableFilter;
129 
130  Rendering::Filters::InteriorsRenderableFilter* m_pInteriorsRenderableFilter;
131 
132  Resources::Interiors::InteriorFloorAnimator* m_pInteriorFloorAnimator;
133  Resources::Interiors::InteriorInteractionModel& m_interiorInteractionModel;
134  Resources::Interiors::InteriorTransitionModel* m_pInteriorTransitionModel;
135  Resources::Interiors::InteriorInteractionModelAnimator* m_pInteriorInteractionModelAnimator;
138  Resources::Interiors::InteriorLandmarkViewModel* m_pInteriorLandmarkViewModel;
139 
140  Fonts::IFontInstanceService& m_fontInstanceService;
141  const Fonts::FontInstance* m_pLegacyLabelFont;
142  Resources::Interiors::Entities::IInteriorsLabelController* m_pInteriorsLabelsController;
143  Resources::Interiors::InteriorsHeightProvider* m_pInteriorsHeightProvider;
144  Resources::Interiors::InteriorLabelModel* m_pInteriorLabelModel;
145  Resources::Interiors::InteriorLabelModelController* m_pInteriorLabelModelController;
146 
147  Resources::Interiors::Markers::IInteriorMarkerPickingService* m_pInteriorMarkerPickingService;
148  Resources::Interiors::Markers::InteriorMarkerPickingGestureHandler* m_pInteriorMarkerPickingGestureHandler;
149  Eegeo::Resources::Interiors::PropRenderableRepository* m_pPropRenderableRepository;
150  };
151  }
152  }
153  }
154 }