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

其他游戏

开发平台:

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. inline hkAabb::hkAabb(const hkVector4& min, const hkVector4& max)
  9. : m_min(min), m_max(max)
  10. {
  11. }
  12. hkBool hkAabb::overlaps( const hkAabb& other ) const
  13. {
  14. HK_ASSERT2(0x3f5578fc,  isValid(), "Invalid aabb in hkAabb::overlaps." );
  15. HK_ASSERT2(0x76dd800a,  other.isValid(), "Invalid aabb in hkAabb::overlaps.");
  16. hkVector4Comparison mincomp = m_min.compareLessThanEqual4(other.m_max);
  17. hkVector4Comparison maxcomp = other.m_min.compareLessThanEqual4(m_max);
  18. hkVector4Comparison both; both.setAnd( mincomp, maxcomp );
  19. return both.allAreSet(hkVector4Comparison::MASK_XYZ) != 0;
  20. }
  21. hkBool hkAabb::contains(const hkAabb& other) const
  22. {
  23. hkVector4Comparison mincomp = m_min.compareLessThanEqual4(other.m_min);
  24. hkVector4Comparison maxcomp = other.m_max.compareLessThanEqual4(m_max);
  25. hkVector4Comparison both; both.setAnd( mincomp, maxcomp );
  26. return both.allAreSet(hkVector4Comparison::MASK_XYZ) != 0;
  27. }
  28. hkBool hkAabb::containsPoint(const hkVector4& other) const
  29. {
  30. hkVector4Comparison mincomp = m_min.compareLessThanEqual4(other);
  31. hkVector4Comparison maxcomp = other.compareLessThanEqual4(m_max);
  32. hkVector4Comparison both; both.setAnd( mincomp, maxcomp );
  33. return both.allAreSet(hkVector4Comparison::MASK_XYZ) != 0;
  34. }
  35. hkBool hkAabb::isEmpty() const
  36. {
  37. hkVector4Comparison comp = m_min.compareGreaterThanEqual4(m_max);
  38. return comp.anyIsSet(hkVector4Comparison::MASK_XYZ) != 0;
  39. }
  40. void hkAabb::includePoint (const hkVector4& point)
  41. {
  42. m_min.setMin4(m_min, point);
  43. m_max.setMax4(m_max, point);
  44. }
  45. void hkAabb::includeAabb (const hkAabb& aabb)
  46. {
  47. m_min.setMin4(m_min, aabb.m_min);
  48. m_max.setMax4(m_max, aabb.m_max);
  49. }
  50. void hkAabb::setEmpty()
  51. {
  52. m_min.setAll(HK_REAL_MAX);
  53. m_max.setAll(-HK_REAL_MAX);
  54. }
  55. inline void hkAabbUint32::setInvalid()
  56. {
  57. const int ma = 0x7fffffff;
  58. // SNC warning workaround
  59. hkUint32* minP = m_min;
  60. hkUint32* maxP = m_max;
  61. minP[0] = ma;
  62. minP[1] = ma;
  63. minP[2] = ma;
  64. minP[3] = 0;
  65. maxP[0] = 0;
  66. maxP[1] = 0;
  67. maxP[2] = 0;
  68. maxP[3] = 0;
  69. }
  70. inline void hkAabbUint32::setInvalidY()
  71. {
  72. const int ma = 0x7fff0000;
  73. hkUint32* minP = m_min;
  74. hkUint32* maxP = m_max;
  75. minP[1] = ma;
  76. minP[2] = ma;
  77. minP[3] = 0;
  78. maxP[1] = 0;
  79. maxP[2] = 0;
  80. }
  81. void hkAabbUint32::operator=( const hkAabbUint32& other )
  82. {
  83. hkString::memCpy16<sizeof(hkAabbUint32)>( this, &other );
  84. }
  85. /*
  86. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  87. * Confidential Information of Havok.  (C) Copyright 1999-2009
  88. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  89. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  90. * rights, and intellectual property rights in the Havok software remain in
  91. * Havok and/or its suppliers.
  92. * Use of this software for evaluation purposes is subject to and indicates
  93. * acceptance of the End User licence Agreement for this product. A copy of
  94. * the license is included with this software and is also available at www.havok.com/tryhavok.
  95. */