diff --git a/Code/Physics/GamePhysics/Implementation/SimpleRigidBody.cpp b/Code/Physics/GamePhysics/Implementation/SimpleRigidBody.cpp index 018c3be0..e2d87ce7 100644 --- a/Code/Physics/GamePhysics/Implementation/SimpleRigidBody.cpp +++ b/Code/Physics/GamePhysics/Implementation/SimpleRigidBody.cpp @@ -412,4 +412,14 @@ void SimpleRigidBody::PreStep (const btCollisionWorld* collisionWorld) float SimpleRigidBody::GetLambda() const { return this->rayLambda[0]; +} + +void SimpleRigidBody::MoveToLimbo() +{ + this->rigidBody->setCollisionFlags(this->rigidBody->getCollisionFlags() | btCollisionObject::CF_NO_CONTACT_RESPONSE); +} + +void SimpleRigidBody::ReleaseFromLimbo() +{ + this->rigidBody->setCollisionFlags(btCollisionObject::CF_KINEMATIC_OBJECT); } \ No newline at end of file diff --git a/Code/Physics/GamePhysics/Implementation/SimpleRigidBody.h b/Code/Physics/GamePhysics/Implementation/SimpleRigidBody.h index effd123d..4290b540 100644 --- a/Code/Physics/GamePhysics/Implementation/SimpleRigidBody.h +++ b/Code/Physics/GamePhysics/Implementation/SimpleRigidBody.h @@ -69,6 +69,9 @@ namespace Oyster float GetLambda() const; + void MoveToLimbo(); + void ReleaseFromLimbo(); + private: btCollisionShape* collisionShape; diff --git a/Code/Physics/GamePhysics/PhysicsAPI.h b/Code/Physics/GamePhysics/PhysicsAPI.h index 72d4a8c6..33dc24a8 100644 --- a/Code/Physics/GamePhysics/PhysicsAPI.h +++ b/Code/Physics/GamePhysics/PhysicsAPI.h @@ -169,6 +169,9 @@ namespace Oyster virtual void CallSubscription_AfterCollisionResponse(ICustomBody* bodyA, ICustomBody* bodyB, Math::Float kineticEnergyLoss) = 0; virtual void CallSubscription_Move() = 0; + virtual void MoveToLimbo() = 0; + virtual void ReleaseFromLimbo() = 0; + /******************************************************** * @return the void pointer set by SetCustomTag. * nullptr if none is set.