All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
LightmappedRenderable.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Graphics.h"
6 #include "PackedRenderable.h"
7 #include "LayerIds.h"
8 #include "Rendering.h"
9 #include "CullingVolume.h"
10 #include "VectorMathDecl.h"
11 #include <vector>
12 #include "GLHelpers.h"
13 #include "IAsyncTexture.h"
14 
15 namespace Eegeo
16 {
17  namespace Rendering
18  {
19  namespace Renderables
20  {
22  {
23  public:
25  LayerIds::Values layerId,
26  Materials::IMaterial* material,
27  Rendering::Mesh* pMesh,
28  Culling::CullingVolumeTree* pCullingVolumeTree,
29  const VertexLayouts::VertexBinding& vertexBinding,
30  Eegeo::dv3 ecefPosition,
31  Eegeo::v4 positionBoundsMin,
32  Eegeo::v4 positionBoundsMax,
33  Eegeo::v2 uvBoundsMin,
34  Eegeo::v2 uvBoundsMax,
36  : PackedRenderable(layerId, material, pMesh, pCullingVolumeTree, vertexBinding, ecefPosition, positionBoundsMin, positionBoundsMax, uvBoundsMin, uvBoundsMax)
37  , m_pAsyncTexture(pAsyncTexture)
38  {
39  if (m_pAsyncTexture != NULL)
40  {
41  m_pAsyncTexture->IncrementReferenceCount();
42  }
43  }
44 
46  {
47  if (m_pAsyncTexture != NULL)
48  {
49  m_pAsyncTexture->DecrementReferenceCount();
50  }
51  }
52 
53  TTextureId GetLightmapTextureId() const
54  {
55  return m_pAsyncTexture->GetTextureInfo().textureId;
56  }
57 
58  void SetLightmapTexture(Rendering::AsyncTexturing::IAsyncTexture* pAsyncTexture)
59  {
60  if (m_pAsyncTexture != NULL)
61  {
62  m_pAsyncTexture->DecrementReferenceCount();
63  }
64  m_pAsyncTexture = pAsyncTexture;
65  m_pAsyncTexture->IncrementReferenceCount();
66  }
67 
68  private:
70  };
71  }
72  }
73 }