00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef CONTACT_CONSTRAINT_H
00017 #define CONTACT_CONSTRAINT_H
00018
00019 #include "LinearMath/btVector3.h"
00020 #include "btJacobianEntry.h"
00021 #include "btTypedConstraint.h"
00022 #include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"
00023
00025 ATTRIBUTE_ALIGNED16(class) btContactConstraint : public btTypedConstraint
00026 {
00027 protected:
00028
00029 btPersistentManifold m_contactManifold;
00030
00031 public:
00032
00033
00034 btContactConstraint(btPersistentManifold* contactManifold,btRigidBody& rbA,btRigidBody& rbB);
00035
00036 void setContactManifold(btPersistentManifold* contactManifold);
00037
00038 btPersistentManifold* getContactManifold()
00039 {
00040 return &m_contactManifold;
00041 }
00042
00043 const btPersistentManifold* getContactManifold() const
00044 {
00045 return &m_contactManifold;
00046 }
00047
00048 virtual ~btContactConstraint();
00049
00050 virtual void getInfo1 (btConstraintInfo1* info);
00051
00052 virtual void getInfo2 (btConstraintInfo2* info);
00053
00055 virtual void buildJacobian();
00056
00057
00058 };
00059
00060
00062 void resolveSingleBilateral(btRigidBody& body1, const btVector3& pos1,
00063 btRigidBody& body2, const btVector3& pos2,
00064 btScalar distance, const btVector3& normal,btScalar& impulse ,btScalar timeStep);
00065
00066
00067
00068 #endif //CONTACT_CONSTRAINT_H