clray

annotate src/scene.h @ 22:6c44e4b1726d

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