From 1b70c4e5c97d3b5d4ddf35e3f916f6fbb02cb654 Mon Sep 17 00:00:00 2001 From: ejcoumans Date: Sun, 21 Oct 2007 22:52:11 +0000 Subject: [PATCH] added preliminary broadphase/collision C-API --- src/Bullet-C-Api.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/Bullet-C-Api.h b/src/Bullet-C-Api.h index 1cce4efa8..a196f6417 100644 --- a/src/Bullet-C-Api.h +++ b/src/Bullet-C-Api.h @@ -40,17 +40,27 @@ extern "C" { /* Particular physics SDK */ PL_DECLARE_HANDLE(plPhysicsSdkHandle); + /* Dynamics world, belonging to some physics SDK */ PL_DECLARE_HANDLE(plDynamicsWorldHandle); + /* Rigid Body that can be part of a Dynamics World */ PL_DECLARE_HANDLE(plRigidBodyHandle); + /* Collision Shape/Geometry, property of a Rigid Body */ PL_DECLARE_HANDLE(plCollisionShapeHandle); + /* Constraint for Rigid Bodies */ PL_DECLARE_HANDLE(plConstraintHandle); + /* Triangle Mesh interface */ PL_DECLARE_HANDLE(plMeshInterfaceHandle); +/* Broadphase Scene/Proxy Handles */ + PL_DECLARE_HANDLE(plCollisionBroadphaseHandle); + PL_DECLARE_HANDLE(plBroadphaseProxyHandle); + PL_DECLARE_HANDLE(plCollisionWorldHandle); + /* Create and Delete a Physics SDK */ @@ -58,6 +68,27 @@ extern "C" { extern plPhysicsSdkHandle plNewBulletSdk(); //this could be also another sdk, like ODE, PhysX etc. extern void plDeletePhysicsSdk(plPhysicsSdkHandle physicsSdk); +/* Collision World, not strictly necessary, you can also just create a Dynamics World with Rigid Bodies which internally manages the Collision World with Collision Objects */ + + typedef void(*btBroadphaseCallback)(void* clientData, void* object1,void* object2); + + extern plCollisionBroadphaseHandle plCreateSapBroadphase(btBroadphaseCallback beginCallback,btBroadphaseCallback endCallback); + + extern void plDestroyBroadphase(plCollisionBroadphaseHandle bp); + + extern plBroadphaseProxyHandle plCreateProxy(plCollisionBroadphaseHandle bp, void* clientData, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ); + + extern void plDestroyProxy(plCollisionBroadphaseHandle bp, plBroadphaseProxyHandle proxyHandle); + + extern void plSetBoundingBox(plBroadphaseProxyHandle proxyHandle, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ); + +/* todo: add pair cache support with queries like add/remove/find pair */ + + extern plCollisionWorldHandle plCreateCollisionWorld(plPhysicsSdkHandle physicsSdk); + +/* todo: add/remove objects */ + + /* Dynamics World */ extern plDynamicsWorldHandle plCreateDynamicsWorld(plPhysicsSdkHandle physicsSdk);