namespace X3DTK { namespace MESH { template TemplateNormalsUpdater::TemplateNormalsUpdater() : X3DMultiPassProcessor() { setGraphTraversal("Faces", new DFSGraphTraversal()); setGraphTraversal("Vertices", new DFSGraphTraversal()); setComponentVisitor("Faces", new TemplateNormalsUpdaterFacesCoreVisitor()); setComponentVisitor("Vertices", new TemplateNormalsUpdaterVerticesCoreVisitor()); } template TemplateNormalsUpdater::~TemplateNormalsUpdater() { } template void TemplateNormalsUpdater::updateNormals(Scene *S) { updateNormals(static_cast(S)); S->getProcessHistory().addEntry("MESH::TemplateNormalsUpdater"); } template void TemplateNormalsUpdater::updateNormals(X3DNode *N) { #ifdef TEMPLATE_SPECIALIZATION_SUPPORTED if (VData::template find() && FData::template find()) #endif { traverse("Faces", N); } #ifdef TEMPLATE_SPECIALIZATION_SUPPORTED if (VData::template find() && FData::template find()) #endif { traverse("Vertices", N); } } template void TemplateNormalsUpdater::setSelectedNodes(const MFNode &selectedNodes) { Singleton >::getInstance()->setSelectedNodes(selectedNodes); } } }