All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
StencilAreaViewFactory.h
1 // Copyright (c) 2015 eeGeo. All rights reserved.
2 
3 #pragma once
4 
5 #include "RenderingModule.h"
6 #include "StencilAreaShader.h"
7 #include "StencilAreaMaterial.h"
8 #include "StencilAreaFullScreenMaterial.h"
9 #include "StencilAreaPaletteModel.h"
10 #include "Rendering.h"
11 #include "StencilArea.h"
12 #include "ColorShader.h"
13 #include "Types.h"
14 #include <map>
15 
16 namespace Eegeo
17 {
18  namespace Data
19  {
20  namespace StencilArea
21  {
23  {
24  public:
25  static StencilAreaViewFactory* Create(Eegeo::Modules::Core::RenderingModule& renderingModule);
26 
29  Eegeo::Rendering::Shaders::ColorShader* pFullScreenShader,
31  const Rendering::VertexLayouts::VertexLayout& vertexLayout,
32  Rendering::GlBufferPool& glBufferPool,
35 
37 
38  StencilAreaView* CreateView(StencilAreaModel& model);
40 
41  void FreeView(StencilAreaView* pView);
42  void FreePalette(const StencilAreaPaletteModel& palette);
43  void Clear();
44  private:
45  typedef std::map<TStencilPaletteId, Materials::StencilAreaFullScreenMaterial*> TStencilPaletteToFullScreenMaterial;
46  typedef std::map<TStencilPaletteId, Materials::StencilAreaMaterial*> TStencilPaletteToAreaMaterial;
47  typedef std::map<TStencilPaletteId, u64> TStencilPaletteToSortKeyComponents;
48 
49  TStencilPaletteToFullScreenMaterial m_stencilPaletteFullScreenMaterials;
50  TStencilPaletteToAreaMaterial m_stencilPaletteAreaMaterials;
51  TStencilPaletteToSortKeyComponents m_stencilPaletteAreaSortKeyValues;
52 
54  Eegeo::Rendering::Shaders::ColorShader* m_pFullScreenShader;
55 
56  const Rendering::VertexLayouts::VertexLayout& m_vertexLayout;
57  Rendering::GlBufferPool& m_glBufferPool;
61  u64 m_currentSortKeyComponent;
62 
63  u64 GetUserDefinedValue(const TStencilPaletteId& paletteId);
64  Rendering::Mesh* CreateMesh(StencilAreaModel& model);
65  void RegisterNewPalette(const StencilAreaPaletteModel& palette);
66  };
67  }
68  }
69 }