hkSweptTransform.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. hkTime hkSweptTransform::getBaseTime() const
  9. {
  10. return hkTime(m_centerOfMass0(3));
  11. }
  12. hkReal hkSweptTransform::getInvDeltaTime() const 
  13. {
  14. return m_centerOfMass1(3);
  15. }
  16. #define HK_SWEPT_TRANSFORM_ASSERT_STRING "Disable this assert if it gets fired from your user code. It is only used to check internal consistency."
  17. hkReal hkSweptTransform::getInterpolationValue( hkTime t ) const
  18. {
  19. HK_ASSERT2(0xf0ff0080, getInvDeltaTime() == 0 || getInvDeltaTime() > 0.01f, "hkSweptTransforms time period (which corresponds to simulation-step deltaTime) is neither set to infinity (as for fixed/not-integrated motion) nor is less than 100 seconds.");
  20. hkReal dt = (t - getBaseTime()) * getInvDeltaTime();
  21. //HK_ASSERT2(0xf0ff0080, hkMath::isFinite(dt), HK_SWEPT_TRANSFORM_ASSERT_STRING);
  22. HK_ASSERT2(0xf0ff0080, dt >= 0.0f,  HK_SWEPT_TRANSFORM_ASSERT_STRING);
  23. HK_ASSERT2(0xf0ff0080, dt <= 1.01f, HK_SWEPT_TRANSFORM_ASSERT_STRING);
  24. return dt;
  25. }
  26. hkReal hkSweptTransform::getInterpolationValueHiAccuracy( hkTime t, hkReal deltaTimeAddon ) const
  27. {
  28. HK_ASSERT2(0xad67fa3a, getInvDeltaTime() == 0 || getInvDeltaTime() > 0.01f, "hkSweptTransforms time period (which corresponds to simulation-step deltaTime) is neither set to infinity (as for fixed/not-integrated motion) nor is less than 100 seconds.");
  29. hkReal dt = t - getBaseTime();
  30. dt += deltaTimeAddon;
  31. hkReal ddt = dt * getInvDeltaTime();
  32. //HK_ASSERT2(0xad67fa3a, hkMath::isFinite(ddt), HK_SWEPT_TRANSFORM_ASSERT_STRING);
  33. HK_ASSERT2(0xad67fa3a, ddt >= 0.0f,  HK_SWEPT_TRANSFORM_ASSERT_STRING);
  34. HK_ASSERT2(0xad67fa3a, ddt <= 1.01f, HK_SWEPT_TRANSFORM_ASSERT_STRING);
  35. return ddt;
  36. }
  37. void hkSweptTransform::_approxTransformAt( hkTime t, hkTransform& transformOut ) const 
  38. {
  39. hkSimdReal dt = HK_SIMD_REAL( (t - getBaseTime()) * getInvDeltaTime());
  40. hkQuaternion q;
  41. q.m_vec.setInterpolate4( m_rotation0.m_vec, m_rotation1.m_vec, dt );
  42. q.m_vec.normalize4();
  43. transformOut.setRotation( q );
  44. transformOut.getTranslation().setInterpolate4( m_centerOfMass0, m_centerOfMass1, dt);
  45. hkVector4 centerShift;
  46. centerShift._setRotatedDir( transformOut.getRotation(), m_centerOfMassLocal);
  47. transformOut.getTranslation().sub4( centerShift );
  48. }
  49. /*
  50. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  51. * Confidential Information of Havok.  (C) Copyright 1999-2009
  52. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  53. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  54. * rights, and intellectual property rights in the Havok software remain in
  55. * Havok and/or its suppliers.
  56. * Use of this software for evaluation purposes is subject to and indicates
  57. * acceptance of the End User licence Agreement for this product. A copy of
  58. * the license is included with this software and is also available at www.havok.com/tryhavok.
  59. */