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 __TRIANGLESET_H__
00030 #define __TRIANGLESET_H__
00031
00032 #include "X3DComposedGeometryNode.h"
00033 #include "DependentNodeFields.h"
00034 #include "X3DCoordinateNode.h"
00035 #include "X3DColorNode.h"
00036 #include "CoordBoundField.h"
00037
00038 namespace H3D {
00039
00061 class H3DAPI_API TriangleSet : public X3DComposedGeometryNode {
00062 public:
00065 H3D_VALUE_EXCEPTION( int, NotEnoughColors );
00066
00069 H3D_VALUE_EXCEPTION( int, NotEnoughTextureCoordinates );
00070
00072 typedef CoordBoundField SFBound;
00073
00079
00080 class H3DAPI_API AutoNormal:
00081 public TypedField< SFNormalNode,
00082 Types< SFBool, SFCoordinateNode, SFBool > > {
00085 virtual void update();
00086
00102 virtual X3DNormalNode *generateNormalsPerVertex(
00103 X3DCoordinateNode *coord,
00104 bool ccw );
00105 };
00106
00108 TriangleSet( Inst< SFNode > _metadata = 0,
00109 Inst< SFBound > _bound = 0,
00110 Inst< DisplayList > _displayList = 0,
00111 Inst< SFColorNode > _color = 0,
00112 Inst< SFCoordinateNode > _coord = 0,
00113 Inst< SFNormalNode > _normal = 0,
00114 Inst< SFTextureCoordinateNode > _texCoord = 0,
00115 Inst< SFBool > _ccw = 0,
00116 Inst< SFBool > _colorPerVertex = 0,
00117 Inst< SFBool > _normalPerVertex = 0,
00118 Inst< SFBool > _solid = 0,
00119 Inst< MFVertexAttributeNode > _attrib = 0,
00120 Inst< AutoNormal > _autoNormal = 0 );
00121
00123 virtual void render();
00124
00125 #ifdef USE_HAPTICS
00128 virtual void traverseSG( TraverseInfo &ti );
00129 #endif
00130
00135 auto_ptr< AutoNormal > autoNormal;
00136
00138 static H3DNodeDatabase database;
00139 };
00140 }
00141
00142 #endif