123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- #ifndef BULLET_C_API_H
- #define BULLET_C_API_H
- #define PL_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name
- #ifdef BT_USE_DOUBLE_PRECISION
- typedef double plReal;
- #else
- typedef float plReal;
- #endif
- typedef plReal plVector3[3];
- typedef plReal plQuaternion[4];
- #ifdef __cplusplus
- extern "C" {
- #endif
- PL_DECLARE_HANDLE(plPhysicsSdkHandle);
- PL_DECLARE_HANDLE(plDynamicsWorldHandle);
-
- PL_DECLARE_HANDLE(plRigidBodyHandle);
- PL_DECLARE_HANDLE(plCollisionShapeHandle);
- PL_DECLARE_HANDLE(plConstraintHandle);
- PL_DECLARE_HANDLE(plMeshInterfaceHandle);
- PL_DECLARE_HANDLE(plCollisionBroadphaseHandle);
- PL_DECLARE_HANDLE(plBroadphaseProxyHandle);
- PL_DECLARE_HANDLE(plCollisionWorldHandle);
- extern plPhysicsSdkHandle plNewBulletSdk(void);
- extern void plDeletePhysicsSdk(plPhysicsSdkHandle physicsSdk);
- 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);
-
- extern plCollisionWorldHandle plCreateCollisionWorld(plPhysicsSdkHandle physicsSdk);
-
- extern plDynamicsWorldHandle plCreateDynamicsWorld(plPhysicsSdkHandle physicsSdk);
- extern void plDeleteDynamicsWorld(plDynamicsWorldHandle world);
- extern void plStepSimulation(plDynamicsWorldHandle, plReal timeStep);
- extern void plAddRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object);
- extern void plRemoveRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object);
- extern plRigidBodyHandle plCreateRigidBody( void* user_data, float mass, plCollisionShapeHandle cshape );
- extern void plDeleteRigidBody(plRigidBodyHandle body);
- extern plCollisionShapeHandle plNewSphereShape(plReal radius);
- extern plCollisionShapeHandle plNewBoxShape(plReal x, plReal y, plReal z);
- extern plCollisionShapeHandle plNewCapsuleShape(plReal radius, plReal height);
- extern plCollisionShapeHandle plNewConeShape(plReal radius, plReal height);
- extern plCollisionShapeHandle plNewCylinderShape(plReal radius, plReal height);
- extern plCollisionShapeHandle plNewCompoundShape(void);
- extern void plAddChildShape(plCollisionShapeHandle compoundShape,plCollisionShapeHandle childShape, plVector3 childPos,plQuaternion childOrn);
- extern void plDeleteShape(plCollisionShapeHandle shape);
-
- extern plCollisionShapeHandle plNewConvexHullShape(void);
- extern void plAddVertex(plCollisionShapeHandle convexHull, plReal x,plReal y,plReal z);
- extern plMeshInterfaceHandle plNewMeshInterface(void);
- extern void plAddTriangle(plMeshInterfaceHandle meshHandle, plVector3 v0,plVector3 v1,plVector3 v2);
- extern plCollisionShapeHandle plNewStaticTriangleMeshShape(plMeshInterfaceHandle);
- extern void plSetScaling(plCollisionShapeHandle shape, plVector3 scaling);
-
- extern void plGetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix);
- extern void plGetPosition(plRigidBodyHandle object,plVector3 position);
- extern void plGetOrientation(plRigidBodyHandle object,plQuaternion orientation);
-
- 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;
- plCollisionShapeHandle m_shape;
- plVector3 m_positionWorld;
- plVector3 m_normalWorld;
- } plRayCastResult;
- extern int plRayCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plRayCastResult res);
-
-
-
-
-
- double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float q2[3], float q3[3], float *pa, float *pb, float normal[3]);
- #ifdef __cplusplus
- }
- #endif
- #endif
|