All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
NavigationService.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "VectorMath.h"
6 #include "Location.h"
7 #include "Terrain.h"
8 
9 namespace Eegeo
10 {
11  namespace Location
12  {
14  {
15  public:
16 
17  enum GpsMode
18  {
19  GpsModeOff,
20  GpsModeFollow,
21  GpsModeCompass
22  };
23  private:
24  ILocationService* m_pLocationService;
25  Eegeo::dv3 m_currentPosition;
26  Eegeo::dv3 m_newPosition;
28  GpsMode m_gpsMode;
29 
30  float m_updatePeriodSeconds;
31  float m_absoluteHeadingDegrees;
32 
33  public:
34 
35  const static float DefaultUpdatePeriod;
36 
39 
41 
42  float GetAbsoluteHeadingDegrees() const { return m_absoluteHeadingDegrees; }
43 
44  bool IsGPSActive() const { return m_gpsMode != GpsModeOff; }
45  GpsMode GetGpsMode() const { return m_gpsMode; }
46 
47  void SetGpsMode(GpsMode mode);
48 
49  void SetUpdatePeriod(float updatePeriodSeconds) { m_updatePeriodSeconds = updatePeriodSeconds; }
50 
51  void Update(float deltaSeconds);
52 
53  void UpdateGPSPosition();
54  void UpdateCompass();
55 
56  bool TryGetGpsLocationOnTerrain(dv3& out_pointEcef) const;
57 
58  void CycleGPSMode();
59  };
60  }
61 }
62