All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PackedRenderable.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "CulledMeshRenderable.h"
6 #include "LayerIds.h"
7 #include "Rendering.h"
8 #include "Culling.h"
9 #include "VectorMath.h"
10 #include <vector>
11 
12 namespace Eegeo
13 {
14  namespace Rendering
15  {
16  namespace Renderables
17  {
19  {
20  public:
22  LayerIds::Values layerId,
23  Materials::IMaterial* material,
24  Rendering::Mesh* pMesh,
25  Culling::CullingVolumeTree* pCullingVolumeTree,
26  const VertexLayouts::VertexBinding& vertexBinding,
27  Eegeo::dv3 ecefPosition,
28  Eegeo::v4 positionBoundsMin,
29  Eegeo::v4 positionBoundsMax,
30  Eegeo::v2 uvBoundsMin,
31  Eegeo::v2 uvBoundsMax);
32 
33  virtual void Update(const Rendering::RenderContext& renderContext, float environmentFlatteningScale);
34 
35  const Eegeo::v2& GetUVBoundsMin() const { return m_uvBoundsMin; }
36  const Eegeo::v2& GetUVBoundsMax() const { return m_uvBoundsMax; }
37  const Eegeo::v4& GetPositionBoundsMin() const { return m_positionBoundsMin; }
38  const Eegeo::v4& GetPositionBoundsMax() const { return m_positionBoundsMax; }
39 
40  const Eegeo::v3& GetCameraRelativeModelOrigin() const { return m_cameraRelativeModelOrigin; }
41 
42  protected:
43  virtual void UpdateCachedFlatteningTransform(float environmentFlatteningScale);
44 
45  m44 m_modelToWorldCached;
46  Eegeo::v4 m_positionBoundsMin;
47  Eegeo::v4 m_positionBoundsMax;
48 
49  Eegeo::v2 m_uvBoundsMin;
50  Eegeo::v2 m_uvBoundsMax;
51 
52  Eegeo::v3 m_cameraRelativeModelOrigin;
53  float m_cachedEnvironmentFlattenScale;
54 
55  private:
56  m44 CalcUnpackMVP(const dv3& ecefCameraPosition, const Eegeo::m44& viewProjection) const;
57  };
58  }
59  }
60 }