All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorRenderablesRepository.h
1 // Copyright eeGeo Ltd (2012-2015), All Rights Reserved
2 
3 #pragma once
4 
5 #include "IInteriorRenderablesRepository.h"
6 #include "Interiors.h"
7 #include "Rendering.h"
8 #include "Types.h"
9 #include <map>
10 #include <set>
11 
12 namespace Eegeo
13 {
14  namespace Resources
15  {
16  namespace Interiors
17  {
18  namespace Materials
19  {
21  {
22  public:
23  void AddRenderablesForInterior(const std::string& interiorName,
24  TFloorCell& floorCell,
25  const TRenderables& rendrables);
26 
27  void RemoveRenderablesForInterior(const std::string& interiorName,
28  const TRenderables& rendrables);
29 
30  TRenderables GetRenderablesForInterior(const std::string& interiorName);
31 
32  size_t GetRenderablesCountForInterior(const std::string& interiorName);
33 
34  TFloorCell& GetCellForRenderable(TRenderable& renderable);
35 
36  private:
37  typedef std::set<TRenderablePtr> TStoredRenderables;
38  typedef std::map<std::string, TStoredRenderables> TRenderablesByInterior;
39  typedef std::pair<std::string, TStoredRenderables> TInteriorRenderablesPair;
40  typedef std::map<TRenderablePtr, const InteriorsFloorCell*> TFloorCellsByRenderable;
41  typedef std::pair<TRenderablePtr, TFloorCellPtr> TRenderableFloorCellPair;
42 
43  TRenderablesByInterior m_renderablesByInterior;
44  TFloorCellsByRenderable m_floorCellsByRenderable;
45  };
46  }
47  }
48  }
49 }