namespace X3DTK {
namespace MESH {

template<class MData, class VData, class EData, class FData, bool RW>
TemplateNormalsUpdaterStateVariables<MData, VData, EData, FData, RW>::TemplateNormalsUpdaterStateVariables()
: StateVariables()
{
}

template<class MData, class VData, class EData, class FData, bool RW>
void TemplateNormalsUpdaterStateVariables<MData, VData, EData, FData, RW>::init()
{
}

template<class MData, class VData, class EData, class FData, bool RW>
void TemplateNormalsUpdaterStateVariables<MData, VData, EData, FData, RW>::finish()
{
}

template<class MData, class VData, class EData, class FData, bool RW>
void TemplateNormalsUpdaterStateVariables<MData, VData, EData, FData, RW>::addNode(SFNode N)
{
  _visitedNodes.push_back(N);
}

template<class MData, class VData, class EData, class FData, bool RW>
bool TemplateNormalsUpdaterStateVariables<MData, VData, EData, FData, RW>::getNode(SFNode N) const
{
  MFNode::const_iterator it = std::find(_visitedNodes.begin(), _visitedNodes.end(), N);
  return (it != _visitedNodes.end());
}

template<class MData, class VData, class EData, class FData, bool RW>
void TemplateNormalsUpdaterStateVariables<MData, VData, EData, FData, RW>::setSelectedNodes(const MFNode &selectedNodes)
{
  _selectedNodes = selectedNodes;
}

template<class MData, class VData, class EData, class FData, bool RW>
MFNode TemplateNormalsUpdaterStateVariables<MData, VData, EData, FData, RW>::getSelectedNodes() const
{
  return _selectedNodes;
}

}
}
