All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorsMaterialService.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Interiors.h"
6 #include "Types.h"
7 #include "Rendering.h"
8 #include "IInteriorsMaterialService.h"
9 
10 #include <string>
11 #include <vector>
12 #include <map>
13 
14 namespace Eegeo
15 {
16  namespace Resources
17  {
18  namespace Interiors
19  {
21  {
22  public:
23  InteriorsMaterialService(IInteriorsMaterialFactory& interiorsMaterialFactory,
24  Rendering::IMaterialRepository& materialRepository);
25 
26  virtual ~InteriorsMaterialService();
27 
28  virtual Eegeo::Rendering::Materials::IMaterial* Create(const std::string& interiorName,
29  const InteriorMaterialData& interiorMaterialData);
30 
31  virtual void DestroyAllForInterior(const std::string& interiorName);
32 
33  virtual bool Contains(const std::string& interiorName,
34  const std::string& materialName) const;
35 
36  virtual Eegeo::Rendering::Materials::IMaterial* Get(const std::string& interiorName,
37  const std::string& materialName) const;
38 
39  private:
40  void DestroyAll();
41 
42  Eegeo::Rendering::Materials::IMaterial* GetNonCommon(const std::string& interiorName,
43  const std::string& materialName);
44 
45  typedef std::map<std::string, Rendering::IMaterialRepository*> TInteriorToMaterialsMap;
46 
47  IInteriorsMaterialFactory& m_interiorsMaterialFactory;
48  TInteriorToMaterialsMap m_interiorsMaterialsRepository;
49  Rendering::IMaterialRepository& m_commonMaterialRepository;
50  };
51  }
52  }
53 }