btWheelInfo.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 "bullet/LinearMath/btVector3.h"
  14. #include "bullet/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(btWheelInfoConstructionInfo& ci)
  69. {
  70. m_suspensionRestLength1 = ci.m_suspensionRestLength;
  71. m_maxSuspensionTravelCm = ci.m_maxSuspensionTravelCm;
  72. m_wheelsRadius = ci.m_wheelRadius;
  73. m_suspensionStiffness = ci.m_suspensionStiffness;
  74. m_wheelsDampingCompression = ci.m_wheelsDampingCompression;
  75. m_wheelsDampingRelaxation = ci.m_wheelsDampingRelaxation;
  76. m_chassisConnectionPointCS = ci.m_chassisConnectionCS;
  77. m_wheelDirectionCS = ci.m_wheelDirectionCS;
  78. m_wheelAxleCS = ci.m_wheelAxleCS;
  79. m_frictionSlip = ci.m_frictionSlip;
  80. m_steering = btScalar(0.);
  81. m_engineForce = btScalar(0.);
  82. m_rotation = btScalar(0.);
  83. m_deltaRotation = btScalar(0.);
  84. m_brake = btScalar(0.);
  85. m_rollInfluence = btScalar(0.1);
  86. m_bIsFrontWheel = ci.m_bIsFrontWheel;
  87. m_maxSuspensionForce = ci.m_maxSuspensionForce;
  88. }
  89. void updateWheel(const btRigidBody& chassis,RaycastInfo& raycastInfo);
  90. btScalar m_clippedInvContactDotSuspension;
  91. btScalar m_suspensionRelativeVelocity;
  92. //calculated by suspension
  93. btScalar m_wheelsSuspensionForce;
  94. btScalar m_skidInfo;
  95. };
  96. #endif //BT_WHEEL_INFO_H