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 __DISK2D_H__
00030 #define __DISK2D_H__
00031
00032 #include "X3DGeometryNode.h"
00033 #include "SFFloat.h"
00034
00035 namespace H3D {
00036
00058
00059 class H3DAPI_API Disk2D :
00060 public X3DGeometryNode {
00061 public:
00062
00068 class SFBound: public TypedField< X3DGeometryNode::SFBound,
00069 SFFloat > {
00071 virtual void update() {
00072 H3DFloat d = 2 * static_cast< SFFloat * >( routes_in[0] )->getValue();
00073 BoxBound *bb = new BoxBound;
00074 bb->size->setValue( Vec3f( d, d, 0.f ) );
00075 value = bb;
00076 }
00077 };
00078
00080 Disk2D( Inst< SFNode > _metadata = 0,
00081 Inst< SFBound > _bound = 0,
00082 Inst< DisplayList > _displayList = 0,
00083 Inst< MFBool > _isTouched = 0,
00084 Inst< MFVec3f > _force = 0,
00085 Inst< MFVec3f > _contactPoint = 0,
00086 Inst< MFVec3f > _contactNormal = 0,
00087 Inst< SFFloat > _innerRadius = 0,
00088 Inst< SFFloat > _outerRadius = 0,
00089 Inst< SFBool > _solid = 0 );
00090
00092 virtual void render();
00093
00094 #ifdef USE_HAPTICS
00097 virtual void traverseSG( TraverseInfo &ti );
00098 #endif
00099
00110 auto_ptr< SFFloat > innerRadius;
00111
00120 auto_ptr< SFFloat > outerRadius;
00121
00129 auto_ptr< SFBool > solid;
00130
00132 static H3DNodeDatabase database;
00133 };
00134 }
00135
00136 #endif