All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorHighlightRenderable.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Interiors.h"
6 #include "InteriorRenderable.h"
7 #include "LayerIds.h"
8 #include "Rendering.h"
9 #include "Culling.h"
10 #include "VectorMath.h"
11 #include "InteriorsStencilMirrorType.h"
12 
13 #include <vector>
14 #include <string>
15 
16 namespace Eegeo
17 {
18  namespace Rendering
19  {
20  namespace Renderables
21  {
23  {
24  public:
25 
26  const static std::string AreaHighlightPrefix;
27 
28  InteriorHighlightRenderable(LayerIds::Values layerId,
29  int floorIndex,
30  Materials::IMaterial* material,
31  Rendering::Mesh* pMesh,
32  Culling::CullingVolumeTree* pCullingVolumeTree,
33  const VertexLayouts::VertexBinding& vertexBinding,
34  Eegeo::dv3 ecefLocalOrigin,
35  Eegeo::v4 positionBoundsMin,
36  Eegeo::v4 positionBoundsMax,
37  Eegeo::v2 uvBoundsMin,
38  Eegeo::v2 uvBoundsMax,
39  const std::string& renderableId,
41  const float interiorTerrainHeight,
42  bool ownsMesh,
43  const std::string& interiorIdentifier);
44 
45  virtual ~InteriorHighlightRenderable();
46 
47  virtual void SetDiffuseColor(const v4& highlightColor);
48 
49  v4 GetDiffuseColor() const;
50 
51  v4 GetCombinedColor() const;
52 
53  void SetHighlightBorderThickness(const float highlightBorderThickness);
54 
55  float GetHighlightBorderThickness() const;
56 
57  std::string GetHighlightId() const;
58 
59  bool UpdateVisibility(const Eegeo::Geometry::Frustum& viewFrustum, Culling::CullingVolumeVisibilityUpdater& visibilityUpdater, float environmentScale);
60 
61  private:
62 
63  float GetCombinedAlpha() const;
64  bool IsInvisible() const;
65 
66  // mutable canonical state
67  v4 m_highlightColor;
68  float m_highlightBorderThickness;
69  };
70  }
71  }
72 }