00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __CONE_H__
00030 #define __CONE_H__
00031
00032 #include "X3DGeometryNode.h"
00033 #include "SFFloat.h"
00034
00035 namespace H3D {
00036
00071 class H3DAPI_API Cone : public X3DGeometryNode {
00072 public:
00073
00080 class SFBound: public X3DGeometryNode::SFBound {
00082 virtual void update() {
00083 H3DFloat h = static_cast< SFFloat * >( routes_in[0] )->getValue();
00084 H3DFloat br = static_cast< SFFloat * >( routes_in[1] )->getValue();
00085 BoxBound *bb = new BoxBound;
00086 H3DFloat d = 2 * br;
00087 bb->size->setValue( Vec3f( d, h, d ) );
00088 value = bb;
00089 }
00090 };
00091
00093 Cone( Inst< SFNode > _metadata = 0,
00094 Inst< SFBound > _bound = 0,
00095 Inst< SFBool > _bottom = 0,
00096 Inst< SFFloat > _bottomRadius = 0,
00097 Inst< SFFloat > _height = 0,
00098 Inst< SFBool > _side = 0,
00099 Inst< SFBool > _solid = 0 );
00100
00102 virtual void render();
00103
00104 #ifdef USE_HAPTICS
00105
00106 virtual void traverseSG( TraverseInfo &ti );
00107 #endif
00108
00114 auto_ptr< SFBool > bottom;
00115
00120 auto_ptr< SFFloat > bottomRadius;
00121
00127 auto_ptr< SFFloat > height;
00128
00133 auto_ptr< SFBool > side;
00134
00140 auto_ptr< SFBool > solid;
00141
00143 static H3DNodeDatabase database;
00144 };
00145 }
00146
00147 #endif