All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
SceneModelsModule.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Rendering.h"
7 #include "Lighting.h"
8 #include "Modules.h"
9 #include "DebugRendering.h"
10 #include "SceneModelFactory.h"
11 #include "Helpers.h"
12 #include "AsyncModels.h"
13 #include "Web.h"
14 
15 namespace Eegeo
16 {
17  namespace Modules
18  {
19  namespace Core
20  {
22  {
23  public:
27  Rendering::Shaders::ShaderIdGenerator& shaderIdGenerator,
28  Rendering::Materials::MaterialIdGenerator& materialIdGenerator,
29  Lighting::GlobalLighting& globalLighting,
30  Lighting::GlobalFogging& globalFogging,
31  Helpers::IFileIO& fileIO,
32  Web::IWebLoadRequestFactory& webLoadRequestFactory,
33  Helpers::IHttpCache& httpCache,
36  Rendering::RenderableFilters& renderableFilters,
37  DebugRendering::DebugRenderer& debugRenderer);
39 
40  static SceneModelsModule* Create(RenderingModule& renderingModule,
41  LightingModule& lightingModule,
42  DebugRenderingModule& debugRenderingModule,
43  AsyncLoadersModule& asyncLoadersModule,
44  Helpers::IFileIO& fileIO,
45  Web::IWebLoadRequestFactory& webLoadRequestFactory,
46  Helpers::IHttpCache& httpCache);
47 
48  void ReleaseUnusedResources();
49 
50  Rendering::SceneModels::SceneModelLoader& GetLocalModelLoader() const { return *m_pLocalFileLoader; }
51  Io::AsyncModels::HttpAsyncModelLoader& GetAsyncModelLoader() const { return *m_pAsyncModelLoader; }
52 
53  Rendering::SceneModels::SceneModelFactory& GetLocalSceneModelFactory() const { return *m_pLocalFactory; }
54  Rendering::SceneModels::SceneModelFactory& GetHttpSceneModelFactory() const { return *m_pHttpFactory; }
55 
56  Rendering::SceneModels::SceneModelFactory::TTextureRepo& GetTextureResourceRepository() const { return *m_pTextureRepo; }
57  Rendering::SceneModels::SceneModelFactory::TMaterialRepo& GetMaterialResourceRepository() const { return *m_pMaterialRepo; }
58  Rendering::SceneModels::SceneModelFactory::TMeshRepo& GetMeshResourceRepository() const { return *m_pMeshRepo; }
59  Rendering::SceneModels::SceneModelFactory::TTriStripMeshRepo& GetTriStripMeshResourceRepository() const { return *m_pTriStripMeshRepo; }
60  Rendering::Filters::SceneModelRenderableFilter& GetSceneModelRenderableFilter() const { return *m_pSceneModelRenderableFilter; }
61 
62 
63  private:
64 
65  Rendering::SceneModels::SceneModelLoader* m_pLocalFileLoader;
73  Rendering::Filters::SceneModelRenderableFilter* m_pSceneModelRenderableFilter;
74 
75  Io::AsyncModels::HttpAsyncModelLoader* m_pAsyncModelLoader;
76 
77  Rendering::RenderableFilters& m_renderableFilters;
78  };
79  }
80  }
81 }