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 __RECTANGLE2D_H__
00030 #define __RECTANGLE2D_H__
00031
00032 #include "X3DGeometryNode.h"
00033 #include "SFVec2f.h"
00034
00035 namespace H3D {
00036
00055
00056 class H3DAPI_API Rectangle2D :
00057 public X3DGeometryNode {
00058 public:
00059
00065 class SFBound: public X3DGeometryNode::SFBound {
00067 virtual void update() {
00068 Vec2f b = static_cast< SFVec2f * >( routes_in[0] )->getValue();
00069 BoxBound *bb = new BoxBound;
00070 bb->size->setValue( Vec3f( b.x, b.y, 0 ) );
00071 value = bb;
00072 }
00073 };
00074
00076 Rectangle2D( Inst< SFNode > _metadata = 0,
00077 Inst< SFBound > _bound = 0,
00078 Inst< DisplayList > _displayList = 0,
00079 Inst< MFBool > _isTouched = 0,
00080 Inst< MFVec3f > _force = 0,
00081 Inst< MFVec3f > _contactPoint = 0,
00082 Inst< MFVec3f > _contactNormal = 0,
00083 Inst< SFVec2f > _size = 0,
00084 Inst< SFBool > _solid = 0 );
00085
00087 virtual void render();
00088
00089 #ifdef USE_HAPTICS
00092 virtual void traverseSG( TraverseInfo &ti );
00093 #endif
00094
00103 auto_ptr< SFVec2f > size;
00104
00112 auto_ptr< SFBool > solid;
00113
00115 static H3DNodeDatabase database;
00116 };
00117 }
00118
00119 #endif