All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
SphereMesh.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "VectorMath.h"
7 #include "DebugRenderable.h"
8 #include "Rendering.h"
9 #include <vector>
10 
11 namespace Eegeo
12 {
13  namespace DebugRendering
14  {
15  class SphereMesh : protected Eegeo::NonCopyable
16  {
17  float m_radius;
18  u32 m_segmentsW;
19  u32 m_segmentsH;
20  Eegeo::dv3 m_pos;
21  Eegeo::v3 m_color;
22  DebugRendering::DebugRenderable* m_renderable;
23 
24  public:
25  SphereMesh(float radius, u32 segmentsW, u32 segmentsH, Eegeo::dv3 pos, u32 *texture, Eegeo::v3 color)
26  : m_radius(radius)
27  , m_segmentsW(segmentsW)
28  , m_segmentsH(segmentsH)
29  , m_pos(pos)
30  , m_color(color)
31  {
32  m_renderable = Eegeo_NEW(DebugRenderable)(texture);
33  }
34 
35  ~SphereMesh()
36  {
37  Eegeo_DELETE m_renderable;
38  }
39 
40  void Draw(const Camera::RenderCamera& renderCamera, Eegeo::Rendering::GLState& glState);
41  void Tesselate(Eegeo::Rendering::GLState& glState);
42  void SetPositionECEF(const Eegeo::dv3& posECEF);
43 
44  private:
45  void BuildGeometry(std::vector<Eegeo::v3>& verts,
46  std::vector<Eegeo::v3>& colors,
47  std::vector<u16>& indices,
48  std::vector<Eegeo::v2>& uvs);
49 
50  };
51  }
52 }