00001 #ifndef _IGS_CIRCLE_H_ 00002 #define _IGS_CIRCLE_H_ 00003 00004 #pragma warning ( disable : 4786 ) 00005 #include "IGS_Object.h" 00006 #include <map> 00007 #include "math/circle.h" 00008 #include "math/vector4.h" 00009 #include <vector> 00010 00011 //============================================================================= 00012 class IGS_Circle : 00013 virtual public IGS_Object, 00014 public Circle 00015 { 00016 public: 00017 //constructor 00018 IGS_Circle(); 00019 00020 //consturctor 00021 IGS_Circle( const double radius ); 00022 00023 //prepare the object before rendering 00024 virtual void Prepare( const IGS_Controller& controller ); 00025 00026 //determine the radius of the circle 00027 double Radius() const; 00028 00029 //render the circle 00030 virtual void Render( const IGS_Controller& controller ) const; 00031 00032 //set the center of the circle 00033 void SetCenter( const Vector2& center ); 00034 00035 //set whether or not the circle should be filled in when rendered or not 00036 void SetRenderFilled( const bool filled ); 00037 00038 protected: 00039 //the vertices will be the same for all circles 00040 //double m_VertexList[ 33 ][ 3 ]; 00041 struct VertexList 00042 { 00043 double vertices[ 33 ][ 3 ]; 00044 }; 00045 00046 VertexList* m_VertexList; 00047 bool m_RenderFilled : 1; 00048 static std::map< double, VertexList > g_VertexLists; 00049 }; 00050 //============================================================================= 00051 #endif