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

其他游戏

开发平台:

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. // Return the master weight for the control
  9. inline hkReal hkaDefaultAnimationControl::getMasterWeight() const
  10. {
  11. return m_masterWeight;
  12. }
  13. // Set the master weight for this playing animation
  14. inline void hkaDefaultAnimationControl::setMasterWeight( hkReal weight )
  15. {
  16. m_masterWeight = weight;
  17. }
  18. // Return the master weight for the control
  19. inline hkReal hkaDefaultAnimationControl::getPlaybackSpeed() const
  20. {
  21. return m_playbackSpeed;
  22. }
  23. // Set the playback speed.
  24. // If the is set to a negative value the animation will run backwards
  25. inline void hkaDefaultAnimationControl::setPlaybackSpeed( hkReal speed )
  26. {
  27. m_playbackSpeed = speed;
  28. }
  29. inline hkUint32 hkaDefaultAnimationControl::getOverflowCount() const
  30. {
  31. return m_overflowCount;
  32. }
  33. inline void hkaDefaultAnimationControl::setOverflowCount( hkUint32 count )
  34. {
  35. m_overflowCount = count;
  36. }
  37. inline hkUint32 hkaDefaultAnimationControl::getUnderflowCount() const
  38. {
  39. return m_underflowCount;
  40. }
  41. inline void hkaDefaultAnimationControl::setUnderflowCount( hkUint32 count )
  42. {
  43. m_underflowCount = count;
  44. }
  45. inline enum hkaDefaultAnimationControl::EaseStatus hkaDefaultAnimationControl::getEaseStatus() const
  46. {
  47. return m_easeStatus;
  48. }
  49. inline void hkaDefaultAnimationControl::setEaseInCurve(hkReal y0, hkReal y1, hkReal y2, hkReal y3)
  50. {
  51. m_easeInCurve.set(y0, y1, y2, y3);
  52. }
  53. inline void hkaDefaultAnimationControl::setEaseOutCurve(hkReal y0, hkReal y1, hkReal y2, hkReal y3)
  54. {
  55. m_easeOutCurve.set(y0, y1, y2, y3);
  56. }
  57. // We assume that ease out and in are symmetric
  58. inline hkReal hkaDefaultAnimationControl::easeIn(hkReal duration)
  59. {
  60. const hkReal denominator = duration; // avoid sn compiler warning
  61. // Test if the control is currently easing out
  62. if ( m_easeStatus == EASING_OUT || m_easeStatus == EASED_OUT )
  63. {
  64. // "Mirror" the amount of time left for easing
  65. m_easeT = 1.0f - m_easeT;
  66. }
  67. m_easeInvDuration = (duration > HK_REAL_EPSILON) ? (1.0f / denominator) : HK_REAL_MAX;
  68. m_easeStatus = ( m_easeT == 1.0f ) ? EASED_IN : EASING_IN;
  69. return duration * (1.0f - m_easeT);
  70. }
  71. // We assume that ease out and in are symmetric
  72. inline hkReal hkaDefaultAnimationControl::easeOut(hkReal duration)
  73. {
  74. const hkReal denominator = duration; // avoid sn compiler warning
  75. // Test if the control is currently easing out
  76. if ( m_easeStatus == EASING_IN || m_easeStatus == EASED_IN )
  77. {
  78. // "Mirror" the amount of time left for easing
  79. m_easeT = 1.0f - m_easeT;
  80. }
  81. m_easeInvDuration = (duration > HK_REAL_EPSILON) ? (1.0f / denominator) : HK_REAL_MAX;
  82. m_easeStatus = ( m_easeT == 1.0f ) ? EASED_OUT : EASING_OUT;
  83. return duration * (1.0f - m_easeT);
  84. }
  85. // Add a listener 
  86. inline void hkaDefaultAnimationControl::addDefaultControlListener(hkaDefaultAnimationControlListener* listener)
  87. {
  88. HK_ASSERT2(0x5efefba3, m_defaultListeners.indexOf( listener ) < 0, "You tried to add  a control listener twice" );
  89. m_defaultListeners.pushBack( listener );
  90. }
  91. // Remove a listener
  92. inline void hkaDefaultAnimationControl::removeDefaultControlListener(hkaDefaultAnimationControlListener* listener)
  93. {
  94. int i = m_defaultListeners.indexOf( listener );
  95. HK_ASSERT2(0x2c7b3925, i >= 0, "You tried to remove a control listener, which was never added" );
  96. m_defaultListeners.removeAt(i);
  97. }
  98. // Set the amount (in local seconds) to crop the start of the animation.
  99. inline void hkaDefaultAnimationControl::setCropStartAmountLocalTime( hkReal cropStartAmountLocalTime )
  100. {
  101. m_cropStartAmountLocalTime = cropStartAmountLocalTime;
  102. // make sure the local time is kept in range
  103. if ( m_localTime < m_cropStartAmountLocalTime )
  104. {
  105. m_localTime = m_cropStartAmountLocalTime;
  106. }
  107. }
  108. // Set the amount (in local seconds) to crop the end of the animation.
  109. inline void hkaDefaultAnimationControl::setCropEndAmountLocalTime( hkReal cropEndAmountLocalTime )
  110. {
  111. m_cropEndAmountLocalTime = cropEndAmountLocalTime;
  112. hkReal endTime = m_binding->m_animation->m_duration - m_cropEndAmountLocalTime;
  113. // make sure the local time is kept in range
  114. if ( m_localTime >= endTime )
  115. {
  116. m_localTime = endTime;
  117. }
  118. }
  119. // Get the amount (in local seconds) to crop the start of the animation.
  120. inline hkReal hkaDefaultAnimationControl::getCropStartAmountLocalTime()
  121. {
  122. return m_cropStartAmountLocalTime;
  123. }
  124. // Get the amount (in local seconds) to crop the end of the animation.
  125. inline hkReal hkaDefaultAnimationControl::getCropEndAmountLocalTime()
  126. {
  127. return m_cropEndAmountLocalTime;
  128. }
  129. /*
  130. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  131. * Confidential Information of Havok.  (C) Copyright 1999-2009
  132. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  133. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  134. * rights, and intellectual property rights in the Havok software remain in
  135. * Havok and/or its suppliers.
  136. * Use of this software for evaluation purposes is subject to and indicates
  137. * acceptance of the End User licence Agreement for this product. A copy of
  138. * the license is included with this software and is also available at www.havok.com/tryhavok.
  139. */