All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ChunkedLcmTerrainHeightLookup.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "ChunkedFileFormat.h"
6 #include "Collision.h"
7 #include "BuiltResourceWithKey.h"
8 #include "TerrainHeightLookup.h"
9 #include "ICollisionMeshResource.h"
10 #include "Types.h"
11 #include "VectorMath.h"
12 #include "Terrain.h"
13 
14 #include <vector>
15 
16 namespace Eegeo
17 {
18  namespace Resources
19  {
20  namespace Terrain
21  {
22  namespace lcm
23  {
25  {
26  public:
27 
29  Eegeo::Collision::CollisionMeshResourceRepository *pCollisionMeshResourceRepository,
30  const Streaming::MortonKey& key,
31  const Eegeo::dv3& ecefCellCenter,
32  Eegeo::Collision::CollisionBvh* pCollisionBvh,
33  const bool needsLegacyTerrainCollisionFixup);
35 
36  bool TryGetHeight(Eegeo::dv3 ecefPoint, float& height) const;
37  bool TryGetHeight(Eegeo::dv3 ecefPoint, Streaming::MortonKey key, float& height) const;
38 
39  float GetMaxHeight() const;
40  float GetMinHeight() const;
41 
42  void Unload();
43  void RemovedFromSceneGraph();
44  void AddedToSceneGraph();
45 
46  const Eegeo::Streaming::MortonKey& GetMortonKey() const;
47 
48  virtual const Eegeo::Collision::CollisionBvh& GetCollisionBvh() const;
49 
50  private:
51 
52  bool TryGetHeightFromCulledHeightMesh(Eegeo::dv3 ecefPoint, Streaming::MortonKey key, float& height) const;
53  bool TryGetHeightFromInvalidCulledHeightMesh(Eegeo::dv3 ecefPoint, float& height) const;
54 
55 
57  Eegeo::Collision::CollisionMeshResourceRepository *m_pCollisionMeshResourceRepository;
58 
59  Eegeo::dv3 m_ecefCellCenter;
60 
61  bool m_needsLegacyTerrainCollisionFixup;
62 
63  Eegeo::Collision::CollisionBvh* m_pCollisionBvh;
64  };
65  }
66  }
67  }
68 }