00001 00008 #ifndef _MODEL_H 00009 #define _MODEL_H 00010 00011 #include "utils.h" 00012 #include "material.h" 00013 00018 void draw_wire_cube( const Vec3& min, const Vec3& max, const Vec3f& color ); 00019 00024 void draw_solid_cube( const Vec3& min, const Vec3& max, const bool draw_faces[6] = NULL ); 00025 00027 void draw_capped_cylinder( double length, double radius, int quality = 3 ); 00028 00029 #define CUBE_FRONT 0 00030 #define CUBE_BACK 1 00031 #define CUBE_LEFT 2 00032 #define CUBE_RIGHT 3 00033 #define CUBE_TOP 4 00034 #define CUBE_BOTTOM 5 00035 00036 00040 class Model { 00041 public: 00042 Model( void ); 00043 Model( const Material& mat ); 00044 00045 virtual ~Model( void ) {} 00046 00050 virtual void render( void ); 00051 00055 virtual void draw_decor( Vec3 color ) 00056 { draw_wire_cube( get_min()*1.02, get_max()*1.02, color ); } 00057 00058 virtual Vec3 get_min( void ) { return Vec3( -1.0 ); } 00059 virtual Vec3 get_max( void ) { return Vec3( 1.0 ); } 00060 00061 virtual string get_info() 00062 { return "texture=\"" + _material.texture_filename + "\""; } 00063 00064 void set_material( Material m ) { _material = m; } 00065 private: 00066 Material _material; 00067 }; 00068 00069 #endif // header guard