All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
CullingVolumeTree.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Culling.h"
6 #include "VectorMath.h"
7 #include "Types.h"
8 
9 #include <vector>
10 
11 namespace Eegeo
12 {
13  namespace Culling
14  {
16  {
17  public:
18  static CullingVolumeTree* Create(const Eegeo::dv3& ecefCellOrigin, const std::vector<CullingVolume>* pCullingVolumes);
19 
20  CullingVolumeTree(const Eegeo::dv3& ecefCellOrigin, const std::vector<CullingVolume>* pCullingVolumes);
21 
23 
24  bool containsNodes() const
25  {
26  return (m_pCullingVolumes != NULL) && (m_pCullingVolumes->empty() == false);
27  }
28 
29  void SetEcefCellOrigin(const Eegeo::dv3& ecefOrigin) { m_ecefCellOrigin = ecefOrigin; }
30  const dv3& GetEcefCellOrigin() const { return m_ecefCellOrigin; }
31  const std::vector<CullingVolume>& GetCullingVolumes() const { return *m_pCullingVolumes; }
32  const std::vector<Eegeo::v3>& GetCullingVolumeScaleTargets() const { return m_cullingVolumeScaleTargets; }
33 
34  CullingVolumeTree* DeepCopy() const;
35 
36  private:
37  Eegeo::dv3 m_ecefCellOrigin;
38  const std::vector<CullingVolume>* m_pCullingVolumes;
39  std::vector<Eegeo::v3> m_cullingVolumeScaleTargets;
40  };
41  }
42 }