module ws.physics.bullet.cbullet; import ws.sys.library; extern(C){ struct btCompoundShape{} struct btConvexHullShape{} struct btDynamicsWorld{} struct btRigidBody{} struct BulletWorld{} struct DebugDrawer{} alias float btScalar; struct RayResult { btRigidBody* object; float distance; float x, y, z; } mixin library!( "cbullet", "cbullet", "setLinearVel", void function(btRigidBody*, btScalar, btScalar, btScalar), "getLinearVel", void function(btRigidBody*, btScalar*), "translate", void function(btRigidBody*, btScalar, btScalar, btScalar), "getTranslate", void function(btRigidBody*, btScalar*), "rotate", void function(btRigidBody*, btScalar*), "getRotate", void function(btRigidBody*, btScalar*), "setMass", void function(btRigidBody*, btScalar), //"getMass", btScalar function(btRigidBody*), "applyForce", void function(btRigidBody*, btScalar, btScalar, btScalar), "setUserPointer", void function(btRigidBody*, void*), "getUserPointer", void* function(btRigidBody*), "createDebugDrawer", "DebugDrawer* function(BulletWorld*, void*, void function(void* userdata, btScalar*, btScalar*, btScalar*))", "debugDrawWorld", void function(BulletWorld*), "createShape", btConvexHullShape* function(btScalar* points, int numPoints), "loadSimpleCompound", btCompoundShape* function(btConvexHullShape**, btScalar*, int), "createWorld", BulletWorld* function(), "destroyWorld", void function(BulletWorld*), "tickWorld", void function(BulletWorld*, btScalar), "getWorld", btDynamicsWorld* function(BulletWorld*), "addRigid", btRigidBody* function(btCompoundShape*, btScalar, btDynamicsWorld*), "removeRigid", void function(btDynamicsWorld*, btRigidBody*), "btDelete", void function(void*), "trace", RayResult function(BulletWorld*, btScalar sx, btScalar sy, btScalar sz, btScalar ex, btScalar ey, btScalar ez) ); }