QGearsWalkmeshFileXMLSerializer.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef __QGearsWalkmeshFileXMLSerializer_H__
  2. #define __QGearsWalkmeshFileXMLSerializer_H__
  3. #include "common/TypeDefine.h"
  4. #include "data/QGearsXMLSerializer.h"
  5. #include "QGearsWalkmeshFile.h"
  6. namespace QGears
  7. {
  8. class WalkmeshFileXMLSerializer : public XMLSerializer
  9. {
  10. public:
  11. WalkmeshFileXMLSerializer();
  12. virtual ~WalkmeshFileXMLSerializer();
  13. virtual void importWalkmeshFile( Ogre::DataStreamPtr &stream, WalkmeshFile *pDest );
  14. typedef WalkmeshFile::Triangle Triangle;
  15. typedef WalkmeshFile::TriangleList TriangleList;
  16. protected:
  17. virtual void readHeader( TiXmlNode *node );
  18. virtual void readObject( TiXmlNode &node, Triangle &pDest );
  19. template<typename ValueType> void
  20. readVector( TiXmlNode &node, std::vector<ValueType> &pDest, const String &tag )
  21. {
  22. pDest.clear();
  23. TiXmlNode* child( node.FirstChild() );
  24. while( child != NULL )
  25. {
  26. if( child->Type() == TiXmlNode::TINYXML_ELEMENT && child->ValueStr() == tag )
  27. {
  28. ValueType in_tmp;
  29. readObject( *child, in_tmp );
  30. pDest.push_back( in_tmp );
  31. }
  32. child = child->NextSibling();
  33. }
  34. }
  35. private:
  36. };
  37. }
  38. #endif // __QGearsWalkmeshFileXMLSerializer_H__