clray
annotate src/scene.h @ 23:51f115e337c2
separated obj loading and vector class
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Fri, 13 Aug 2010 18:20:45 +0100 |
parents | 6c44e4b1726d |
children | 13091c00d7ca |
rev | line source |
---|---|
nuclear@6 | 1 #ifndef MESH_H_ |
nuclear@6 | 2 #define MESH_H_ |
nuclear@6 | 3 |
nuclear@23 | 4 #include <stdio.h> |
nuclear@6 | 5 #include <vector> |
nuclear@6 | 6 |
nuclear@6 | 7 struct Vertex { |
nuclear@9 | 8 float pos[4]; |
nuclear@9 | 9 float normal[4]; |
nuclear@12 | 10 float tex[4]; |
nuclear@12 | 11 float padding[4]; |
nuclear@6 | 12 }; |
nuclear@6 | 13 |
nuclear@6 | 14 struct Face { |
nuclear@6 | 15 Vertex v[3]; |
nuclear@9 | 16 float normal[4]; |
nuclear@6 | 17 int matid; |
nuclear@12 | 18 int padding[3]; |
John@15 | 19 |
John@15 | 20 bool operator ==(const Face &f) const; |
nuclear@6 | 21 }; |
nuclear@6 | 22 |
nuclear@6 | 23 struct Material { |
nuclear@9 | 24 float kd[4], ks[4]; |
nuclear@6 | 25 float kr, kt; |
nuclear@6 | 26 float spow; |
nuclear@12 | 27 float padding; |
nuclear@6 | 28 }; |
nuclear@6 | 29 |
nuclear@6 | 30 struct Mesh { |
nuclear@6 | 31 std::vector<Face> faces; |
nuclear@6 | 32 int matid; |
nuclear@6 | 33 }; |
nuclear@6 | 34 |
nuclear@23 | 35 enum { |
nuclear@22 | 36 KDAXIS_X, |
nuclear@22 | 37 KDAXIS_Y, |
nuclear@22 | 38 KDAXIS_Z |
nuclear@22 | 39 }; |
nuclear@22 | 40 |
nuclear@22 | 41 #define KDCLEAR(node) ((node)->axis = -1) |
nuclear@22 | 42 #define KDUSED(node) ((node)->axis >= 0) |
nuclear@22 | 43 #define KDPARENT(x) ((x) >> 1) |
nuclear@22 | 44 #define KDLEFT(x) ((x) << 1) |
nuclear@22 | 45 #define KDRIGHT(x) (((x) << 1) + 1) |
nuclear@22 | 46 |
nuclear@22 | 47 struct KDNode { |
nuclear@22 | 48 int axis; |
nuclear@22 | 49 float pt; |
nuclear@23 | 50 }; |
nuclear@22 | 51 |
nuclear@6 | 52 class Scene { |
nuclear@6 | 53 public: |
nuclear@6 | 54 std::vector<Mesh*> meshes; |
nuclear@6 | 55 std::vector<Material> matlib; |
nuclear@23 | 56 std::vector<KDNode> kdtree; |
nuclear@6 | 57 |
nuclear@13 | 58 bool add_mesh(Mesh *m); |
John@14 | 59 int get_num_meshes() const; |
John@14 | 60 int get_num_materials() const; |
John@14 | 61 int get_num_faces() const; |
nuclear@13 | 62 |
John@14 | 63 Material *get_materials(); |
John@14 | 64 const Material *get_materials() const; |
nuclear@13 | 65 |
nuclear@6 | 66 bool load(const char *fname); |
nuclear@6 | 67 bool load(FILE *fp); |
nuclear@22 | 68 |
nuclear@23 | 69 void build_kdtree(); |
nuclear@6 | 70 }; |
nuclear@6 | 71 |
nuclear@6 | 72 #endif /* MESH_H_ */ |