hkp1dAngularFollowCam.h
上传用户: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. #ifndef HK_1D_ANGULAR_FOLLOW_COM
  9. #define HK_1D_ANGULAR_FOLLOW_COM
  10. #include <Common/Base/hkBase.h>
  11. #include <Physics/Vehicle/Camera/hkp1dAngularFollowCamCinfo.h>
  12. /// The hkp1dAngularFollowCam attaches a camera to a vehicle to aid rendering.
  13. /// The position of the camera rotates around the object using a single axle 
  14. /// (normally the up axis).
  15. /// The camera tries to slowly move to a certain point (m_positionUS) defined in object space
  16. /// and always looks at a given point in object space.
  17. /// See hkp1dAngularFollowCamCinfo for parameter description
  18. class hkp1dAngularFollowCam : public  hkReferencedObject
  19. {
  20. public:
  21. /// Default constructor
  22. hkp1dAngularFollowCam ();
  23. /// Constructor.
  24. hkp1dAngularFollowCam (const hkp1dAngularFollowCamCinfo &bp);
  25. /// Destructor.
  26. virtual ~hkp1dAngularFollowCam();
  27. /// Reset all values except pointer values.
  28. void reinitialize( const hkp1dAngularFollowCamCinfo &bp );
  29. struct CameraInput
  30. {
  31. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR(HK_MEMORY_CLASS_CAMERA, CameraInput);
  32. hkVector4 m_linearVelocity;
  33. hkVector4 m_angularVelocity;
  34. hkTransform m_fromTrans;
  35. hkReal m_deltaTime;
  36. };
  37. // Output of the camera calculations
  38. struct CameraOutput
  39. {
  40. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR(HK_MEMORY_CLASS_CAMERA, CameraInput);
  41. hkVector4  m_positionWS;
  42. hkVector4  m_lookAtWS;
  43. hkVector4  m_upDirWS;
  44. hkReal m_fov;
  45. hkReal m_pad[3];
  46. };
  47. /// Immediately jump to the ideal yaw angle.
  48. virtual void resetCamera( const hkTransform& trans, const hkVector4& linearVelocity, const hkVector4& angularVelocity);
  49. virtual void calculateCamera ( const CameraInput &in, CameraOutput &out );
  50. protected:
  51. hkReal m_cameraYawAngle;
  52. hkReal m_yawCorrection;
  53. hkReal m_yawSignCorrection;
  54. hkVector4 m_upDirWS;
  55. hkVector4 m_rigidBodyForwardDir;
  56. hkVector4 m_flat0DirWS;  // an orthogonal to m_upDirWS
  57. hkVector4 m_flat1DirWS;  // an orthogonal to m_upDirWS and m_flat0DirWS
  58. hkp1dAngularFollowCamCinfo::CameraSet m_set[2];
  59. protected:
  60. /// Internal methods for calculating camera position
  61. HK_FORCE_INLINE hkReal calcYawAngle(const hkReal factor1, const hkTransform& trans, const hkVector4& linearVelocity);
  62. HK_FORCE_INLINE hkReal calcVelocityFactor(const hkVector4& bodyVelocity);
  63. };
  64. #endif //HK_1D_ANGULAR_FOLLOW_COM
  65. /*
  66. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  67. * Confidential Information of Havok.  (C) Copyright 1999-2009
  68. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  69. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  70. * rights, and intellectual property rights in the Havok software remain in
  71. * Havok and/or its suppliers.
  72. * Use of this software for evaluation purposes is subject to and indicates
  73. * acceptance of the End User licence Agreement for this product. A copy of
  74. * the license is included with this software and is also available at www.havok.com/tryhavok.
  75. */