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 //                            TemplateMeshBuilder.h                           //
00004 
00005 #ifndef TEMPLATEMESHBUILDER_H
00006 #define TEMPLATEMESHBUILDER_H
00007 
00008 #include "MeshTypes.h"
00009 #include "X3DOnePassProcessor.h"
00010 #include "TemplateMeshBuilderGlobalVariables.h"
00011 #include "DefaultDFS.h"
00012 #include "TemplateMeshBuilderCoreVisitor.h"
00013 #include "TemplateMeshBuilderGeometry3DVisitor.h"
00014 #include "TemplateMeshBuilderGroupingVisitor.h"
00015 #include "TemplateMeshBuilderShapeVisitor.h"
00016 #include "TemplateMeshBuilderRenderingVisitor.h"
00017 #include "Scene.h"
00018 #include "MeshScene.h"
00019 #include "MeshAlgoFunctions.h"
00020 
00021 namespace X3DTK {
00022 namespace X3D {
00023 
00025 
00026 template<class MData, class VData, class EData, class FData>
00027 class TemplateMeshBuilder : public X3DOnePassProcessor
00028 {     
00029 public:
00031   TemplateMeshBuilder() 
00032   {
00033     globalVariables = GVManager::getInstanceOf<TemplateMeshBuilderGlobalVariables>();
00034     dfs = new DefaultDFS();
00035   
00036     dfs->setComponentVisitor(new TemplateMeshBuilderCoreVisitor());
00037     dfs->setComponentVisitor(new TemplateMeshBuilderGeometry3DVisitor<MData, VData, EData, FData>());
00038     dfs->setComponentVisitor(new TemplateMeshBuilderGroupingVisitor());
00039     dfs->setComponentVisitor(new TemplateMeshBuilderShapeVisitor());
00040     dfs->setComponentVisitor(new TemplateMeshBuilderRenderingVisitor());
00041   };
00043   virtual ~TemplateMeshBuilder() 
00044   {
00045     delete dfs;
00046   };
00048   void setComponentVisitor(X3DComponentVisitor *component)
00049   {
00050     dfs->setComponentVisitor(component);
00051   };
00052     
00054   virtual Mesh::SFNode build(SFNode N)
00055   {
00056     std::cout << "building mesh" << std::endl;
00057     globalVariables->init();
00058     dfs->traverse(N);
00059     globalVariables->finish();
00060     
00061     return globalVariables->getRoot();
00062   };
00063   
00065   Mesh::Scene *build(Scene *S)
00066   {
00067     return static_cast<Mesh::Scene *>(build(static_cast<SFNode>(S)));
00068   };
00069   
00070 private:
00071   TemplateMeshBuilderGlobalVariables *globalVariables;
00072   DFS *dfs; 
00073 };
00074 
00075 }
00076 }
00077 
00078 #endif

Generated on Tue Jul 15 16:46:52 2003 for X3DToolKit by doxygen1.3