Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

TemplateMeshBuilder.h

Go to the documentation of this file.
00001 
00002 
00003 
00005 
00006 
00011 
00016 
00021 //                            TemplateMeshBuilder.h                           //
00023 
00024 #ifndef TEMPLATEMESHBUILDER_H
00025 #define TEMPLATEMESHBUILDER_H
00026 
00027 #include "MeshTypes.h"
00028 #include "X3DOnePassProcessor.h"
00029 #include "TemplateMeshBuilderGlobalVariables.h"
00030 #include "DefaultDFS.h"
00031 #include "TemplateMeshBuilderCoreVisitor.h"
00032 #include "TemplateMeshBuilderGeometry3DVisitor.h"
00033 #include "TemplateMeshBuilderGroupingVisitor.h"
00034 #include "TemplateMeshBuilderShapeVisitor.h"
00035 #include "TemplateMeshBuilderRenderingVisitor.h"
00036 #include "Scene.h"
00037 #include "MeshScene.h"
00038 #include "MeshAlgoFunctions.h"
00039 
00040 namespace X3DTK {
00041 namespace X3D {
00042 
00044 
00045 template<class MData, class VData, class EData, class FData>
00046 class TemplateMeshBuilder : public X3DOnePassProcessor
00047 {     
00048 public:
00050   TemplateMeshBuilder() 
00051   {
00052     globalVariables = GVManager::getInstanceOf<TemplateMeshBuilderGlobalVariables>();
00053     dfs = new DefaultDFS();
00054   
00055     dfs->setComponentVisitor(new TemplateMeshBuilderCoreVisitor());
00056     dfs->setComponentVisitor(new TemplateMeshBuilderGeometry3DVisitor<MData, VData, EData, FData>());
00057     dfs->setComponentVisitor(new TemplateMeshBuilderGroupingVisitor());
00058     dfs->setComponentVisitor(new TemplateMeshBuilderShapeVisitor());
00059     dfs->setComponentVisitor(new TemplateMeshBuilderRenderingVisitor());
00060   };
00062   virtual ~TemplateMeshBuilder() 
00063   {
00064     delete dfs;
00065   };
00067   void setComponentVisitor(X3DComponentVisitor *component)
00068   {
00069     dfs->setComponentVisitor(component);
00070   };
00071     
00073   virtual Mesh::SFNode build(SFNode N)
00074   {
00075     std::cout << "building mesh" << std::endl;
00076     globalVariables->init();
00077     dfs->traverse(N);
00078     globalVariables->finish();
00079     
00080     return globalVariables->getRoot();
00081   };
00082   
00084   Mesh::Scene *build(Scene *S)
00085   {
00086     return static_cast<Mesh::Scene *>(build(static_cast<SFNode>(S)));
00087   };
00088   
00089 private:
00090   TemplateMeshBuilderGlobalVariables *globalVariables;
00091   DFS *dfs; 
00092 };
00093 
00094 }
00095 }
00096 
00097 #endif

Generated on Wed Sep 10 11:25:14 2003 for X3DToolKit by doxygen1.3