All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PropRenderableRepository.h
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 #include <unordered_map>
6 #include "Rendering.h"
7 #include "ICallback.h"
8 #include "CallbackCollection.h"
9 #include "Interiors.h"
10 
11 namespace Eegeo
12 {
13  namespace Resources
14  {
15  namespace Interiors
16  {
18  {
19  public:
20 
21  typedef std::vector<Rendering::Renderables::InstancedInteriorFloorRenderable*> PropRenderableVector;
22  typedef std::unordered_map<int, PropRenderableVector> FloorToRenderableVectorMap;
23 
24  void AddRenderable(Rendering::Renderables::InstancedInteriorFloorRenderable* pRenderable);
25  void RemoveRenderable(Rendering::Renderables::InstancedInteriorFloorRenderable* pRenderable);
26 
29 
31  void UnregisterPropRemovedCallback(Helpers::ICallback1<Rendering::Renderables::InstancedInteriorFloorRenderable&>& callback);
32 
33  const PropRenderableVector& GetRenderablesForInteriorAndFloor(const InteriorId& interiorId, int floorId) const;
34 
36 
37  private:
38 
39  FloorToRenderableVectorMap& GetOrAddFloorToRenderableVectorMap(const InteriorId& interiorId);
40  std::vector<Rendering::Renderables::InstancedInteriorFloorRenderable*>& GetOrAddRenderableVectorForFloor(const InteriorId& interiorId, int floorId);
41 
42  std::unordered_map<std::string, FloorToRenderableVectorMap> m_renderablesByInteriorId;
45  };
46  }
47  }
48 }