namespace X3DTK { namespace MESH { template TemplateStatsCalculatorStateVariables::TemplateStatsCalculatorStateVariables() : StateVariables() { } template void TemplateStatsCalculatorStateVariables::init() { _modelMeshInfo.init(); _modelVertexInfo.init(); _meshInfoList.clear(); _vertexInfoList.clear(); } template void TemplateStatsCalculatorStateVariables::finish() { _nodeList.clear(); } template void TemplateStatsCalculatorStateVariables::addNode(SFNode N) { _nodeList.push_back(N); } template bool TemplateStatsCalculatorStateVariables::getNode(SFNode N) const { std::list::const_iterator it = std::find(_nodeList.begin(), _nodeList.end(), N); return (it != _nodeList.end()); } template void TemplateStatsCalculatorStateVariables::setCurrentMesh(TemplateMesh *mesh) { _currentMesh = mesh; } template void TemplateStatsCalculatorStateVariables::addFaces(unsigned int faces) { _modelMeshInfo.addFaces(faces); for (typename std::list > >::iterator it = _meshInfoList.begin(); it != _meshInfoList.end(); ++it) { if ((*it).first == _currentMesh) { (*it).second.addFaces(faces); return; } } _meshInfoList.push_back(std::pair >(_currentMesh, TemplateMeshInfo())); _meshInfoList.back().second.addFaces(faces); } template void TemplateStatsCalculatorStateVariables::addVertices(unsigned int vertices) { _modelVertexInfo.addVertices(vertices); for (typename std::list > >::iterator it = _vertexInfoList.begin(); it != _vertexInfoList.end(); ++it) { if ((*it).first == _currentMesh) { (*it).second.addVertices(vertices); return; } } _vertexInfoList.push_back(std::pair >(_currentMesh, TemplateVertexInfo())); _vertexInfoList.back().second.addVertices(vertices); } template void TemplateStatsCalculatorStateVariables::addEdges(unsigned int edges) { _modelMeshInfo.addEdges(edges); for (typename std::list > >::iterator it = _meshInfoList.begin(); it != _meshInfoList.end(); ++it) { if ((*it).first == _currentMesh) { (*it).second.addEdges(edges); return; } } _meshInfoList.push_back(std::pair >(_currentMesh, TemplateMeshInfo())); _meshInfoList.back().second.addEdges(edges); } template void TemplateStatsCalculatorStateVariables::setInstances(unsigned int instances) { for (typename std::list > >::iterator it = _meshInfoList.begin(); it != _meshInfoList.end(); ++it) { if ((*it).first == _currentMesh) { (*it).second.setInstances(instances); return; } } _meshInfoList.push_back(std::pair >(_currentMesh, TemplateMeshInfo())); _meshInfoList.back().second.setInstances(instances); } template unsigned int TemplateStatsCalculatorStateVariables::getModelFaces() const { return _modelMeshInfo.getFaces(); } template unsigned int TemplateStatsCalculatorStateVariables::getModelVertices() const { return _modelVertexInfo.getVertices(); } template unsigned int TemplateStatsCalculatorStateVariables::getModelEdges() const { return _modelMeshInfo.getEdges(); } template unsigned int TemplateStatsCalculatorStateVariables::getFacesOf(SFNode N) { for (typename std::list > >::iterator it = _meshInfoList.begin(); it != _meshInfoList.end(); ++it) { if ((*it).first == N) return (*it).second.getFaces(); } _meshInfoList.push_back(std::pair >(N, TemplateMeshInfo())); return _meshInfoList.back().second.getFaces(); } template unsigned int TemplateStatsCalculatorStateVariables::getVerticesOf(SFNode N) { for (typename std::list > >::iterator it = _vertexInfoList.begin(); it != _vertexInfoList.end(); ++it) { if ((*it).first == N) return (*it).second.getVertices(); } _vertexInfoList.push_back(std::pair >(N, TemplateVertexInfo())); return _vertexInfoList.back().second.getVertices(); } template unsigned int TemplateStatsCalculatorStateVariables::getEdgesOf(SFNode N) { for (typename std::list > >::iterator it = _meshInfoList.begin(); it != _meshInfoList.end(); ++it) { if ((*it).first == N) return (*it).second.getEdges(); } _meshInfoList.push_back(std::pair >(N, TemplateMeshInfo())); return _meshInfoList.back().second.getEdges(); } template const TemplateMeshInfo &TemplateStatsCalculatorStateVariables::getModelMeshInfo() const { return _modelMeshInfo; } template const std::list > > &TemplateStatsCalculatorStateVariables::getMeshInfoList() const { return _meshInfoList; } template const TemplateVertexInfo &TemplateStatsCalculatorStateVariables::getModelVertexInfo() const { return _modelVertexInfo; } template const std::list > > &TemplateStatsCalculatorStateVariables::getVertexInfoList() const { return _vertexInfoList; } template void TemplateStatsCalculatorStateVariables::setSelectedNodes(const MFNode &selectedNodes) { _selectedNodes = selectedNodes; } template MFNode TemplateStatsCalculatorStateVariables::getSelectedNodes() const { return _selectedNodes; } } }