00001 #include "engineRemoverVisitor.h"
00002 #include "engineLoader.h"
00003
00004 namespace X3DTK
00005 {
00006 namespace X3D
00007 {
00008 EngineRemoverVisitor::EngineRemoverVisitor ()
00009 {
00010 defineEnterFunction(&EngineRemoverVisitor::enterNode);
00011 }
00012
00013 EngineRemoverVisitor::~EngineRemoverVisitor ()
00014 {}
00015
00016 void EngineRemoverVisitor::enterNode (X3DNode * n)
00017 {
00018 assert(EngineLoader::s_allEngineNodes);
00019 assert(EngineLoader::s_kinematicNodes);
00020 assert(EngineLoader::s_dynamicNodes);
00021 assert(EngineLoader::s_collisionNodes);
00022 if( EngineNode* en = dynamic_cast<EngineNode*>(n) )
00023 {
00024 EngineLoader::s_allEngineNodes->remove(en);
00025 if( en->behavior()==EngineNode::KINEMATICS )
00026 {
00027 EngineLoader::s_kinematicNodes->remove
00028 (en);
00029 }
00030 else if( en->behavior()==EngineNode::DYNAMICS )
00031 {
00032 EngineLoader::s_dynamicNodes->remove
00033 (en);
00034 }
00035 else if( en->behavior()==EngineNode::COLLISION )
00036 {
00037 EngineLoader::s_collisionNodes->remove
00038 (en);
00039 }
00040 }
00041 }
00042
00043 }
00044 }