All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
TerrainHeightsCallback.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "TerrainHeightLookup.h"
6 
7 namespace Eegeo
8 {
9  namespace Resources
10  {
11  namespace Terrain
12  {
13  namespace Heights
14  {
16  {
17  public:
18  virtual void operator()(const ITerrainHeightLookup& terrainHeightLookup) = 0;
19  };
20 
21  template <class T> class TTerrainHeightsCallback : public ITerrainHeightsCallback
22  {
23  private:
24  void (T::*m_callback)(const ITerrainHeightLookup& terrainHeightLookup);
25  T* m_context;
26  public:
27  TTerrainHeightsCallback(T* context, void (T::*callback)(const ITerrainHeightLookup& terrainHeightLookup))
28  : m_callback(callback)
29  , m_context(context)
30  {
31  }
32 
33  virtual void operator()(const ITerrainHeightLookup& terrainHeightLookup)
34  {
35  (*m_context.*m_callback)(terrainHeightLookup);
36  }
37  };
38  }
39  }
40  }
41 }