All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Pin.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Pins.h"
7 #include "VectorMath.h"
8 #include "LatLongAltitude.h"
9 
10 namespace Eegeo
11 {
12  namespace Pins
13  {
24  class Pin : protected Eegeo::NonCopyable
25  {
26  public:
35  Pin(const TPinId id, const Space::LatLong& latLong, float heightAboveTerrainInMetres, int categoryId, const void* pUserData = NULL);
36 
40  TPinId GetId() const;
41 
45  int GetCategoryId() const;
46 
50  const void* GetUserData() const;
51 
55  const dv3& GetEcefGeoidLocation() const;
56 
60  const dv3& GetEcefPosition() const;
61 
66  void SetTerrainHeight(float terrainHeight, int terrainHeightLevel);
67 
71  float GetHeightAboveTerrain() const;
72 
76  void SetHeightAboveTerrain(float heightAboveTerrainInMetres);
77 
81  void SetCategoryId(int categoryId);
82 
86  bool HasTerrainHeight() const;
87 
91  float TerrainHeight() const;
92 
96  int TerrainHeightLevel() const;
97 
101  void SetTransform(const m44& transform);
102 
106  void SetTransformOrigin(const dv3& ecefOrigin);
107 
111  const m44& GetTransform() const;
112 
116  const dv3& GetTransformOrigin() const;
117 
121  void SetColor(const v4& color);
122 
126  const v4& GetColor() const;
127 
128  private:
129  TPinId m_id;
130  Space::LatLong m_latLong;
131  float m_heightAboveTerrainInMetres;
132  dv3 m_ecefGeoidLocation;
133  int m_categoryId;
134  const void* const m_pUserData;
135 
136  float m_terrainHeight;
137  bool m_hasTerrainHeight;
138  int m_terrainHeightLevel;
139  dv3 m_cachedTerrainHeightCorrectedEcefOrigin;
140  m44 m_transform;
141  dv3 m_transformOrigin;
142  v4 m_color;
143 
144  void UpdateEcefPosition();
145  };
146  }
147 }