00001 #ifndef X3DTK_GL_CYLINDER_H 00002 #define X3DTK_GL_CYLINDER_H 00003 00004 #include "GL_X3DGeometry3DNode.h" 00005 00006 namespace X3DTK { 00007 namespace GL { 00008 00009 class CylinderDrawArray; 00010 00017 class Cylinder : public X3DGeometry3DNode 00018 { 00019 public: 00021 Cylinder(); 00023 virtual SFNode clone() const; 00025 virtual ~Cylinder(); 00026 00028 void setRadius(const SFFloat &radius); 00030 void setHeight(const SFFloat &height); 00032 void setSide(const SFBool &side); 00034 void setBottom(const SFBool &bottom); 00036 void setTop(const SFBool &top); 00038 void setCylinderArray(CylinderDrawArray *cylinderArray); 00039 00041 inline const SFFloat &getRadius() const {return _radius;}; 00043 inline const SFFloat &getHeight() const {return _height;}; 00045 inline const SFBool &getSide() const {return _side;}; 00047 inline const SFBool &getBottom() const {return _bottom;}; 00049 inline const SFBool &getTop() const {return _top;}; 00051 inline CylinderDrawArray *getCylinderArray() const {return _cylinderArray;}; 00052 00054 virtual void update(); 00056 virtual void draw() const; 00057 00058 protected: 00060 Cylinder(const Cylinder &C); 00061 00062 private: 00064 SFFloat _radius; 00066 SFFloat _height; 00068 SFBool _side; 00070 SFBool _bottom; 00072 SFBool _top; 00074 CylinderDrawArray *_cylinderArray; 00075 }; 00076 00077 } 00078 } 00079 00080 #endif