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 "X3DOnePassProcessor.h"
00009 #include "TemplateMeshBuilderGlobalVariables.h"
00010 #include "DFSGraphTraversal.h"
00011 #include "TemplateMeshBuilderCoreVisitor.h"
00012 #include "TemplateMeshBuilderGeometry3DVisitor.h"
00013 #include "TemplateMeshBuilderGroupingVisitor.h"
00014 #include "TemplateMeshBuilderShapeVisitor.h"
00015 #include "TemplateMeshBuilderRenderingVisitor.h"
00016 #include "Scene.h"
00017 #include "MESH_Scene.h"
00018 
00019 namespace X3DTK {
00020 namespace X3D {
00021 
00023 
00024 template<class MData, class VData, class EData, class FData>
00025 class TemplateMeshBuilder : public X3DOnePassProcessor
00026 {     
00027 public:
00029   TemplateMeshBuilder() 
00030   {
00031     globalVariables = GVManager::getInstanceOf<TemplateMeshBuilderGlobalVariables>();
00032     graphTraversal = new DFSGraphTraversal();
00033   
00034     graphTraversal->setComponentVisitor(new TemplateMeshBuilderCoreVisitor());
00035     graphTraversal->setComponentVisitor(new TemplateMeshBuilderGeometry3DVisitor<MData, VData, EData, FData>());
00036     graphTraversal->setComponentVisitor(new TemplateMeshBuilderGroupingVisitor());
00037     graphTraversal->setComponentVisitor(new TemplateMeshBuilderShapeVisitor());
00038     graphTraversal->setComponentVisitor(new TemplateMeshBuilderRenderingVisitor());
00039   };
00041   virtual ~TemplateMeshBuilder() 
00042   {
00043     delete graphTraversal;
00044   };
00045     
00047   virtual MESH::SFNode build(SFNode N)
00048   {
00049     globalVariables->init();
00050     graphTraversal->traverse(N);
00051     globalVariables->finish();
00052     
00053     return globalVariables->getRoot();
00054   };
00055   
00057   MESH::Scene *build(Scene *S)
00058   {
00059     return static_cast<MESH::Scene *>(build(static_cast<SFNode>(S)));
00060   };
00061   
00062 private:
00063   TemplateMeshBuilderGlobalVariables *globalVariables;
00064 };
00065 
00066 }
00067 }
00068 
00069 #endif

Generated on Thu Oct 9 13:50:54 2003 for X3DToolKit by doxygen1.2.18