00001
00002
00004
00005 #include "glBuilderEngineNodeVisitor.h"
00006 #include <animal/X3DTK/GL/engine/glEngineNode.h>
00007 #include <animal/X3DTK/GL/engine/GLEngineLeafNode.h>
00008 #include <animal/X3DTK/GLLeafEngineNode.h>
00009 #include <animal/X3DTK/X4DNode.h>
00010 #include <iostream>
00011 using std::cout;
00012 using std::cerr;
00013 using std::endl;
00014
00015 namespace X3DTK
00016 {
00017 namespace X3D
00018 {
00019
00020 GLBuilderEngineNodeVisitor::GLBuilderEngineNodeVisitor()
00021 {
00022
00023 define(Recorder<X4DNode>::getEnterFunction(&GLBuilderEngineNodeVisitor::enterX4DNode));
00024
00025
00026
00027 }
00028
00029 GLBuilderEngineNodeVisitor::~GLBuilderEngineNodeVisitor()
00030 {}
00031
00032 void GLBuilderEngineNodeVisitor::enterX4DNode(X4DNode *x4dNode)
00033 {
00034
00035 GLBuilderStateVariables *stateVariables = Singleton<GLBuilderStateVariables>::getInstance();
00036 GL::X3DNode * GEN = stateVariables->getNode(x4dNode);
00037 if (GEN == 0)
00038 {
00039 if( dynamic_cast<GLLeafEngineNode*>(x4dNode) )
00040 {
00041
00042 GL::GLEngineLeafNode* glnode = new GL::GLEngineLeafNode();
00043 glnode->setX4DNode(x4dNode);
00044 GEN = glnode;
00045 }
00046 else
00047 {
00048 GL::GLEngineNode* glnode = new GL::GLEngineNode();
00049 glnode->setX4DNode(x4dNode);
00050 GEN = glnode;
00051 }
00052 GEN->setX3DReference(x4dNode);
00053 stateVariables->addCoupleNode(x4dNode, GEN);
00054 }
00055 stateVariables->pushNode(GEN);
00056 }
00057 }
00058 }
00059