hkaAnimation.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. inline hkaAnimation::hkaAnimation() : m_type(HK_UNKNOWN_ANIMATION)
  9. {
  10. m_duration = 0.0f;
  11. m_numberOfTransformTracks = 0;
  12. m_numberOfFloatTracks = 0;
  13. m_extractedMotion = HK_NULL;
  14. m_annotationTracks = HK_NULL;
  15. m_numAnnotationTracks = 0;
  16. }
  17. inline hkaAnimation::AnimationType hkaAnimation::getType() const
  18. {
  19. return m_type;
  20. }
  21. inline void hkaAnimation::samplePartialTracks(hkReal time, hkUint32 maxNumTransformTracks, hkQsTransform* transformTracksOut, hkUint32 maxNumFloatTracks, hkReal* floatTracksOut, hkaChunkCache* cache) const
  22. {
  23. #ifndef HK_PLATFORM_IS_SPU
  24. HK_ERROR(0x54e32123, "samplePartialPose not implemented for this type of animation");
  25. #endif
  26. }
  27. inline int hkaAnimation::getNumDataChunks(hkReal time) const
  28. {
  29. return 0;
  30. }
  31. inline void hkaAnimation::getDataChunks(hkReal time, DataChunk* dataChunks, int numDataChunks) const
  32. {
  33. #ifndef HK_PLATFORM_IS_SPU
  34. HK_ERROR(0x54e32124, "getDataChunks not implemented for this type of animation");
  35. #endif
  36. }
  37. inline int hkaAnimation::getMaxSizeOfCombinedDataChunks() const
  38. {
  39. return 0;
  40. }
  41. inline void hkaAnimation::getFrameAndDelta( hkReal time, hkUint32& frameOut, hkReal& deltaOut ) const
  42. {
  43. const hkUint32 maxFrameIndex = getNumOriginalFrames() - 1;
  44. const hkReal frameFloat = (time / m_duration) * maxFrameIndex;
  45. frameOut = static_cast<hkUint32>( frameFloat );
  46. // Handle any roundoff error: We are always interpolating between pose[frameOut] and pose[frameOut+1]
  47.     if(frameOut > maxFrameIndex - 1)
  48. {
  49. frameOut = maxFrameIndex - 1;
  50. deltaOut = 1.0f;
  51. return;
  52. }
  53. deltaOut = frameFloat - frameOut;
  54. }
  55. inline hkBool hkaAnimation::hasExtractedMotion() const
  56. {
  57. return m_extractedMotion != HK_NULL;
  58. }
  59. inline void hkaAnimation::setExtractedMotion( const hkaAnimatedReferenceFrame* extractedMotion )
  60. {
  61. m_extractedMotion = extractedMotion;
  62. }
  63. inline void hkaAnimation::getExtractedMotionReferenceFrame(hkReal time, hkQsTransform& motionOut) const
  64. {
  65. return m_extractedMotion->getReferenceFrame( time, motionOut );
  66. }
  67. inline void hkaAnimation::getExtractedMotionDeltaReferenceFrame( hkReal time, hkReal nextTime, int loops, hkQsTransform& deltaMotionOut ) const
  68. {
  69. return m_extractedMotion->getDeltaReferenceFrame( time, nextTime, loops, deltaMotionOut );
  70. }
  71. /// Sample a single animation track
  72. inline void hkaAnimation::sampleSingleTransformTrack( hkReal time, hkInt16 track, hkQsTransform* transformOut ) const
  73. {
  74. return sampleIndividualTransformTracks( time, &track, 1, transformOut );
  75. }
  76. /// Sample a single floating track
  77. inline void hkaAnimation::sampleSingleFloatTrack( hkReal time, hkInt16 track, hkReal* out ) const
  78. {
  79. return sampleIndividualFloatTracks( time, &track, 1, out );
  80. }
  81. /*
  82. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  83. * Confidential Information of Havok.  (C) Copyright 1999-2009
  84. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  85. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  86. * rights, and intellectual property rights in the Havok software remain in
  87. * Havok and/or its suppliers.
  88. * Use of this software for evaluation purposes is subject to and indicates
  89. * acceptance of the End User licence Agreement for this product. A copy of
  90. * the license is included with this software and is also available at www.havok.com/tryhavok.
  91. */