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

X3D_TemplateMeshBuilder.h

Go to the documentation of this file.
00001 
00002 //                            X3D_TemplateMeshBuilder.h                       //
00004 
00005 #ifndef TEMPLATEMESHBUILDER_H
00006 #define TEMPLATEMESHBUILDER_H
00007 
00008 #include "X3DOnePassProcessor.h"
00009 #include "X3D_TemplateMeshBuilderStateVariables.h"
00010 #include "X3D_DFSGraphTraversal.h"
00011 #include "X3D_TemplateMeshBuilderCoreVisitor.h"
00012 #include "X3D_TemplateMeshBuilderGeometry3DVisitor.h"
00013 #include "X3D_TemplateMeshBuilderGroupingVisitor.h"
00014 #include "X3D_TemplateMeshBuilderShapeVisitor.h"
00015 #include "X3D_TemplateMeshBuilderRenderingVisitor.h"
00016 #include "X3D_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     stateVariables = GraphTraversal::getInstanceOf<TemplateMeshBuilderStateVariables>();
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<VData, EData, FData>());
00039   };
00041   virtual ~TemplateMeshBuilder() 
00042   {
00043     GraphTraversal::removeInstanceOf<TemplateMeshBuilderStateVariables>();
00044   
00045     delete graphTraversal;
00046   };
00047     
00049   virtual MESH::SFNode build(SFNode N)
00050   {
00051     stateVariables->init();
00052     graphTraversal->traverse(N);
00053     stateVariables->finish();
00054     
00055     return stateVariables->getRoot();
00056   };
00057   
00059   MESH::Scene *build(Scene *S)
00060   {
00061     return static_cast<MESH::Scene *>(build(static_cast<SFNode>(S)));
00062   };
00063   
00064 private:
00065   TemplateMeshBuilderStateVariables *stateVariables;
00066 };
00067 
00068 }
00069 }
00070 
00071 #endif

Generated on Thu Dec 4 13:25:49 2003 for X3DToolKit by doxygen1.2.18