hkpPulleyConstraintData.inl
上传用户: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. ////////////////////////////////////////////////////////////////////////
  9. /// param pivotA bodyA's pivot point, specified in world space.
  10. /// param pivotB bodyB's pivot point, specified in world space.
  11. inline void hkpPulleyConstraintData::setInWorldSpace(const hkTransform& bodyATransform,
  12.  const hkTransform& bodyBTransform,
  13.  const hkVector4& pivotAW,
  14.  const hkVector4& pivotBW,
  15.  const hkVector4& pulleyPivotAW, 
  16.  const hkVector4& pulleyPivotBW,
  17.  hkReal leverageOnBodyB )
  18. {
  19. m_atoms.m_translations.m_translationA.setTransformedInversePos(bodyATransform,pivotAW);
  20. m_atoms.m_translations.m_translationB.setTransformedInversePos(bodyBTransform,pivotBW);
  21. m_atoms.m_pulley.m_fixedPivotAinWorld = pulleyPivotAW;
  22. m_atoms.m_pulley.m_fixedPivotBinWorld = pulleyPivotBW;
  23. hkVector4 sepDist;
  24. sepDist.setSub4( pivotAW, pulleyPivotAW );
  25. m_atoms.m_pulley.m_ropeLength = sepDist.length3();
  26. sepDist.setSub4( pivotBW, pulleyPivotBW ); 
  27. m_atoms.m_pulley.m_ropeLength += hkReal(sepDist.length3()) * leverageOnBodyB;
  28. m_atoms.m_pulley.m_leverageOnBodyB = leverageOnBodyB;
  29. }
  30. //////////////////////////////////////////////////////////////////////////
  31. /// param pivotA bodyA's pivot point, specified in bodyA's space.
  32. /// param pivotB bodyB's pivot point, specified in bodyB's space.
  33. inline void hkpPulleyConstraintData::setInBodySpace( const hkTransform& bodyATransform,
  34.  const hkTransform& bodyBTransform,
  35.  const hkVector4& pivotA,
  36.  const hkVector4& pivotB,
  37.  const hkVector4& pulleyPivotAW, 
  38.  const hkVector4& pulleyPivotBW,
  39.  hkReal leverageOnBodyB )
  40. {
  41. m_atoms.m_translations.m_translationA = pivotA;
  42. m_atoms.m_translations.m_translationB = pivotB;
  43. m_atoms.m_pulley.m_fixedPivotAinWorld = pulleyPivotAW;
  44. m_atoms.m_pulley.m_fixedPivotBinWorld = pulleyPivotBW;
  45. hkVector4 pivotAW, pivotBW; 
  46. pivotAW.setTransformedPos(bodyATransform,pivotA); 
  47. pivotBW.setTransformedPos(bodyBTransform,pivotB); 
  48. hkVector4 sepDist; 
  49. sepDist.setSub4( pivotAW, pulleyPivotAW ); 
  50. m_atoms.m_pulley.m_ropeLength = sepDist.length3();
  51. sepDist.setSub4( pivotBW, pulleyPivotBW ); 
  52. m_atoms.m_pulley.m_ropeLength += hkReal(sepDist.length3()) * leverageOnBodyB;
  53. m_atoms.m_pulley.m_leverageOnBodyB = leverageOnBodyB;
  54. }
  55. hkReal hkpPulleyConstraintData::getRopeLength(hkReal length) 
  56. return m_atoms.m_pulley.m_ropeLength; 
  57. }
  58. hkReal hkpPulleyConstraintData::getLeverageOnBodyB() 
  59. return m_atoms.m_pulley.m_leverageOnBodyB; 
  60. }
  61. void hkpPulleyConstraintData::setRopeLength(hkReal length)
  62. {
  63. m_atoms.m_pulley.m_ropeLength = length;
  64. }
  65. void hkpPulleyConstraintData::setLeverageOnBodyB(hkReal leverageOnBodyB)
  66. {
  67. m_atoms.m_pulley.m_leverageOnBodyB = leverageOnBodyB;
  68. }
  69. /*
  70. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  71. * Confidential Information of Havok.  (C) Copyright 1999-2009
  72. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  73. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  74. * rights, and intellectual property rights in the Havok software remain in
  75. * Havok and/or its suppliers.
  76. * Use of this software for evaluation purposes is subject to and indicates
  77. * acceptance of the End User licence Agreement for this product. A copy of
  78. * the license is included with this software and is also available at www.havok.com/tryhavok.
  79. */