PhysicsShape applyForce function

This commit is contained in:
rextimmy 2017-01-05 10:38:05 +10:00
parent 8a39f5e7b6
commit 1559e7a3d3
7 changed files with 51 additions and 3 deletions

View file

@ -356,7 +356,7 @@ void BtBody::applyImpulse( const Point3F &origin, const Point3F &force )
mActor->activate();
}
void BtBody::applyTorque(const Point3F &torque)
void BtBody::applyTorque( const Point3F &torque )
{
AssertFatal(mActor, "BtBody::applyTorque - The actor is null!");
AssertFatal(isDynamic(), "BtBody::applyTorque - This call is only for dynamics!");
@ -367,6 +367,24 @@ void BtBody::applyTorque(const Point3F &torque)
mActor->activate();
}
void BtBody::applyForce( const Point3F &force )
{
AssertFatal(mActor, "BtBody::applyForce - The actor is null!");
AssertFatal(isDynamic(), "BtBody::applyForce - This call is only for dynamics!");
if (mCenterOfMass)
{
Point3F relForce(force);
mCenterOfMass->mulV(relForce);
mActor->applyCentralForce(btCast<btVector3>(relForce));
}
else
mActor->applyCentralForce(btCast<btVector3>(force));
if (!mActor->isActive())
mActor->activate();
}
Box3F BtBody::getWorldBounds()
{
btVector3 min, max;

View file

@ -111,7 +111,8 @@ public:
F32 staticFriction );
virtual void applyCorrection( const MatrixF &xfm );
virtual void applyImpulse( const Point3F &origin, const Point3F &force );
virtual void applyTorque(const Point3F &torque);
virtual void applyTorque( const Point3F &torque );
virtual void applyForce( const Point3F &force );
virtual void findContact(SceneObject **contactObject, VectorF *contactNormal, Vector<SceneObject*> *outOverlapObjects) const;
virtual void moveKinematicTo(const MatrixF &xfm);