hkAabb.h
上传用户:yisoukefu
上传日期:2020-08-09
资源大小:39506k
文件大小:4k
源码类别:

其他游戏

开发平台:

Visual C++

  1. /* 
  2.  * 
  3.  * Confidential Information of Telekinesys Research Limited (t/a Havok). Not for disclosure or distribution without Havok's
  4.  * prior written consent. This software contains code, techniques and know-how which is confidential and proprietary to Havok.
  5.  * Level 2 and Level 3 source code contains trade secrets of Havok. Havok Software (C) Copyright 1999-2009 Telekinesys Research Limited t/a Havok. All Rights Reserved. Use of this software is subject to the terms of an end user license agreement.
  6.  * 
  7.  */
  8. #ifndef HK_MATH_AABB_H
  9. #define HK_MATH_AABB_H
  10. #include <Common/Base/hkBase.h>
  11. /// Axis aligned bounding box.
  12. class hkAabb
  13. {
  14. public:
  15. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR(HK_MEMORY_CLASS_CDINFO, hkAabb);
  16. HK_DECLARE_REFLECTION();
  17. /// An empty constructor, does not initialize anything
  18. hkAabb() { }
  19. ///Creates a new AABB with the specified dimensions.
  20. HK_FORCE_INLINE hkAabb(const hkVector4& min, const hkVector4& max);
  21. /// Returns true if the given AABB overlaps with this one. Zero volume overlaps are reported as an overlap.
  22. HK_FORCE_INLINE hkBool overlaps( const hkAabb& testAabb ) const;
  23. /// Is this a valid aabb? I.e. no NaNs and min[i] <= max[i]
  24. hkBool isValid() const;
  25. /// Return true if 'other' is enclosed in this aabb.
  26. /// Boundaries are inclusive.
  27. HK_FORCE_INLINE hkBool contains(const hkAabb& other) const;
  28. /// Return true if 'other' is enclosed in this aabb.
  29. /// Boundaries are inclusive.
  30. HK_FORCE_INLINE hkBool containsPoint(const hkVector4& other) const;
  31. /// Extends the AABB to include the given point
  32. HK_FORCE_INLINE void includePoint (const hkVector4& point);
  33. /// Extends the AABB to include the given AABB
  34. HK_FORCE_INLINE void includeAabb (const hkAabb& aabb);
  35. /// Sets the AABB to an empty (invalid) MAX_REAL/MIN_REAL box
  36. HK_FORCE_INLINE void setEmpty ();
  37. /// Returns true if the AABB is empty, e.g. its min is greater than its max for any dimension
  38. HK_FORCE_INLINE hkBool isEmpty() const;
  39. public:
  40. /// The minimum boundary of the aabb (i.e. the coordinates of the corner with the lowest numerical values).
  41. hkVector4 m_min;
  42. /// The maximum boundary of the aabb (i.e. the coordinates of the corner with the highest numerical values).
  43. hkVector4 m_max;
  44. };
  45. HK_CLASSALIGN16(struct) hkAabbUint32
  46. {
  47. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR(HK_MEMORY_CLASS_CDINFO, hkAabbUint32);
  48. HK_DECLARE_REFLECTION();
  49. inline void operator=( const hkAabbUint32& other );
  50. /// set completely invalid
  51. inline void setInvalid();
  52. /// just make it non colliding for the midphase agent
  53. inline void setInvalidY();
  54. HK_ALIGN16( hkUint32 m_min[3] );
  55. hkUint8 m_expansionMin[3];
  56. hkUint8 m_expansionShift;
  57. hkUint32 m_max[3];
  58. hkUint8 m_expansionMax[3];
  59. hkUint8 m_shapeKeyByte; // lowest byty of the hkpShapeKey. Useful for hkpListShapes of less then 256 bodies.
  60. };
  61. #include <Common/Base/Types/Geometry/Aabb/hkAabb.inl>
  62. #endif // HK_MATH_AABB_H
  63. /*
  64. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  65. * Confidential Information of Havok.  (C) Copyright 1999-2009
  66. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  67. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  68. * rights, and intellectual property rights in the Havok software remain in
  69. * Havok and/or its suppliers.
  70. * Use of this software for evaluation purposes is subject to and indicates
  71. * acceptance of the End User licence Agreement for this product. A copy of
  72. * the license is included with this software and is also available at www.havok.com/tryhavok.
  73. */