diff --git a/src/Bullet-C-Api.h b/src/Bullet-C-Api.h index a4a8a7052..f309aba28 100644 --- a/src/Bullet-C-Api.h +++ b/src/Bullet-C-Api.h @@ -147,6 +147,7 @@ extern "C" { extern void plSetPosition(plRigidBodyHandle object, const plVector3 position); extern void plSetOrientation(plRigidBodyHandle object, const plQuaternion orientation); extern void plSetEuler(plReal yaw,plReal pitch,plReal roll, plQuaternion orient); + extern void plSetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix); typedef struct plRayCastResult { plRigidBodyHandle m_body; diff --git a/src/BulletDynamics/Dynamics/Bullet-C-API.cpp b/src/BulletDynamics/Dynamics/Bullet-C-API.cpp index 47addbac4..56026bf39 100644 --- a/src/BulletDynamics/Dynamics/Bullet-C-API.cpp +++ b/src/BulletDynamics/Dynamics/Bullet-C-API.cpp @@ -295,6 +295,14 @@ void plSetOrientation(plRigidBodyHandle object, const plQuaternion orientation) body->setWorldTransform(worldTrans); } +void plSetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix) +{ + btRigidBody* body = reinterpret_cast< btRigidBody* >(object); + btAssert(body); + btTransform& worldTrans = body->getWorldTransform(); + worldTrans.setFromOpenGLMatrix(matrix); +} + void plGetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix) { btRigidBody* body = reinterpret_cast< btRigidBody* >(object);