All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
CityThemesModule.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Modules.h"
7 #include "Rendering.h"
8 #include "Location.h"
9 #include "CityThemes.h"
10 #include "Lighting.h"
11 #include "Web.h"
12 #include "AsyncTexturing.h"
13 #include "Weather.h"
14 #include "Camera.h"
15 #include "AnimatedObjects.h"
16 #include "VectorMathDecl.h"
17 #include "Tasks.h"
18 #include "IEegeoErrorHandler.h"
19 #include "NativeUIFactories.h"
20 #include "ConfigSections.h"
21 #include "Buildings.h"
22 #include <vector>
23 #include "IFileIO.h"
24 
25 #include <string>
26 
27 namespace Eegeo
28 {
29  namespace Modules
30  {
31  namespace Map
32  {
34  {
35  public:
40  Lighting::GlobalLighting& globalLighting,
41  Lighting::GlobalFogging& globalFogging,
42  Lighting::GlobalShadowing& globalShadowing,
44  Modules::Core::AsyncLoadersModule& asyncLoadersModule,
45  Eegeo::Weather::WeatherOverlayController & weatherOverlayController,
46  Rendering::Materials::WeatherOverlayMaterial2& weatherOverlayMaterial,
47  Rendering::EnvironmentTextures& environmentTextures,
48  Web::IWebLoadRequestFactory& webRequestFactory,
49  Helpers::ITextureFileLoader& textureLoader,
50  Helpers::IHttpCache& httpCache,
52  const Config::CityThemesConfigSection& cityThemesConfig,
53  IEegeoErrorHandler* pErrorHandler,
54  UI::NativeAlerts::IAlertBoxFactory& alertBoxFactory,
55  Helpers::IFileIO& fileIO,
56  Web::WebConnectivityValidator& webConnectivityValidator,
57  Resources::Buildings::LandmarkToRenderableRepository& landmarkToRenderableRepository,
58  Resources::Buildings::ILandmarkTextureLoader& landmarkTextureLoader);
59 
61 
62  static CityThemesModule* Create(Core::RenderingModule& renderingModule,
63  Core::LightingModule& lightingModule,
64  Core::AsyncLoadersModule& asyncLoadersModule,
65  WeatherModule& weatherModule,
66  EnvironmentMaterialModule& environmentMaterialModule,
67  Layers::BuildingModelModule& buildingModelModule,
68  Layers::TransportModelModule& transportModelModule,
69  Layers::TerrainModelModule& terrainModelModule,
70  Web::IWebLoadRequestFactory& webRequestFactory,
71  Helpers::ITextureFileLoader& textureLoader,
72  Helpers::IHttpCache& httpCache,
74  const Config::CityThemesConfigSection& cityThemesConfig,
75  IEegeoErrorHandler* pErrorHandler,
76  UI::NativeAlerts::IAlertBoxFactory& alertBoxFactory,
77  Helpers::IFileIO& fileIO,
78  Web::WebConnectivityValidator& webConnectivityValidator,
79  Resources::Buildings::ILandmarkTextureLoader& landmarkTextureLoader);
80 
81 
82  void Update(float dt, const dv3& cameraEcefLocation, const dv3& ecefInterestPoint);
83  bool IsMissingThemeData() const;
84 
85  Resources::CityThemes::ThemeStateTransitionController &GetThemeStateTransitionController() const;
86  Resources::CityThemes::ICityThemesService& GetCityThemesService() const;
87  Resources::CityThemes::ICityThemesUpdater& GetCityThemesUpdater() const;
88  Resources::CityThemes::ICityThemeRepository& GetCityThemesRepository() const;
89  Resources::CityThemes::ThemeStateController& GetThemeStateController() const;
90  Resources::CityThemes::CityThemeLoader& GetCityThemeLoader() const;
91  Resources::CityThemes::CityThemesAnimatedObjectsLoader& GetCityThemesAnimatedObjectsLoader() const;
92  Resources::CityThemes::CityThemesTextureUpdater& GetCityThemesTextureUpdater() const;
93 
94  private:
95  Resources::CityThemes::ThemeStateController *m_pThemeStateController;
96  Resources::CityThemes::ThemeChangeController *m_pThemeChangeController;
97  Resources::CityThemes::ThemeStateTransitionController *m_pThemeStateTransitionController;
98  Resources::CityThemes::CityThemeRepository* m_pCityThemesRepository;
99  Resources::CityThemes::CityThemesTextureUpdater* m_pCityThemesTextureUpdater;
100  Resources::CityThemes::CityThemesService* m_pCityThemesService;
101  Resources::CityThemes::CityThemesUpdater* m_pCityThemesUpdater;
102  Resources::CityThemes::CityThemesAnimatedObjectsLoader* m_pCityThemesAnimatedObjectsLoader;
103  Resources::CityThemes::CityThemeLoader* m_pCityThemeLoader;
104  Resources::CityThemes::CityThemesMissingDataHandler* m_pCityThemesMissingDataHandler;
105  };
106  }
107  }
108 }