All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
LandmarkToRenderableRepository.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Buildings.h"
6 #include "Types.h"
7 #include "Rendering.h"
8 #include "ISceneElementInGraphObserver.h"
9 #include "CallbackCollection.h"
10 
11 #include <map>
12 #include <string>
13 #include <vector>
14 
15 namespace Eegeo
16 {
17  namespace Resources
18  {
19  namespace Buildings
20  {
21  class LandmarkToRenderableRepository : public Rendering::Scene::ISceneElementInGraphObserver<Rendering::Renderables::PackedRenderable>, private Eegeo::NonCopyable
22  {
23  public:
24 
26 
29 
30  const std::vector<Rendering::Renderables::CustomLandmarkRenderable*> GetLandmarksWithTextureName(const std::string& textureName) const;
31  const std::vector<Rendering::Renderables::CustomLandmarkRenderable*> GetLandmarksWhereTextureNameContainsString(const std::string& stringToMatch) const;
32  const std::vector<Rendering::Renderables::CustomLandmarkRenderable*> GetAllLandmarks() const;
33 
34  void RegisterRenderableAddedCallback(TCallback& callback);
35  void RegisterRenderableRemovedCallback(TCallback& callback);
36  void UnregisterRenderableAddedCallback(TCallback& callback);
37  void UnregisterRenderableRemovedCallback(TCallback& callback);
38 
39  private:
40  typedef std::map<std::string, std::vector<Rendering::Renderables::CustomLandmarkRenderable*> > TLandmarksToRenderables;
41  TLandmarksToRenderables m_landmarkToRenderables;
42 
45  };
46  }
47  }
48 }