All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorsEntityIdHighlightController.h
1 // Copyright eeGeo Ltd (2012-2016), All Rights Reserved
2 
3 #pragma once
4 
5 #include "InteriorsInstanceRepository.h"
6 #include "VectorMath.h"
7 
8 #include <map>
9 #include <string>
10 #include <vector>
11 
12 namespace Eegeo
13 {
14  namespace Resources
15  {
16  namespace Interiors
17  {
19  {
20  public:
21 
23  const v4& defaultHighlightColor = v4(1.0f, 1.0f, 1.0f, 1.0f));
24 
26 
28  void HighlightEntityId(const std::string& id) const;
30  void HighlightEntityIds(const std::vector<std::string>& ids, std::vector<Rendering::Renderables::InstancedInteriorFloorRenderable*>& out_highlightedRenderables) const;
31 
32  void HighlightEntityId(const std::string& interiorId, const std::string& id) const;
33  void HighlightEntityIds(const std::string& interiorId, const std::vector<std::string>& ids, std::vector<Rendering::Renderables::InstancedInteriorFloorRenderable*>& out_highlightedRenderables) const;
34  void ClearHighlights(const std::vector<Rendering::Renderables::InstancedInteriorFloorRenderable*>& highlightedRenderables) const;
35  void SetDefaultHighlightColour(const v4& highlightColor);
36 
37  private:
38  const InteriorsInstanceRepository& m_instanceRepository;
39  v4 m_defaultHighlightColor;
40 
41  typedef std::map<Rendering::Renderables::InstancedInteriorFloorRenderable*, int> CountPerRenderable;
42  typedef std::map<Rendering::Renderables::InstancedInteriorFloorRenderable*, std::vector<int> > RenderableOffsetMap;
43 
44  std::vector<InstanceStore> BuildInstanceStoresForIds(const std::string& interiorId, const std::vector<std::string>& ids) const;
45  CountPerRenderable BuildCountPerRenderable(const std::vector<InstanceStore>& instanceStoresForIds) const;
46  RenderableOffsetMap GetRenderableMapping(const CountPerRenderable& numRenderables, const std::vector<InstanceStore>& instanceStores) const;
47  };
48  }
49  }
50 }