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 __ARC2D_H__
00030 #define __ARC2D_H__
00031
00032 #include "X3DGeometryNode.h"
00033 #include "SFFloat.h"
00034
00035 namespace H3D {
00036
00051
00052 class H3DAPI_API Arc2D :
00053 public X3DGeometryNode {
00054 public:
00055
00061 class SFBound: public TypedField< X3DGeometryNode::SFBound,
00062 SFFloat > {
00064 virtual void update() {
00065 H3DFloat d = 2 * static_cast< SFFloat * >( routes_in[0] )->getValue();
00066 BoxBound *bb = new BoxBound;
00067 bb->size->setValue( Vec3f( d, d, 0.f ) );
00068 value = bb;
00069 }
00070 };
00071
00073 Arc2D( Inst< SFNode > _metadata = 0,
00074 Inst< SFBound > _bound = 0,
00075 Inst< DisplayList > _displayList = 0,
00076 Inst< MFBool > _isTouched = 0,
00077 Inst< MFVec3f > _force = 0,
00078 Inst< MFVec3f > _contactPoint = 0,
00079 Inst< MFVec3f > _contactNormal = 0,
00080 Inst< SFFloat > _endAngle = 0,
00081 Inst< SFFloat > _startAngle = 0,
00082 Inst< SFFloat > _radius = 0 );
00083
00085 virtual void render();
00086
00087 #ifdef USE_HAPTICS
00090 virtual void traverseSG( TraverseInfo &ti );
00091 #endif
00092
00100 auto_ptr< SFFloat > endAngle;
00101
00109 auto_ptr< SFFloat > startAngle;
00110
00118 auto_ptr< SFFloat > radius;
00119
00121 static H3DNodeDatabase database;
00122 };
00123 }
00124
00125 #endif