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 __ARCCLOSE2D_H__
00030 #define __ARCCLOSE2D_H__
00031
00032 #include "X3DGeometryNode.h"
00033 #include "SFFloat.h"
00034 #include "SFString.h"
00035
00036 namespace H3D {
00037
00061
00062 class H3DAPI_API ArcClose2D :
00063 public X3DGeometryNode {
00064 public:
00065
00071 class SFBound: public TypedField< X3DGeometryNode::SFBound,
00072 SFFloat > {
00074 virtual void update() {
00075 H3DFloat d = 2 * static_cast< SFFloat * >( routes_in[0] )->getValue();
00076 BoxBound *bb = new BoxBound;
00077 bb->size->setValue( Vec3f( d, d, 0.f ) );
00078 value = bb;
00079 }
00080 };
00081
00083 ArcClose2D( Inst< SFNode > _metadata = 0,
00084 Inst< SFBound > _bound = 0,
00085 Inst< DisplayList > _displayList = 0,
00086 Inst< MFBool > _isTouched = 0,
00087 Inst< MFVec3f > _force = 0,
00088 Inst< MFVec3f > _contactPoint = 0,
00089 Inst< MFVec3f > _contactNormal = 0,
00090 Inst< SFFloat > _endAngle = 0,
00091 Inst< SFFloat > _startAngle = 0,
00092 Inst< SFFloat > _radius = 0,
00093 Inst< SFString > _closureType = 0,
00094 Inst< SFBool > _solid = 0 );
00095
00097 virtual void render();
00098
00099 #ifdef USE_HAPTICS
00102 virtual void traverseSG( TraverseInfo &ti );
00103 #endif
00104
00112 auto_ptr< SFFloat > endAngle;
00113
00121 auto_ptr< SFFloat > startAngle;
00122
00130 auto_ptr< SFFloat > radius;
00131
00141 auto_ptr< SFString > closureType;
00142
00143
00151 auto_ptr< SFBool > solid;
00152
00154 static H3DNodeDatabase database;
00155 };
00156 }
00157
00158 #endif