b2CircleShape.h
上传用户:gb3593
上传日期:2022-01-07
资源大小:3028k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. /*
  2. * Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com
  3. *
  4. * This software is provided 'as-is', without any express or implied
  5. * warranty.  In no event will the authors be held liable for any damages
  6. * arising from the use of this software.
  7. * Permission is granted to anyone to use this software for any purpose,
  8. * including commercial applications, and to alter it and redistribute it
  9. * freely, subject to the following restrictions:
  10. * 1. The origin of this software must not be misrepresented; you must not
  11. * claim that you wrote the original software. If you use this software
  12. * in a product, an acknowledgment in the product documentation would be
  13. * appreciated but is not required.
  14. * 2. Altered source versions must be plainly marked as such, and must not be
  15. * misrepresented as being the original software.
  16. * 3. This notice may not be removed or altered from any source distribution.
  17. */
  18. #ifndef B2_CIRCLE_SHAPE_H
  19. #define B2_CIRCLE_SHAPE_H
  20. #include <Box2D/Collision/Shapes/b2Shape.h>
  21. /// A circle shape.
  22. class b2CircleShape : public b2Shape
  23. {
  24. public:
  25. b2CircleShape();
  26. /// Implement b2Shape.
  27. b2Shape* Clone(b2BlockAllocator* allocator) const;
  28. /// Implement b2Shape.
  29. bool TestPoint(const b2Transform& transform, const b2Vec2& p) const;
  30. /// Implement b2Shape.
  31. bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform) const;
  32. /// @see b2Shape::ComputeAABB
  33. void ComputeAABB(b2AABB* aabb, const b2Transform& transform) const;
  34. /// @see b2Shape::ComputeMass
  35. void ComputeMass(b2MassData* massData, float32 density) const;
  36. /// Get the supporting vertex index in the given direction.
  37. int32 GetSupport(const b2Vec2& d) const;
  38. /// Get the supporting vertex in the given direction.
  39. const b2Vec2& GetSupportVertex(const b2Vec2& d) const;
  40. /// Get the vertex count.
  41. int32 GetVertexCount() const { return 1; }
  42. /// Get a vertex by index. Used by b2Distance.
  43. const b2Vec2& GetVertex(int32 index) const;
  44. /// Position
  45. b2Vec2 m_p;
  46. };
  47. inline b2CircleShape::b2CircleShape()
  48. {
  49. m_type = e_circle;
  50. m_radius = 0.0f;
  51. m_p.SetZero();
  52. }
  53. inline int32 b2CircleShape::GetSupport(const b2Vec2 &d) const
  54. {
  55. B2_NOT_USED(d);
  56. return 0;
  57. }
  58. inline const b2Vec2& b2CircleShape::GetSupportVertex(const b2Vec2 &d) const
  59. {
  60. B2_NOT_USED(d);
  61. return m_p;
  62. }
  63. inline const b2Vec2& b2CircleShape::GetVertex(int32 index) const
  64. {
  65. B2_NOT_USED(index);
  66. b2Assert(index == 0);
  67. return m_p;
  68. }
  69. #endif