#ifndef __OBJ_LOADER__ #define __OBJ_LOADER__ #include #include #include #include #include using namespace std; class OBJ_vertex{ public: OBJ_vertex(){} ~OBJ_vertex(){} float GetX() const {return(x);} void SetX(float _x) {x = _x;} float GetY() const {return(y);} void SetY(float _y) {y = _y;} float GetZ() const {return(z);} void SetZ(float _z) {z = _z;} private: float x; float y; float z; }; class uv_coords{ public: uv_coords(){} ~uv_coords(){} float GetU() const {return(u);} void SetU(float _u) {u = _u;} float GetV() const {return(v);} void SetV(float _v) {v = _v;} private: float u; float v; }; class face{ public: face(); face(const face &right); ~face(); long GetNumVertices() const; long GetNumNormals() const; long GetNumUVs() const; void AddVertex(long index); long GetVertex(long index) const; void AddNormal(long index); long GetNormal(long index) const; void AddUV(long index); long GetUV(long index) const; private: vector *vertices; vector *normals; vector *uv; }; class OBJ{ public: OBJ(); ~OBJ(); long GetNumVertices() const; long GetNumNormals() const; long GetNumUVs() const; long GetNumFaces() const; OBJ_vertex *GetVertex(long index) const; OBJ_vertex *GetNormal(long index) const; uv_coords *GetUV(long index) const; face *GetFace(long index) const; void LoadOBJ(string file_name); void DumpOBJ(void); private: vector *vertices; vector *normals; vector *uv; vector *faces; }; #endif