All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PinView.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "VectorMath.h"
7 #include "Bounds.h"
8 #include "Pins.h"
9 
10 namespace Eegeo
11 {
12  namespace Pins
13  {
20  class PinView : protected Eegeo::NonCopyable
21  {
22  public:
27  PinView(Pin& pin, const Eegeo::Geometry::Bounds3D& modelVertexBounds);
28 
31  ~PinView();
32 
36  Pin& GetPin() const;
37 
41  void SetScale(float value);
42 
46  float GetScale() const;
47 
51  void SetDimensions(const v2& value);
52 
56  v2 GetDimensions() const;
57 
61  void SetEcefOrigin(const dv3& ecefOrigin);
62 
66  const dv3& GetEcefOrigin() const;
67 
71  float GetHeightAboveTerrain() const;
72 
76  void SetModelViewProjection(const m44& modelViewProjection);
77 
81  const m44& GetModelViewProjection() const;
82 
87  void UpdateBounds(int screenWidth, int screenHeight);
88 
93 
98 
102  void SetTransform(const m44& transform);
103 
107  void SetTransformOrigin(const dv3& ecefOrigin);
108 
112  const m44& GetTransform() const;
113 
117  const dv3& GetTransformOrigin() const;
118 
122  void SetColor(const v4& color);
123 
127  const v4& GetColor() const;
128 
129  private:
130  m44 m_mvp;
131  m44 m_transform;
132  dv3 m_ecefOrigin;
133  dv3 m_ecefTransformOrigin;
134  v4 m_color;
135  Geometry::Bounds3D m_vertexBounds;
136  Geometry::Bounds3D m_viewSpaceBounds;
137  Geometry::Bounds2D m_screenSpaceBounds;
138  float m_scale;
139  Pin& m_pin;
140 
141  void SetViewSpaceBounds(const Geometry::Bounds3D& viewSpaceBounds);
142  void SetScreenSpaceBounds(const Geometry::Bounds2D& screenSpaceBounds);
143  };
144  }
145 }