00001 #ifndef _UNIVERSAL_MESH_H_ 00002 #define _UNIVERSAL_MESH_H_ 00003 00004 #include "cglib/mesh.h" 00005 00007 class UniversalMesh : public Mesh 00008 { 00009 public: 00011 UniversalMesh(); 00012 00014 virtual ~UniversalMesh(); 00015 00016 virtual int get_position_count() const; 00017 virtual Point3 get_position(int position_index) const; 00018 virtual int get_normal_count() const; 00019 virtual Vector3 get_normal(int normal_index) const; 00020 virtual int get_face_count() const; 00021 virtual int get_face_vertex_count(int face_index) const; 00022 virtual int get_face_vertex_position_index(int face_index, int vertex_index) const; 00023 virtual int get_face_vertex_normal_index(int face_index, int vertex_index) const; 00024 virtual Point3 get_face_vertex_position(int face_index, int vertex_index) const; 00025 virtual Vector3 get_face_vertex_normal(int face_index, int vertex_index) const; 00026 00028 virtual void append_position(const Point3 &position); 00029 00031 virtual void append_normal(const Vector3 &normal); 00032 00034 virtual void append_new_face(); 00035 00037 virtual void append_vertex_to_last_face(int position_index, int normal_index); 00038 00039 private: 00040 struct UniversalMeshImplementation; 00041 UniversalMeshImplementation *self; 00042 }; 00043 00044 #endif /* _UNIVERSAL_MESH_CPP_ */