hkpVehicleWheelCollide.h
上传用户: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. #ifndef HKVEHICLE_COLLISIONDETECTION_hkVehicleCOLLISIONDETECTION_XML_H
  9. #define HKVEHICLE_COLLISIONDETECTION_hkVehicleCOLLISIONDETECTION_XML_H
  10. #include <Common/Base/hkBase.h>
  11. class hkpVehicleInstance;
  12. class hkpRigidBody;
  13. /// This component manages the collision detection between the wheels and the
  14. /// ground.
  15. class hkpVehicleWheelCollide : public hkReferencedObject
  16. {
  17. public:
  18. HK_DECLARE_CLASS_ALLOCATOR(HK_MEMORY_CLASS_VEHICLE);
  19. HK_DECLARE_REFLECTION();
  20. /// Container for data output by the collision calculations.  
  21. struct CollisionDetectionWheelOutput
  22. {
  23. public:
  24. /// The maximum number of shape keys which is reported (see also hkpShapeRayCastOutput::MAX_HIERARCHY_DEPTH)
  25. enum { MAX_NUM_SHAPE_KEYS = 8  };
  26. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR( HK_MEMORY_CLASS_VEHICLE, hkpVehicleWheelCollide::CollisionDetectionWheelOutput );
  27. /// The point of contact of the wheel with the ground.
  28. class hkContactPoint m_contactPoint;
  29. /// The friction coefficient at the point of contact.
  30. hkReal m_contactFriction;
  31. /// The ground body the vehicle is in contact.  This value is HK_NULL
  32. /// if none of the wheels are in contact with the ground.
  33. hkpRigidBody* m_contactBody;
  34. /// The shapeKey of the object at the point of contact.
  35. hkpShapeKey m_contactShapeKey[MAX_NUM_SHAPE_KEYS];
  36. /// The length of the suspension due to the wheel being in contact at
  37. /// the given point.
  38. hkReal m_currentSuspensionLength;
  39. /// The velocity of the suspension.
  40. hkReal m_suspensionRelativeVelocity;
  41. /// Scaling factor used to handle curb interaction.
  42. /// Forces along the contact normal are scaled by this factor.
  43. /// This ensures that the suspension force component is unscaled.
  44. /// Clipping is affected by hkpVehicleData::m_normalClippingAngle.
  45. hkReal m_clippedInvContactDotSuspension;
  46. };
  47. //
  48. // Methods
  49. //
  50. /// The caller of this method pre-allocates cdInfoOut with a buffer the size of the
  51. /// number of wheels in the vehicle
  52. virtual void collideWheels(const hkReal deltaTime, hkpVehicleInstance* vehicle, CollisionDetectionWheelOutput* cdInfoOut) = 0;
  53. virtual void init( const hkpVehicleInstance* vehicle ) = 0;
  54. virtual void getPhantoms( hkArray<hkpPhantom*>& phantomsOut ) = 0;
  55. /// As all other parts of the vehicle can usually be shared, except for the wheel collide.
  56. virtual hkpVehicleWheelCollide* clone( const hkArray<hkpPhantom*>& newPhantoms ) const = 0;
  57. hkpVehicleWheelCollide(hkFinishLoadedObjectFlag f) : hkReferencedObject(f) {}
  58. protected:
  59. hkpVehicleWheelCollide() : m_alreadyUsed(false) {}
  60. public:
  61.     /// This component cannot be shared between vehicle instances - this variable
  62.     /// indicates if a vehicle already owns it.
  63. hkBool m_alreadyUsed;
  64. };
  65. #endif // HKVEHICLE_COLLISIONDETECTION_hkVehicleCOLLISIONDETECTION_XML_H
  66. /*
  67. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  68. * Confidential Information of Havok.  (C) Copyright 1999-2009
  69. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  70. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  71. * rights, and intellectual property rights in the Havok software remain in
  72. * Havok and/or its suppliers.
  73. * Use of this software for evaluation purposes is subject to and indicates
  74. * acceptance of the End User licence Agreement for this product. A copy of
  75. * the license is included with this software and is also available at www.havok.com/tryhavok.
  76. */