dungeon_crawler

annotate prototype/src/mesh.h @ 7:8fb37db44fd8

first person motion
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 17 Aug 2012 14:29:37 +0300
parents 158de53b4e18
children e5567ddbf2ef
rev   line source
nuclear@2 1 #ifndef MESH_H_
nuclear@2 2 #define MESH_H_
nuclear@2 3
nuclear@2 4 #include <string>
nuclear@7 5 #include <assimp/scene.h>
nuclear@7 6 #include "vmath.h"
nuclear@2 7
nuclear@2 8 enum {
nuclear@2 9 MESH_ATTR_VERTEX,
nuclear@2 10 MESH_ATTR_NORMAL,
nuclear@2 11 MESH_ATTR_TANGENT,
nuclear@2 12 MESH_ATTR_TEXCOORD,
nuclear@2 13
nuclear@2 14 NUM_MESH_ATTR
nuclear@2 15 };
nuclear@2 16
nuclear@2 17
nuclear@2 18 class Mesh {
nuclear@2 19 private:
nuclear@2 20 std::string name;
nuclear@2 21
nuclear@2 22 unsigned int nverts, nfaces;
nuclear@2 23
nuclear@2 24 unsigned int vbo[NUM_MESH_ATTR];
nuclear@2 25 unsigned int ibo;
nuclear@2 26
nuclear@2 27 int tang_loc;
nuclear@2 28
nuclear@7 29 Matrix4x4 xform;
nuclear@7 30
nuclear@2 31 public:
nuclear@2 32 Mesh();
nuclear@2 33 ~Mesh();
nuclear@2 34
nuclear@7 35 void set_name(const char *name);
nuclear@4 36 const char *get_name() const;
nuclear@4 37
nuclear@2 38 bool create(const aiScene *scn, aiMesh *aim);
nuclear@2 39 void destroy();
nuclear@2 40
nuclear@7 41 void set_xform(const Matrix4x4 &mat);
nuclear@7 42 const Matrix4x4 &get_xform() const;
nuclear@7 43
nuclear@2 44 void set_attrib_location(int attr, int loc);
nuclear@2 45 int get_attrib_location(int attr) const;
nuclear@2 46
nuclear@2 47 void draw() const;
nuclear@2 48 };
nuclear@2 49
nuclear@2 50 #endif // MESH_H_