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

其他游戏

开发平台:

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_ANGULARDASHPOT_H
  9. #define HK_ANGULARDASHPOT_H
  10. #include <Physics/Dynamics/Action/hkpBinaryAction.h>
  11. extern const hkClass hkpAngularDashpotActionClass;
  12. /// An angular dashpot is an action that can be used to maintain the orientation of a
  13. /// rigid body - either relative to another body or the world. It can be used as a cheap alternative to simple orientation
  14. /// constraints, and is the rotational equivalent of an hkpDashpotAction.
  15. /// When one of the dashpot's bodies is oriented away from the specified rotation, the dashpot works so that it
  16. /// will tend to return to that rotation.  You construct the dashpot by specifying the rigid
  17. /// body or bodies, and the desired orientation (rot).  You can also specify stiffness 
  18. /// and damping parameters.
  19. /// n
  20. /// The default strength and damping parameters are suitable for dashpots connected
  21. /// to rigid bodies of mass 1kg.  For rigid bodies with larger masses, higher
  22. /// strengths may be needed.n
  23. class hkpAngularDashpotAction : public hkpBinaryAction
  24. {
  25. public:
  26. HK_DECLARE_REFLECTION();
  27. /// Creates an angular dashpot with the specified construction info.
  28. hkpAngularDashpotAction(hkpRigidBody* entityA = HK_NULL, hkpRigidBody* entityB = HK_NULL, hkUlong userData = 0);
  29. /// Applies the angular dashpot to the rigid body/bodies.
  30. /// This method is called internally by the Havok system.
  31. void applyAction(const hkStepInfo& stepInfo);
  32. /// Returns the rotation of the angular dashpot.
  33. /// The rotation value specifies the relative orientation between the two bodies - or 
  34. /// between the body and the world - that 
  35. /// the angular dashpot tries to maintain.
  36. const hkQuaternion& getRotation() const;
  37. /// Sets the rotation of the angular dashpot.
  38. /// The rotation value specifies the relative orientation between the two bodies - or 
  39. /// between the body and the world - that 
  40. /// the angular dashpot tries to maintain. The rotation 
  41. /// value is expressed as a quaternion. 
  42. /// param r The relative orientation between the two bodies, or between the body and the world.
  43. void setRotation(const hkQuaternion& r);
  44. /// Returns the strength of the dashpot.
  45. /// The default value is 1.
  46. hkReal getStrength() const;
  47. /// Sets the strength of the dashpot.
  48. /// The default strength value is 1. 
  49. /// If the weight of the bodies is much greater then 1 it may be necessary to 
  50. /// increase the strength for the  dashpot to have an appropriate affect.
  51. /// param s The strength of the dashpot.
  52. void setStrength(hkReal s);
  53. /// Returns the damping coefficient of the angular dashpot.
  54. /// The damping parameter specifies the rate of decay of the oscillations the 
  55. /// dashpot produces. Values higher than 10% of the strength of the Dashpot can cause instability.
  56. hkReal getDamping() const;
  57. /// Sets the damping coefficient of the angular dashpot.
  58. /// The damping parameter specifies the rate of decay of the oscillations the 
  59. /// dashpot produces. Values higher than 10% of the strength of the Dashpot can 
  60. /// cause instability.
  61. /// param s The damping coefficient of the dashpot.
  62. void setDamping(hkReal s);
  63. /// hkpAction clone interface.
  64. virtual hkpAction* clone( const hkArray<hkpEntity*>& newEntities, const hkArray<hkpPhantom*>& newPhantoms ) const;
  65. public:
  66. hkQuaternion m_rotation;
  67. hkReal m_strength;
  68. hkReal m_damping;
  69. public:
  70. hkpAngularDashpotAction( class hkFinishLoadedObjectFlag flag ) : hkpBinaryAction(flag) {}
  71. };
  72. #include <Physics/Utilities/Actions/AngularDashpot/hkpAngularDashpotAction.inl>
  73. #endif 
  74. /*
  75. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  76. * Confidential Information of Havok.  (C) Copyright 1999-2009
  77. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  78. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  79. * rights, and intellectual property rights in the Havok software remain in
  80. * Havok and/or its suppliers.
  81. * Use of this software for evaluation purposes is subject to and indicates
  82. * acceptance of the End User licence Agreement for this product. A copy of
  83. * the license is included with this software and is also available at www.havok.com/tryhavok.
  84. */