btWheelInfo.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /*
  2. * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
  3. *
  4. * Permission to use, copy, modify, distribute and sell this software
  5. * and its documentation for any purpose is hereby granted without fee,
  6. * provided that the above copyright notice appear in all copies.
  7. * Erwin Coumans makes no representations about the suitability
  8. * of this software for any purpose.
  9. * It is provided "as is" without express or implied warranty.
  10. */
  11. #ifndef BT_WHEEL_INFO_H
  12. #define BT_WHEEL_INFO_H
  13. #include "LinearMath/btVector3.h"
  14. #include "LinearMath/btTransform.h"
  15. class btRigidBody;
  16. struct btWheelInfoConstructionInfo
  17. {
  18. btVector3 m_chassisConnectionCS;
  19. btVector3 m_wheelDirectionCS;
  20. btVector3 m_wheelAxleCS;
  21. btScalar m_suspensionRestLength;
  22. btScalar m_maxSuspensionTravelCm;
  23. btScalar m_wheelRadius;
  24. btScalar m_suspensionStiffness;
  25. btScalar m_wheelsDampingCompression;
  26. btScalar m_wheelsDampingRelaxation;
  27. btScalar m_frictionSlip;
  28. btScalar m_maxSuspensionForce;
  29. bool m_bIsFrontWheel;
  30. };
  31. /// btWheelInfo contains information per wheel about friction and suspension.
  32. struct btWheelInfo
  33. {
  34. struct RaycastInfo
  35. {
  36. //set by raycaster
  37. btVector3 m_contactNormalWS; //contactnormal
  38. btVector3 m_contactPointWS; //raycast hitpoint
  39. btScalar m_suspensionLength;
  40. btVector3 m_hardPointWS; //raycast starting point
  41. btVector3 m_wheelDirectionWS; //direction in worldspace
  42. btVector3 m_wheelAxleWS; // axle in worldspace
  43. bool m_isInContact;
  44. void* m_groundObject; //could be general void* ptr
  45. };
  46. RaycastInfo m_raycastInfo;
  47. btTransform m_worldTransform;
  48. btVector3 m_chassisConnectionPointCS; //const
  49. btVector3 m_wheelDirectionCS; //const
  50. btVector3 m_wheelAxleCS; // const or modified by steering
  51. btScalar m_suspensionRestLength1; //const
  52. btScalar m_maxSuspensionTravelCm;
  53. btScalar getSuspensionRestLength() const;
  54. btScalar m_wheelsRadius; //const
  55. btScalar m_suspensionStiffness; //const
  56. btScalar m_wheelsDampingCompression; //const
  57. btScalar m_wheelsDampingRelaxation; //const
  58. btScalar m_frictionSlip;
  59. btScalar m_steering;
  60. btScalar m_rotation;
  61. btScalar m_deltaRotation;
  62. btScalar m_rollInfluence;
  63. btScalar m_maxSuspensionForce;
  64. btScalar m_engineForce;
  65. btScalar m_brake;
  66. bool m_bIsFrontWheel;
  67. void* m_clientInfo; //can be used to store pointer to sync transforms...
  68. btWheelInfo() {}
  69. btWheelInfo(btWheelInfoConstructionInfo& ci)
  70. {
  71. m_suspensionRestLength1 = ci.m_suspensionRestLength;
  72. m_maxSuspensionTravelCm = ci.m_maxSuspensionTravelCm;
  73. m_wheelsRadius = ci.m_wheelRadius;
  74. m_suspensionStiffness = ci.m_suspensionStiffness;
  75. m_wheelsDampingCompression = ci.m_wheelsDampingCompression;
  76. m_wheelsDampingRelaxation = ci.m_wheelsDampingRelaxation;
  77. m_chassisConnectionPointCS = ci.m_chassisConnectionCS;
  78. m_wheelDirectionCS = ci.m_wheelDirectionCS;
  79. m_wheelAxleCS = ci.m_wheelAxleCS;
  80. m_frictionSlip = ci.m_frictionSlip;
  81. m_steering = btScalar(0.);
  82. m_engineForce = btScalar(0.);
  83. m_rotation = btScalar(0.);
  84. m_deltaRotation = btScalar(0.);
  85. m_brake = btScalar(0.);
  86. m_rollInfluence = btScalar(0.1);
  87. m_bIsFrontWheel = ci.m_bIsFrontWheel;
  88. m_maxSuspensionForce = ci.m_maxSuspensionForce;
  89. }
  90. void updateWheel(const btRigidBody& chassis, RaycastInfo& raycastInfo);
  91. btScalar m_clippedInvContactDotSuspension;
  92. btScalar m_suspensionRelativeVelocity;
  93. //calculated by suspension
  94. btScalar m_wheelsSuspensionForce;
  95. btScalar m_skidInfo;
  96. };
  97. #endif //BT_WHEEL_INFO_H