QGearsWalkmeshFileXMLSerializer.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "map/QGearsWalkmeshFileXMLSerializer.h"
  2. #include <OgreLogManager.h>
  3. #include <OgreException.h>
  4. namespace QGears
  5. {
  6. //--------------------------------------------------------------------------
  7. WalkmeshFileXMLSerializer::WalkmeshFileXMLSerializer() :
  8. XMLSerializer()
  9. {
  10. }
  11. //--------------------------------------------------------------------------
  12. WalkmeshFileXMLSerializer::~WalkmeshFileXMLSerializer()
  13. {
  14. }
  15. //--------------------------------------------------------------------------
  16. void WalkmeshFileXMLSerializer::readHeader( TiXmlNode *node )
  17. {
  18. if( node == NULL || node->ValueStr() != "walkmesh" )
  19. {
  20. OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS
  21. ,"not a valid walkmesh file, no <walkmesh> in root"
  22. ,"WalkmeshFileXMLSerializer::readHeader" );
  23. }
  24. }
  25. //--------------------------------------------------------------------------
  26. void
  27. WalkmeshFileXMLSerializer::importWalkmeshFile( Ogre::DataStreamPtr &stream
  28. ,WalkmeshFile *pDest )
  29. {
  30. TiXmlDocument document;
  31. parse( stream, document );
  32. TiXmlNode *root_node( document.RootElement() );
  33. readHeader( root_node );
  34. TiXmlNode &node( *root_node );
  35. readVector( node, pDest->getTriangles(), "triangle" );
  36. }
  37. //--------------------------------------------------------------------------
  38. void
  39. WalkmeshFileXMLSerializer::readObject( TiXmlNode &node
  40. ,WalkmeshFileXMLSerializer::Triangle &pDest )
  41. {
  42. readAttribute( node, "a", pDest.a );
  43. readAttribute( node, "b", pDest.b );
  44. readAttribute( node, "c", pDest.c );
  45. readAttribute( node, "a_b", pDest.access_side[0] );
  46. readAttribute( node, "b_c", pDest.access_side[1] );
  47. readAttribute( node, "c_a", pDest.access_side[2] );
  48. }
  49. //--------------------------------------------------------------------------
  50. }