Couch
Mesh.h
Go to the documentation of this file.
1 
25 #ifndef MESH_H
26 #define MESH_H
27 
28 #include <vector>
29 #include <exception>
30 
31 #include "types.h"
32 #include "Spatial.h"
33 #include "Vertex.h"
34 #include "Index.h"
35 #include "Material.h"
36 
37 #include "Shaders/Shader.h"
38 
39 class SubMesh {
40 public:
41  SubMesh();
42  SubMesh(VertexList vertices, IndexList indices);
43  VertexList vertices;
44  IndexList indices;
45  Material material;
46  void Draw(Shader *shader);
47  SubMesh *Duplicate();
48 private:
49  Id VAO, VBO, EBO;
50  void SetupSubMesh();
51  friend class Mesh;
52 };
53 
54 typedef std::vector<SubMesh*> SubMeshList;
55 
61 class Mesh : public Spatial {
62 public:
63  ~Mesh();
64 
68  int GetNumSubmeshes();
74  Material GetMaterial(int submesh);
80  void SetMaterial(int submesh, Material material);
81 
90  static Mesh *FromFile(const char *filename);
91 
98  virtual void Draw(Shader *shader);
99 
100  virtual Mesh *Create();
101  virtual Mesh *Duplicate();
102  virtual Mesh *Instance();
103 
104  virtual Name GetType() const;
105 protected:
106  SubMeshList submeshes;
107  virtual void SetupMesh();
108  friend class MeshCollisionShape;
109 };
110 
111 #endif /* MESH_H */
Definition: CollisionShape.h:73
Definition: Mesh.h:61
virtual Mesh * Duplicate()
Definition: Mesh.cpp:151
Material GetMaterial(int submesh)
Definition: Mesh.cpp:97
virtual void Draw(Shader *shader)
Definition: Mesh.cpp:141
void SetMaterial(int submesh, Material material)
Definition: Mesh.cpp:104
int GetNumSubmeshes()
Definition: Mesh.cpp:93
virtual Mesh * Instance()
Definition: Mesh.cpp:163
static Mesh * FromFile(const char *filename)
Definition: Mesh.cpp:111
virtual Mesh * Create()
Definition: Mesh.cpp:147
Definition: Shader.h:12
Definition: Spatial.h:35
Definition: Mesh.h:39
Definition: Material.h:20