namespace X3DTK { template TemplateSimplifiedMeshScene::TemplateSimplifiedMeshScene() : mesh(0) { loader = Singleton::getInstance(); bboxupdater = Singleton::getInstance(); translator = Singleton::getInstance(); meshbuilder = Singleton >::getInstance(); normalsupdater = Singleton >::getInstance(); meshsimplifier = Singleton >::getInstance(); releaser = Singleton::getInstance(); } template TemplateSimplifiedMeshScene::~TemplateSimplifiedMeshScene() { Singleton::removeInstance(); Singleton::removeInstance(); Singleton::removeInstance(); Singleton >::removeInstance(); Singleton >::removeInstance(); Singleton >::removeInstance(); } template void TemplateSimplifiedMeshScene::load(const char *file) { X3D::Scene *S = loader->load(file, true); bboxupdater->update(S, true); releaser->release(mesh); mesh = 0; if (S != 0) { SFVec3f center = S->getBBoxCenter(); SFVec3f size = S->getBBoxSize(); SFVec3f A = center + 0.5f*size; SFVec3f B = center - 0.5f*size; if (A.x < B.x) { min.x = A.x; max.x = B.x; } else { min.x = B.x; max.x = A.x; } if (A.y < B.y) { min.y = A.y; max.y = B.y; } else { min.y = B.y; max.y = A.y; } if (A.z < B.z) { min.z = A.z; max.z = B.z; } else { min.z = B.z; max.z = A.z; } translator->translate(S); MESH::Scene *MS = meshbuilder->build(S); releaser->release(S); normalsupdater->updateNormals(MS); mesh = meshsimplifier->build(MS); releaser->release(MS); } } }