All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
MaterialId.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "ICallback.h"
7 
8 namespace Eegeo
9 {
10  namespace Rendering
11  {
12  namespace Materials
13  {
14  class MaterialId
15  {
16  public:
17  typedef u32 TValueType;
18 
19  MaterialId(u32 identity, Helpers::ICallback1<const TValueType>& releaseCallback)
20  : m_identity(identity)
21  , m_releaseCallback(releaseCallback)
22  { }
23 
24  ~MaterialId()
25  {
26  m_releaseCallback(m_identity);
27  }
28 
29  TValueType Value() const { return m_identity; }
30 
31  private:
32  TValueType m_identity;
33  Helpers::ICallback1<const TValueType>& m_releaseCallback;
34  };
35  }
36  }
37 }