namespace X3DTK {
namespace MESH {

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

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

template<class MData, class VData, class EData, class FData, bool RW>
void TemplateNormalsFlipperStateVariables<MData, VData, EData, FData, RW>::finish()
{
  _vertexSetList.clear();
}

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

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

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

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

}
}
