bullet_glue.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #ifndef BB_BULLET_H
  2. #define BB_BULLET_H
  3. #include "btBulletDynamicsCommon.h"
  4. namespace bbBullet{
  5. btVector3 calculateLocalInertia( btCollisionShape *self,btScalar mass );
  6. btTransform getWorldTransform( btMotionState *self );
  7. struct Point2PointConstraint : public btPoint2PointConstraint{
  8. Point2PointConstraint(btRigidBody* rbA,btRigidBody* rbB, const btVector3& pivotInA,const btVector3& pivotInB):
  9. btPoint2PointConstraint(*rbA,*rbB,pivotInA,pivotInB){}
  10. Point2PointConstraint(btRigidBody* rbA,const btVector3& pivotInA):
  11. btPoint2PointConstraint(*rbA,pivotInA){}
  12. };
  13. struct HingeConstraint : public btHingeConstraint{
  14. HingeConstraint(btRigidBody *rbA, btRigidBody *rbB, const btVector3 &pivotInA, const btVector3 &pivotInB, const btVector3 &axisInA, const btVector3 &axisInB, bool useReferenceFrameA=false):
  15. btHingeConstraint(*rbA, *rbB, pivotInA, pivotInB, axisInA, axisInB, useReferenceFrameA){}
  16. HingeConstraint(btRigidBody *rbA, const btVector3 &pivotInA, const btVector3 &axisInA, bool useReferenceFrameA=false):
  17. btHingeConstraint(*rbA, pivotInA, axisInA, useReferenceFrameA){}
  18. HingeConstraint(btRigidBody *rbA, btRigidBody *rbB, const btTransform &rbAFrame, const btTransform &rbBFrame, bool useReferenceFrameA=false):
  19. btHingeConstraint(*rbA, *rbB, rbAFrame, rbBFrame, useReferenceFrameA){}
  20. HingeConstraint(btRigidBody *rbA, const btTransform &rbAFrame, bool useReferenceFrameA=false):
  21. btHingeConstraint(*rbA, rbAFrame, useReferenceFrameA){}
  22. };
  23. struct SliderConstraint : public btSliderConstraint{
  24. SliderConstraint(btRigidBody *rbA, btRigidBody *rbB, const btTransform &frameInA, const btTransform &frameInB, bool useLinearReferenceFrameA):
  25. btSliderConstraint(*rbA,*rbB, frameInA, frameInB, useLinearReferenceFrameA){}
  26. SliderConstraint(btRigidBody *rbB, const btTransform &frameInB, bool useLinearReferenceFrameA):
  27. btSliderConstraint(*rbB, frameInB, useLinearReferenceFrameA){}
  28. };
  29. struct FixedConstraint : public btFixedConstraint{
  30. FixedConstraint(btRigidBody* rbA,btRigidBody* rbB, const btTransform& frameInA,const btTransform& frameInB):
  31. btFixedConstraint(*rbA,*rbB,frameInA,frameInB){}
  32. };
  33. struct MotionState : public btMotionState{
  34. virtual void setWorldTransform( btTransform *worldTrans ){
  35. }
  36. virtual void getWorldTransform( btTransform *worldTrans ){
  37. }
  38. virtual void setWorldTransform( const btTransform &worldTrans ){
  39. this->setWorldTransform( const_cast<btTransform*>( &worldTrans ) );
  40. }
  41. virtual void getWorldTransform( btTransform &worldTrans )const{
  42. const_cast<MotionState*>( this )->getWorldTransform( &worldTrans );
  43. }
  44. };
  45. struct DefaultMotionState : public btDefaultMotionState{
  46. DefaultMotionState(){
  47. }
  48. DefaultMotionState( const btTransform &startTrans,const btTransform &centerOfMassOffset ):btDefaultMotionState( startTrans,centerOfMassOffset ){
  49. }
  50. void setWorldTransform( btTransform *worldTrans ){
  51. btDefaultMotionState::setWorldTransform( *worldTrans );
  52. }
  53. void getWorldTransform( btTransform *worldTrans ){
  54. btDefaultMotionState::getWorldTransform( *worldTrans );
  55. }
  56. };
  57. void rayTest( btCollisionWorld *self,
  58. const btVector3 &rayFromWorld,
  59. const btVector3 &rayToWorld,
  60. btCollisionWorld::RayResultCallback *result );
  61. void convexSweepTest( btCollisionWorld *self,
  62. const btConvexShape *castShape,
  63. const btTransform &castFrom,
  64. const btTransform &castTo,
  65. btCollisionWorld::ConvexResultCallback *result,
  66. btScalar allowedCcdPenetration );
  67. }
  68. #endif