All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PackedRenderableFilter.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Rendering.h"
7 #include "IRenderableFilter.h"
8 #include "ISceneElementCriteriaFilterable.h"
9 #include "Streaming.h"
10 #include "Culling.h"
11 
12 #include <vector>
13 
14 namespace Eegeo
15 {
16  namespace Rendering
17  {
18  namespace Filters
19  {
21  {
22  public:
24  const Rendering::EnvironmentFlatteningService& environmentFlatteningService,
25  Culling::CullingVolumeVisibilityUpdater& cullingVolumeVisibilityUpdater);
26 
28 
29  void RemoveFilterCriteria();
30 
31  virtual void EnqueueRenderables(const Rendering::RenderContext& renderContext, RenderQueue& renderQueue);
32 
33  void SetEnabled(bool enabled);
34 
35  private:
36  void FetchRenderables();
37  void UpdateVisibility(const Rendering::RenderContext& renderContext);
38  void UpdateTransforms(const Rendering::RenderContext& renderContext);
39  void Enqueue(RenderQueue& renderQueue);
40 
42  const Rendering::EnvironmentFlatteningService& m_environmentFlatteningService;
43  Culling::CullingVolumeVisibilityUpdater& m_cullingVolumeVisibilityUpdater;
44 
46  bool m_enabled;
48  typedef std::vector<TSceneElement*> TSceneElementPtrVec;
49  TSceneElementPtrVec m_sceneElements;
50 
51  typedef std::vector<Renderables::PackedRenderable*> PackedRenderableVector;
52  PackedRenderableVector m_packedRenderables;
53 
54  typedef std::vector<RenderableBase*> RenderableVector;
55  RenderableVector m_renderables;
56  };
57  }
58  }
59 }