Walkmesh.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef WALKMESH_H
  2. #define WALKMESH_H
  3. #include <Ogre.h>
  4. #include <vector>
  5. struct WalkmeshTriangle
  6. {
  7. WalkmeshTriangle():
  8. a( 0, 0, 0 ),
  9. b( 0, 0, 0 ),
  10. c( 0, 0, 0 ),
  11. locked( false )
  12. {
  13. access_side[ 0 ] = -1;
  14. access_side[ 1 ] = -1;
  15. access_side[ 2 ] = -1;
  16. }
  17. Ogre::Vector3 a;
  18. Ogre::Vector3 b;
  19. Ogre::Vector3 c;
  20. int access_side[ 3 ];
  21. bool locked;
  22. };
  23. namespace QGears
  24. {
  25. typedef Ogre::SharedPtr<class WalkmeshFile> WalkmeshFilePtr;
  26. }
  27. class Walkmesh
  28. {
  29. public:
  30. Walkmesh();
  31. virtual ~Walkmesh();
  32. void UpdateDebug();
  33. void Clear();
  34. void AddTriangle( const WalkmeshTriangle& triangle );
  35. int GetAccessSide( unsigned int triangle_id, unsigned char side ) const;
  36. const Ogre::Vector3& GetA( unsigned int triangle_id ) const;
  37. const Ogre::Vector3& GetB( unsigned int triangle_id ) const;
  38. const Ogre::Vector3& GetC( unsigned int triangle_id ) const;
  39. int GetNumberOfTriangles() const;
  40. void LockWalkmesh( unsigned int triangle_id, bool lock );
  41. bool IsLocked( unsigned int triangle_id ) const;
  42. virtual void load( const QGears::WalkmeshFilePtr &walkmesh );
  43. private:
  44. std::vector< WalkmeshTriangle > m_Triangles;
  45. };
  46. #endif // WALKMESH_H