00001
00002
00004
00005 #ifndef MESHBUILDER_H
00006 #define MESHBUILDER_H
00007
00008 #include "MESH_Mesh.h"
00009 #include "MESH_VertexSet.h"
00010 #include "X3D_TemplateMeshBuilder.h"
00011
00012 #include <iostream>
00013
00014 namespace X3DTK {
00015 namespace X3D {
00016
00017 class IndexedFaceSet;
00018 class Coordinate;
00019
00020 typedef TemplateMeshBuilder<MESH::MeshData, MESH::VertexData, MESH::EdgeData, MESH::FaceData> MeshBuilder;
00021
00023
00024 template<>
00025 struct TemplateMeshBuilderGeometryTraits<MESH::MeshData, MESH::VertexData, MESH::EdgeData, MESH::FaceData, IndexedFaceSet>
00026 {
00028 static void init(MESH::TemplateMesh<MESH::MeshData, MESH::VertexData, MESH::EdgeData, MESH::FaceData> *mesh, IndexedFaceSet *I);
00030 static void processNewFace(MESH::TemplateMesh<MESH::MeshData, MESH::VertexData, MESH::EdgeData, MESH::FaceData> *mesh, IndexedFaceSet *I, MESH::SFTemplateFace<MESH::FaceData, MESH::VertexData, MESH::EdgeData> *F);
00032 static void finish(MESH::TemplateMesh<MESH::MeshData, MESH::VertexData, MESH::EdgeData, MESH::FaceData> *mesh, IndexedFaceSet *I);
00033 };
00034
00036
00037 template<>
00038 struct TemplateMeshBuilderCoordinateTraits<MESH::VertexData, MESH::EdgeData, MESH::FaceData, Coordinate>
00039 {
00041 static void process(MESH::TemplateVertexSet<MESH::VertexData, MESH::EdgeData, MESH::FaceData> *vertexSet, Coordinate *N);
00042 };
00043
00044 }
00045 }
00046
00047 #endif