All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
UnitySceneGraphObserver.h
1 #pragma once
2 
3 #include "ISceneElementInGraphObserver.h"
4 #include "SceneElement.h"
5 #include "UnityCallbacks.h"
6 
7 namespace Eegeo
8 {
9  namespace Unity
10  {
11  template <class TRenderableType>
12  class UnitySceneGraphObserver : public Rendering::Scene::ISceneElementInGraphObserver<TRenderableType>
13  {
14  public:
15 
16  UnitySceneGraphObserver(const MeshCallbacks& meshCallbacks)
17  : m_meshCallbacks(meshCallbacks)
18  {
19 
20  }
21 
22  private:
23 
24  void SetVisible(const std::string& resourceName, bool visible)
25  {
26  m_meshCallbacks.SetVisible(resourceName.c_str(), visible);
27  }
28 
29  void OnAddedToSceneGraph(Rendering::Scene::SceneElement<TRenderableType>* resource) override
30  {
31  SetVisible(resource->GetName(), true);
32  }
33 
34  void OnRemovedFromSceneGraph(Rendering::Scene::SceneElement<TRenderableType>* resource) override
35  {
36  SetVisible(resource->GetName(), false);
37  }
38 
39  const MeshCallbacks& m_meshCallbacks;
40  };
41  }
42 }