diff --git a/Externals/ode/include/ode/collision.h b/Externals/ode/include/ode/collision.h index 06c78201266..6e4ce2deb7c 100644 --- a/Externals/ode/include/ode/collision.h +++ b/Externals/ode/include/ode/collision.h @@ -62,7 +62,7 @@ extern "C" { * @param geom the geom to be destroyed. * @ingroup collide */ -void dGeomDestroy (dGeomID geom); +ODE_API void dGeomDestroy (dGeomID geom); /** @@ -72,7 +72,7 @@ void dGeomDestroy (dGeomID geom); * @param data the data pointer to be stored * @ingroup collide */ -void dGeomSetData (dGeomID geom, void* data); +ODE_API void dGeomSetData (dGeomID geom, void* data); /** @@ -81,7 +81,7 @@ void dGeomSetData (dGeomID geom, void* data); * @param geom the geom containing the data * @ingroup collide */ -void *dGeomGetData (dGeomID geom); +ODE_API void *dGeomGetData (dGeomID geom); /** @@ -102,7 +102,7 @@ void *dGeomGetData (dGeomID geom); * @param body the body to attach to the geom * @ingroup collide */ -void dGeomSetBody (dGeomID geom, dBodyID body); +ODE_API void dGeomSetBody (dGeomID geom, dBodyID body); /** @@ -111,7 +111,7 @@ void dGeomSetBody (dGeomID geom, dBodyID body); * @sa dGeomSetBody * @ingroup collide */ -dBodyID dGeomGetBody (dGeomID geom); +ODE_API dBodyID dGeomGetBody (dGeomID geom); /** @@ -128,7 +128,7 @@ dBodyID dGeomGetBody (dGeomID geom); * @sa dBodySetPosition * @ingroup collide */ -void dGeomSetPosition (dGeomID geom, dReal x, dReal y, dReal z); +ODE_API void dGeomSetPosition (dGeomID geom, dReal x, dReal y, dReal z); /** @@ -143,7 +143,7 @@ void dGeomSetPosition (dGeomID geom, dReal x, dReal y, dReal z); * @sa dBodySetRotation * @ingroup collide */ -void dGeomSetRotation (dGeomID geom, const dMatrix3 R); +ODE_API void dGeomSetRotation (dGeomID geom, const dMatrix3 R); /** @@ -159,7 +159,7 @@ void dGeomSetRotation (dGeomID geom, const dMatrix3 R); * @sa dBodySetQuaternion * @ingroup collide */ -void dGeomSetQuaternion (dGeomID geom, const dQuaternion Q); +ODE_API void dGeomSetQuaternion (dGeomID geom, const dQuaternion Q); /** @@ -178,7 +178,7 @@ void dGeomSetQuaternion (dGeomID geom, const dQuaternion Q); * @sa dBodyGetPosition * @ingroup collide */ -const dReal * dGeomGetPosition (dGeomID geom); +ODE_API const dReal * dGeomGetPosition (dGeomID geom); /** @@ -197,7 +197,7 @@ const dReal * dGeomGetPosition (dGeomID geom); * @sa dBodyGetRotation * @ingroup collide */ -const dReal * dGeomGetRotation (dGeomID geom); +ODE_API const dReal * dGeomGetRotation (dGeomID geom); /** @@ -213,7 +213,7 @@ const dReal * dGeomGetRotation (dGeomID geom); * @sa dBodyGetQuaternion * @ingroup collide */ -void dGeomGetQuaternion (dGeomID geom, dQuaternion result); +ODE_API void dGeomGetQuaternion (dGeomID geom, dQuaternion result); /** @@ -232,7 +232,7 @@ void dGeomGetQuaternion (dGeomID geom, dQuaternion result); * @param aabb the returned bounding box * @ingroup collide */ -void dGeomGetAABB (dGeomID geom, dReal aabb[6]); +ODE_API void dGeomGetAABB (dGeomID geom, dReal aabb[6]); /** @@ -241,7 +241,7 @@ void dGeomGetAABB (dGeomID geom, dReal aabb[6]); * @returns Non-zero if the geom is a space, zero otherwise. * @ingroup collide */ -int dGeomIsSpace (dGeomID geom); +ODE_API int dGeomIsSpace (dGeomID geom); /** @@ -251,7 +251,7 @@ int dGeomIsSpace (dGeomID geom); * not contained by a space. * @ingroup collide */ -dSpaceID dGeomGetSpace (dGeomID); +ODE_API dSpaceID dGeomGetSpace (dGeomID); /** @@ -278,7 +278,7 @@ dSpaceID dGeomGetSpace (dGeomID); * @returns The geom class ID. * @ingroup collide */ -int dGeomGetClass (dGeomID geom); +ODE_API int dGeomGetClass (dGeomID geom); /** @@ -293,7 +293,7 @@ int dGeomGetClass (dGeomID geom); * @param bits the new bitfield value * @ingroup collide */ -void dGeomSetCategoryBits (dGeomID geom, unsigned long bits); +ODE_API void dGeomSetCategoryBits (dGeomID geom, unsigned long bits); /** @@ -308,7 +308,7 @@ void dGeomSetCategoryBits (dGeomID geom, unsigned long bits); * @param bits the new bitfield value * @ingroup collide */ -void dGeomSetCollideBits (dGeomID geom, unsigned long bits); +ODE_API void dGeomSetCollideBits (dGeomID geom, unsigned long bits); /** @@ -319,7 +319,7 @@ void dGeomSetCollideBits (dGeomID geom, unsigned long bits); * @sa dGeomSetCategoryBits * @ingroup collide */ -unsigned long dGeomGetCategoryBits (dGeomID); +ODE_API unsigned long dGeomGetCategoryBits (dGeomID); /** @@ -330,7 +330,7 @@ unsigned long dGeomGetCategoryBits (dGeomID); * @sa dGeomSetCollideBits * @ingroup collide */ -unsigned long dGeomGetCollideBits (dGeomID); +ODE_API unsigned long dGeomGetCollideBits (dGeomID); /** @@ -345,7 +345,7 @@ unsigned long dGeomGetCollideBits (dGeomID); * @sa dGeomIsEnabled * @ingroup collide */ -void dGeomEnable (dGeomID geom); +ODE_API void dGeomEnable (dGeomID geom); /** @@ -360,7 +360,7 @@ void dGeomEnable (dGeomID geom); * @sa dGeomIsEnabled * @ingroup collide */ -void dGeomDisable (dGeomID geom); +ODE_API void dGeomDisable (dGeomID geom); /** @@ -376,17 +376,17 @@ void dGeomDisable (dGeomID geom); * @sa dGeomIsEnabled * @ingroup collide */ -int dGeomIsEnabled (dGeomID geom); +ODE_API int dGeomIsEnabled (dGeomID geom); /* ************************************************************************ */ /* collision detection */ -int dCollide (dGeomID o1, dGeomID o2, int flags, dContactGeom *contact, +ODE_API int dCollide (dGeomID o1, dGeomID o2, int flags, dContactGeom *contact, int skip); -void dSpaceCollide (dSpaceID space, void *data, dNearCallback *callback); -void dSpaceCollide2 (dGeomID o1, dGeomID o2, void *data, +ODE_API void dSpaceCollide (dSpaceID space, void *data, dNearCallback *callback); +ODE_API void dSpaceCollide2 (dGeomID o1, dGeomID o2, void *data, dNearCallback *callback); /* ************************************************************************ */ @@ -401,7 +401,7 @@ enum { enum { dSphereClass = 0, dBoxClass, - dCCylinderClass, + dCCylinderClass, // XXX: Cylinder was renamed to Capsule dCylinderClass, dPlaneClass, dRayClass, @@ -420,66 +420,68 @@ enum { }; -dGeomID dCreateSphere (dSpaceID space, dReal radius); -void dGeomSphereSetRadius (dGeomID sphere, dReal radius); -dReal dGeomSphereGetRadius (dGeomID sphere); -dReal dGeomSpherePointDepth (dGeomID sphere, dReal x, dReal y, dReal z); +ODE_API dGeomID dCreateSphere (dSpaceID space, dReal radius); +ODE_API void dGeomSphereSetRadius (dGeomID sphere, dReal radius); +ODE_API dReal dGeomSphereGetRadius (dGeomID sphere); +ODE_API dReal dGeomSpherePointDepth (dGeomID sphere, dReal x, dReal y, dReal z); -dGeomID dCreateBox (dSpaceID space, dReal lx, dReal ly, dReal lz); -void dGeomBoxSetLengths (dGeomID box, dReal lx, dReal ly, dReal lz); -void dGeomBoxGetLengths (dGeomID box, dVector3 result); -dReal dGeomBoxPointDepth (dGeomID box, dReal x, dReal y, dReal z); +ODE_API dGeomID dCreateBox (dSpaceID space, dReal lx, dReal ly, dReal lz); +ODE_API void dGeomBoxSetLengths (dGeomID box, dReal lx, dReal ly, dReal lz); +ODE_API void dGeomBoxGetLengths (dGeomID box, dVector3 result); +ODE_API dReal dGeomBoxPointDepth (dGeomID box, dReal x, dReal y, dReal z); -dGeomID dCreatePlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d); -void dGeomPlaneSetParams (dGeomID plane, dReal a, dReal b, dReal c, dReal d); -void dGeomPlaneGetParams (dGeomID plane, dVector4 result); -dReal dGeomPlanePointDepth (dGeomID plane, dReal x, dReal y, dReal z); +ODE_API dGeomID dCreatePlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d); +ODE_API void dGeomPlaneSetParams (dGeomID plane, dReal a, dReal b, dReal c, dReal d); +ODE_API void dGeomPlaneGetParams (dGeomID plane, dVector4 result); +ODE_API dReal dGeomPlanePointDepth (dGeomID plane, dReal x, dReal y, dReal z); +// XXX: Cylinder was renamed to Capsule dGeomID dCreateCCylinder (dSpaceID space, dReal radius, dReal length); void dGeomCCylinderSetParams (dGeomID ccylinder, dReal radius, dReal length); void dGeomCCylinderGetParams (dGeomID ccylinder, dReal *radius, dReal *length); + dReal dGeomCCylinderPointDepth (dGeomID ccylinder, dReal x, dReal y, dReal z); -dGeomID dCreateRay (dSpaceID space, dReal length); -void dGeomRaySetLength (dGeomID ray, dReal length); -dReal dGeomRayGetLength (dGeomID ray); -void dGeomRaySet (dGeomID ray, dReal px, dReal py, dReal pz, +ODE_API dGeomID dCreateRay (dSpaceID space, dReal length); +ODE_API void dGeomRaySetLength (dGeomID ray, dReal length); +ODE_API dReal dGeomRayGetLength (dGeomID ray); +ODE_API void dGeomRaySet (dGeomID ray, dReal px, dReal py, dReal pz, dReal dx, dReal dy, dReal dz); -void dGeomRayGet (dGeomID ray, dVector3 start, dVector3 dir); +ODE_API void dGeomRayGet (dGeomID ray, dVector3 start, dVector3 dir); /* * Set/get ray flags that influence ray collision detection. * These flags are currently only noticed by the trimesh collider, because * they can make a major differences there. */ -void dGeomRaySetParams (dGeomID g, int FirstContact, int BackfaceCull); -void dGeomRayGetParams (dGeomID g, int *FirstContact, int *BackfaceCull); -void dGeomRaySetClosestHit (dGeomID g, int closestHit); -int dGeomRayGetClosestHit (dGeomID g); +ODE_API void dGeomRaySetParams (dGeomID g, int FirstContact, int BackfaceCull); +ODE_API void dGeomRayGetParams (dGeomID g, int *FirstContact, int *BackfaceCull); +ODE_API void dGeomRaySetClosestHit (dGeomID g, int closestHit); +ODE_API int dGeomRayGetClosestHit (dGeomID g); #include "collision_trimesh.h" -dGeomID dCreateGeomTransform (dSpaceID space); -void dGeomTransformSetGeom (dGeomID g, dGeomID obj); -dGeomID dGeomTransformGetGeom (dGeomID g); -void dGeomTransformSetCleanup (dGeomID g, int mode); -int dGeomTransformGetCleanup (dGeomID g); -void dGeomTransformSetInfo (dGeomID g, int mode); -int dGeomTransformGetInfo (dGeomID g); +ODE_API dGeomID dCreateGeomTransform (dSpaceID space); +ODE_API void dGeomTransformSetGeom (dGeomID g, dGeomID obj); +ODE_API dGeomID dGeomTransformGetGeom (dGeomID g); +ODE_API void dGeomTransformSetCleanup (dGeomID g, int mode); +ODE_API int dGeomTransformGetCleanup (dGeomID g); +ODE_API void dGeomTransformSetInfo (dGeomID g, int mode); +ODE_API int dGeomTransformGetInfo (dGeomID g); /* ************************************************************************ */ /* utility functions */ -void dClosestLineSegmentPoints (const dVector3 a1, const dVector3 a2, +ODE_API void dClosestLineSegmentPoints (const dVector3 a1, const dVector3 a2, const dVector3 b1, const dVector3 b2, dVector3 cp1, dVector3 cp2); -int dBoxTouchesBox (const dVector3 _p1, const dMatrix3 R1, +ODE_API int dBoxTouchesBox (const dVector3 _p1, const dMatrix3 R1, const dVector3 side1, const dVector3 _p2, const dMatrix3 R2, const dVector3 side2); -void dInfiniteAABB (dGeomID geom, dReal aabb[6]); -void dCloseODE(void); +ODE_API void dInfiniteAABB (dGeomID geom, dReal aabb[6]); +ODE_API void dCloseODE(void); /* ************************************************************************ */ /* custom classes */ @@ -499,9 +501,9 @@ typedef struct dGeomClass { dGeomDtorFn *dtor; } dGeomClass; -int dCreateGeomClass (const dGeomClass *classptr); -void * dGeomGetClassData (dGeomID); -dGeomID dCreateGeom (int classnum); +ODE_API int dCreateGeomClass (const dGeomClass *classptr); +ODE_API void * dGeomGetClassData (dGeomID); +ODE_API dGeomID dCreateGeom (int classnum); /* ************************************************************************ */ diff --git a/Externals/ode/include/ode/collision_space.h b/Externals/ode/include/ode/collision_space.h index 0ab3d132c9d..d2d4a6c5048 100644 --- a/Externals/ode/include/ode/collision_space.h +++ b/Externals/ode/include/ode/collision_space.h @@ -34,24 +34,24 @@ struct dContactGeom; typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2); -dSpaceID dSimpleSpaceCreate (dSpaceID space); -dSpaceID dHashSpaceCreate (dSpaceID space); -dSpaceID dQuadTreeSpaceCreate (dSpaceID space, dVector3 Center, dVector3 Extents, int Depth); +ODE_API dSpaceID dSimpleSpaceCreate (dSpaceID space); +ODE_API dSpaceID dHashSpaceCreate (dSpaceID space); +ODE_API dSpaceID dQuadTreeSpaceCreate (dSpaceID space, dVector3 Center, dVector3 Extents, int Depth); -void dSpaceDestroy (dSpaceID); +ODE_API void dSpaceDestroy (dSpaceID); -void dHashSpaceSetLevels (dSpaceID space, int minlevel, int maxlevel); -void dHashSpaceGetLevels (dSpaceID space, int *minlevel, int *maxlevel); +ODE_API void dHashSpaceSetLevels (dSpaceID space, int minlevel, int maxlevel); +ODE_API void dHashSpaceGetLevels (dSpaceID space, int *minlevel, int *maxlevel); -void dSpaceSetCleanup (dSpaceID space, int mode); -int dSpaceGetCleanup (dSpaceID space); +ODE_API void dSpaceSetCleanup (dSpaceID space, int mode); +ODE_API int dSpaceGetCleanup (dSpaceID space); -void dSpaceAdd (dSpaceID, dGeomID); -void dSpaceRemove (dSpaceID, dGeomID); -int dSpaceQuery (dSpaceID, dGeomID); -void dSpaceClean (dSpaceID); -int dSpaceGetNumGeoms (dSpaceID); -dGeomID dSpaceGetGeom (dSpaceID, int i); +ODE_API void dSpaceAdd (dSpaceID, dGeomID); +ODE_API void dSpaceRemove (dSpaceID, dGeomID); +ODE_API int dSpaceQuery (dSpaceID, dGeomID); +ODE_API void dSpaceClean (dSpaceID); +ODE_API int dSpaceGetNumGeoms (dSpaceID); +ODE_API dGeomID dSpaceGetGeom (dSpaceID, int i); #ifdef __cplusplus diff --git a/Externals/ode/include/ode/collision_trimesh.h b/Externals/ode/include/ode/collision_trimesh.h index 2fbf146ee58..8c71b3a99e5 100644 --- a/Externals/ode/include/ode/collision_trimesh.h +++ b/Externals/ode/include/ode/collision_trimesh.h @@ -48,32 +48,32 @@ typedef struct dxTriMeshData* dTriMeshDataID; * These dont make much sense now, but they will later when we add more * features. */ -dTriMeshDataID dGeomTriMeshDataCreate(); -void dGeomTriMeshDataDestroy(dTriMeshDataID g); +ODE_API dTriMeshDataID dGeomTriMeshDataCreate(void); +ODE_API void dGeomTriMeshDataDestroy(dTriMeshDataID g); enum { TRIMESH_FACE_NORMALS, TRIMESH_LAST_TRANSFORMATION }; -void dGeomTriMeshDataSet(dTriMeshDataID g, int data_id, void* data); +ODE_API void dGeomTriMeshDataSet(dTriMeshDataID g, int data_id, void* in_data); /* * Build TriMesh data with single pricision used in vertex data . */ -void dGeomTriMeshDataBuildSingle(dTriMeshDataID g, +ODE_API void dGeomTriMeshDataBuildSingle(dTriMeshDataID g, const void* Vertices, int VertexStride, int VertexCount, const void* Indices, int IndexCount, int TriStride); /* same again with a normals array (used as trimesh-trimesh optimization) */ -void dGeomTriMeshDataBuildSingle1(dTriMeshDataID g, +ODE_API void dGeomTriMeshDataBuildSingle1(dTriMeshDataID g, const void* Vertices, int VertexStride, int VertexCount, const void* Indices, int IndexCount, int TriStride, const void* Normals); /* * Build TriMesh data with double pricision used in vertex data . */ -void dGeomTriMeshDataBuildDouble(dTriMeshDataID g, +ODE_API void dGeomTriMeshDataBuildDouble(dTriMeshDataID g, const void* Vertices, int VertexStride, int VertexCount, const void* Indices, int IndexCount, int TriStride); /* same again with a normals array (used as trimesh-trimesh optimization) */ -void dGeomTriMeshDataBuildDouble1(dTriMeshDataID g, +ODE_API void dGeomTriMeshDataBuildDouble1(dTriMeshDataID g, const void* Vertices, int VertexStride, int VertexCount, const void* Indices, int IndexCount, int TriStride, const void* Normals); @@ -81,11 +81,11 @@ void dGeomTriMeshDataBuildDouble1(dTriMeshDataID g, /* * Simple build. Single/double precision based on dSINGLE/dDOUBLE! */ -void dGeomTriMeshDataBuildSimple(dTriMeshDataID g, +ODE_API void dGeomTriMeshDataBuildSimple(dTriMeshDataID g, const dReal* Vertices, int VertexCount, const int* Indices, int IndexCount); /* same again with a normals array (used as trimesh-trimesh optimization) */ -void dGeomTriMeshDataBuildSimple1(dTriMeshDataID g, +ODE_API void dGeomTriMeshDataBuildSimple1(dTriMeshDataID g, const dReal* Vertices, int VertexCount, const int* Indices, int IndexCount, const int* Normals); @@ -94,16 +94,16 @@ void dGeomTriMeshDataBuildSimple1(dTriMeshDataID g, * a particular triangle. */ typedef int dTriCallback(dGeomID TriMesh, dGeomID RefObject, int TriangleIndex); -void dGeomTriMeshSetCallback(dGeomID g, dTriCallback* Callback); -dTriCallback* dGeomTriMeshGetCallback(dGeomID g); +ODE_API void dGeomTriMeshSetCallback(dGeomID g, dTriCallback* Callback); +ODE_API dTriCallback* dGeomTriMeshGetCallback(dGeomID g); /* * Per object callback. Allows the user to get the list of triangles in 1 * shot. Maybe we should remove this one. */ typedef void dTriArrayCallback(dGeomID TriMesh, dGeomID RefObject, const int* TriIndices, int TriCount); -void dGeomTriMeshSetArrayCallback(dGeomID g, dTriArrayCallback* ArrayCallback); -dTriArrayCallback* dGeomTriMeshGetArrayCallback(dGeomID g); +ODE_API void dGeomTriMeshSetArrayCallback(dGeomID g, dTriArrayCallback* ArrayCallback); +ODE_API dTriArrayCallback* dGeomTriMeshGetArrayCallback(dGeomID g); /* * Ray callback. @@ -112,20 +112,20 @@ dTriArrayCallback* dGeomTriMeshGetArrayCallback(dGeomID g); * to determine if a collision should occur. */ typedef int dTriRayCallback(dGeomID TriMesh, dGeomID Ray, int TriangleIndex, dReal u, dReal v); -void dGeomTriMeshSetRayCallback(dGeomID g, dTriRayCallback* Callback); -dTriRayCallback* dGeomTriMeshGetRayCallback(dGeomID g); +ODE_API void dGeomTriMeshSetRayCallback(dGeomID g, dTriRayCallback* Callback); +ODE_API dTriRayCallback* dGeomTriMeshGetRayCallback(dGeomID g); /* * Trimesh class * Construction. Callbacks are optional. */ -dGeomID dCreateTriMesh(dSpaceID space, dTriMeshDataID Data, dTriCallback* Callback, dTriArrayCallback* ArrayCallback, dTriRayCallback* RayCallback); +ODE_API dGeomID dCreateTriMesh(dSpaceID space, dTriMeshDataID Data, dTriCallback* Callback, dTriArrayCallback* ArrayCallback, dTriRayCallback* RayCallback); -void dGeomTriMeshSetData(dGeomID g, dTriMeshDataID Data); +ODE_API void dGeomTriMeshSetData(dGeomID g, dTriMeshDataID Data); // enable/disable/check temporal coherence -void dGeomTriMeshEnableTC(dGeomID g, int geomClass, int enable); -int dGeomTriMeshIsTCEnabled(dGeomID g, int geomClass); +ODE_API void dGeomTriMeshEnableTC(dGeomID g, int geomClass, int enable); +ODE_API int dGeomTriMeshIsTCEnabled(dGeomID g, int geomClass); /* * Clears the internal temporal coherence caches. When a geom has its @@ -133,24 +133,24 @@ int dGeomTriMeshIsTCEnabled(dGeomID g, int geomClass); * With large worlds with lots of seperate objects this list could get huge. * We should be able to do this automagically. */ -void dGeomTriMeshClearTCCache(dGeomID g); +ODE_API void dGeomTriMeshClearTCCache(dGeomID g); /* * returns the TriMeshDataID */ -dTriMeshDataID dGeomTriMeshGetTriMeshDataID(dGeomID g); +ODE_API dTriMeshDataID dGeomTriMeshGetTriMeshDataID(dGeomID g); /* * Gets a triangle. */ -void dGeomTriMeshGetTriangle(dGeomID g, int Index, dVector3* v0, dVector3* v1, dVector3* v2); +ODE_API void dGeomTriMeshGetTriangle(dGeomID g, int Index, dVector3* v0, dVector3* v1, dVector3* v2); /* * Gets the point on the requested triangle and the given barycentric * coordinates. */ -void dGeomTriMeshGetPoint(dGeomID g, int Index, dReal u, dReal v, dVector3 Out); +ODE_API void dGeomTriMeshGetPoint(dGeomID g, int Index, dReal u, dReal v, dVector3 Out); /* diff --git a/Externals/ode/include/ode/config.h b/Externals/ode/include/ode/config.h index 255ab64a7f2..6a644f28edb 100644 --- a/Externals/ode/include/ode/config.h +++ b/Externals/ode/include/ode/config.h @@ -35,7 +35,18 @@ extern "C" { #endif - +/* Define a DLL export symbol for those platforms that need it */ +#if defined(ODE_PLATFORM_WINDOWS) + #if defined(ODE_DLL) + #define ODE_API __declspec(dllexport) + #elif !defined(ODE_LIB) + #define ODE_DLL_API __declspec(dllimport) + #endif +#endif + +#if !defined(ODE_API) + #define ODE_API +#endif #include diff --git a/Externals/ode/include/ode/error.h b/Externals/ode/include/ode/error.h index 646bb456600..bdeec377f01 100644 --- a/Externals/ode/include/ode/error.h +++ b/Externals/ode/include/ode/error.h @@ -39,21 +39,21 @@ typedef void dMessageFunction (int errnum, const char *msg, va_list ap); /* set a new error, debug or warning handler. if fn is 0, the default handlers * are used. */ -void dSetErrorHandler (dMessageFunction *fn); -void dSetDebugHandler (dMessageFunction *fn); -void dSetMessageHandler (dMessageFunction *fn); +ODE_API void dSetErrorHandler (dMessageFunction *fn); +ODE_API void dSetDebugHandler (dMessageFunction *fn); +ODE_API void dSetMessageHandler (dMessageFunction *fn); /* return the current error, debug or warning handler. if the return value is * 0, the default handlers are in place. */ -dMessageFunction *dGetErrorHandler(); -dMessageFunction *dGetDebugHandler(); -dMessageFunction *dGetMessageHandler(); +ODE_API dMessageFunction *dGetErrorHandler(void); +ODE_API dMessageFunction *dGetDebugHandler(void); +ODE_API dMessageFunction *dGetMessageHandler(void); /* generate a fatal error, debug trap or a message. */ -void _cdecl dError (int num, const char *msg, ...); -void _cdecl dDebug (int num, const char *msg, ...); -void _cdecl dMessage (int num, const char *msg, ...); +ODE_API void dError (int num, const char *msg, ...); +ODE_API void dDebug (int num, const char *msg, ...); +ODE_API void dMessage (int num, const char *msg, ...); #ifdef __cplusplus diff --git a/Externals/ode/include/ode/export-dif.h b/Externals/ode/include/ode/export-dif.h index d89317ff910..ca479adc711 100644 --- a/Externals/ode/include/ode/export-dif.h +++ b/Externals/ode/include/ode/export-dif.h @@ -26,7 +26,7 @@ #include -void dWorldExportDIF (dWorldID w, FILE *file, const char *world_name); +ODE_API void dWorldExportDIF (dWorldID w, FILE *file, const char *world_name); #endif diff --git a/Externals/ode/include/ode/mass.h b/Externals/ode/include/ode/mass.h index f94fa565066..530ebbce91c 100644 --- a/Externals/ode/include/ode/mass.h +++ b/Externals/ode/include/ode/mass.h @@ -33,38 +33,39 @@ struct dMass; typedef struct dMass dMass; -void dMassSetZero (dMass *); +ODE_API void dMassSetZero (dMass *); -void dMassSetParameters (dMass *, dReal themass, +ODE_API void dMassSetParameters (dMass *, dReal themass, dReal cgx, dReal cgy, dReal cgz, dReal I11, dReal I22, dReal I33, dReal I12, dReal I13, dReal I23); -void dMassSetSphere (dMass *, dReal density, dReal radius); -void dMassSetSphereTotal (dMass *, dReal total_mass, dReal radius); +ODE_API void dMassSetSphere (dMass *, dReal density, dReal radius); +ODE_API void dMassSetSphereTotal (dMass *, dReal total_mass, dReal radius); -void dMassSetCappedCylinder (dMass *, dReal density, int direction, +// XXX: Cylinder was renamed to Capsule +ODE_API void dMassSetCappedCylinder (dMass *, dReal density, int direction, dReal radius, dReal length); -void dMassSetCappedCylinderTotal (dMass *, dReal total_mass, int direction, +ODE_API void dMassSetCappedCylinderTotal (dMass *, dReal total_mass, int direction, dReal radius, dReal length); -void dMassSetCylinder (dMass *, dReal density, int direction, +ODE_API void dMassSetCylinder (dMass *, dReal density, int direction, dReal radius, dReal length); -void dMassSetCylinderTotal (dMass *, dReal total_mass, int direction, +ODE_API void dMassSetCylinderTotal (dMass *, dReal total_mass, int direction, dReal radius, dReal length); -void dMassSetBox (dMass *, dReal density, +ODE_API void dMassSetBox (dMass *, dReal density, dReal lx, dReal ly, dReal lz); -void dMassSetBoxTotal (dMass *, dReal total_mass, +ODE_API void dMassSetBoxTotal (dMass *, dReal total_mass, dReal lx, dReal ly, dReal lz); -void dMassAdjust (dMass *, dReal newmass); +ODE_API void dMassAdjust (dMass *, dReal newmass); -void dMassTranslate (dMass *, dReal x, dReal y, dReal z); +ODE_API void dMassTranslate (dMass *, dReal x, dReal y, dReal z); -void dMassRotate (dMass *, const dMatrix3 R); +ODE_API void dMassRotate (dMass *, const dMatrix3 R); -void dMassAdd (dMass *a, const dMass *b); +ODE_API void dMassAdd (dMass *a, const dMass *b); diff --git a/Externals/ode/include/ode/matrix.h b/Externals/ode/include/ode/matrix.h index 75218fd3ee9..eeb004d8ebe 100644 --- a/Externals/ode/include/ode/matrix.h +++ b/Externals/ode/include/ode/matrix.h @@ -35,15 +35,15 @@ extern "C" { /* set a vector/matrix of size n to all zeros, or to a specific value. */ -void dSetZero (dReal *a, int n); -void dSetValue (dReal *a, int n, dReal value); +ODE_API void dSetZero (dReal *a, int n); +ODE_API void dSetValue (dReal *a, int n, dReal value); /* get the dot product of two n*1 vectors. if n <= 0 then * zero will be returned (in which case a and b need not be valid). */ -dReal dDot (const dReal *a, const dReal *b, int n); +ODE_API dReal dDot (const dReal *a, const dReal *b, int n); /* get the dot products of (a0,b), (a1,b), etc and return them in outsum. @@ -67,9 +67,9 @@ void dMultidot2 (const dReal *a0, const dReal *a1, * B or C are stored in standard column format. */ -void dMultiply0 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r); -void dMultiply1 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r); -void dMultiply2 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r); +ODE_API void dMultiply0 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r); +ODE_API void dMultiply1 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r); +ODE_API void dMultiply2 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r); /* do an in-place cholesky decomposition on the lower triangle of the n*n @@ -78,14 +78,14 @@ void dMultiply2 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r); * the matrix is not positive definite). */ -int dFactorCholesky (dReal *A, int n); +ODE_API int dFactorCholesky (dReal *A, int n); /* solve for x: L*L'*x = b, and put the result back into x. * L is size n*n, b is size n*1. only the lower triangle of L is considered. */ -void dSolveCholesky (const dReal *L, dReal *b, int n); +ODE_API void dSolveCholesky (const dReal *L, dReal *b, int n); /* compute the inverse of the n*n positive definite matrix A and put it in @@ -93,7 +93,7 @@ void dSolveCholesky (const dReal *L, dReal *b, int n); * positive definite) or 0 on failure (not PD). */ -int dInvertPDMatrix (const dReal *A, dReal *Ainv, int n); +ODE_API int dInvertPDMatrix (const dReal *A, dReal *Ainv, int n); /* check whether an n*n matrix A is positive definite, return 1/0 (yes/no). @@ -102,7 +102,7 @@ int dInvertPDMatrix (const dReal *A, dReal *Ainv, int n); * is not positive definite. A is stored by rows. A is not altered. */ -int dIsPositiveDefinite (const dReal *A, int n); +ODE_API int dIsPositiveDefinite (const dReal *A, int n); /* factorize a matrix A into L*D*L', where L is lower triangular with ones on @@ -112,26 +112,26 @@ int dIsPositiveDefinite (const dReal *A, int n); * written) and the reciprocal of the diagonal elements of D are written into * d. */ -void dFactorLDLT (dReal *A, dReal *d, int n, int nskip); +ODE_API void dFactorLDLT (dReal *A, dReal *d, int n, int nskip); /* solve L*x=b, where L is n*n lower triangular with ones on the diagonal, * and x,b are n*1. b is overwritten with x. * the leading dimension of L is `nskip'. */ -void dSolveL1 (const dReal *L, dReal *b, int n, int nskip); +ODE_API void dSolveL1 (const dReal *L, dReal *b, int n, int nskip); /* solve L'*x=b, where L is n*n lower triangular with ones on the diagonal, * and x,b are n*1. b is overwritten with x. * the leading dimension of L is `nskip'. */ -void dSolveL1T (const dReal *L, dReal *b, int n, int nskip); +ODE_API void dSolveL1T (const dReal *L, dReal *b, int n, int nskip); /* in matlab syntax: a(1:n) = a(1:n) .* d(1:n) */ -void dVectorScale (dReal *a, const dReal *d, int n); +ODE_API void dVectorScale (dReal *a, const dReal *d, int n); /* given `L', a n*n lower triangular matrix with ones on the diagonal, @@ -140,7 +140,7 @@ void dVectorScale (dReal *a, const dReal *d, int n); * the leading dimension of L is `nskip'. */ -void dSolveLDLT (const dReal *L, const dReal *d, dReal *b, int n, int nskip); +ODE_API void dSolveLDLT (const dReal *L, const dReal *d, dReal *b, int n, int nskip); /* given an L*D*L' factorization of an n*n matrix A, return the updated @@ -156,7 +156,7 @@ void dSolveLDLT (const dReal *L, const dReal *d, dReal *b, int n, int nskip); * the result is written into L, except that the left column of L and d[0] * are not actually modified. see ldltaddTL.m for further comments. */ -void dLDLTAddTL (dReal *L, dReal *d, const dReal *a, int n, int nskip); +ODE_API void dLDLTAddTL (dReal *L, dReal *d, const dReal *a, int n, int nskip); /* given an L*D*L' factorization of a permuted matrix A, produce a new @@ -176,7 +176,7 @@ void dLDLTAddTL (dReal *L, dReal *d, const dReal *a, int n, int nskip); * * a fast O(n^2) algorithm is used. see ldltremove.m for further comments. */ -void dLDLTRemove (dReal **A, const int *p, dReal *L, dReal *d, +ODE_API void dLDLTRemove (dReal **A, const int *p, dReal *L, dReal *d, int n1, int n2, int r, int nskip); @@ -184,7 +184,7 @@ void dLDLTRemove (dReal **A, const int *p, dReal *L, dReal *d, * and column by moving elements. the new matrix will have the same leading * dimension. the last row and column of A are untouched on exit. */ -void dRemoveRowCol (dReal *A, int n, int nskip, int r); +ODE_API void dRemoveRowCol (dReal *A, int n, int nskip, int r); #ifdef __cplusplus diff --git a/Externals/ode/include/ode/memory.h b/Externals/ode/include/ode/memory.h index ff57f5fe782..c1af051a98b 100644 --- a/Externals/ode/include/ode/memory.h +++ b/Externals/ode/include/ode/memory.h @@ -38,19 +38,19 @@ typedef void dFreeFunction (void *ptr, size_t size); /* set new memory management functions. if fn is 0, the default handlers are * used. */ -void dSetAllocHandler (dAllocFunction *fn); -void dSetReallocHandler (dReallocFunction *fn); -void dSetFreeHandler (dFreeFunction *fn); +ODE_API void dSetAllocHandler (dAllocFunction *fn); +ODE_API void dSetReallocHandler (dReallocFunction *fn); +ODE_API void dSetFreeHandler (dFreeFunction *fn); /* get current memory management functions */ -dAllocFunction *dGetAllocHandler (); -dReallocFunction *dGetReallocHandler (); -dFreeFunction *dGetFreeHandler (); +ODE_API dAllocFunction *dGetAllocHandler (void); +ODE_API dReallocFunction *dGetReallocHandler (void); +ODE_API dFreeFunction *dGetFreeHandler (void); /* allocate and free memory. */ -void * dAlloc (size_t size); -void * dRealloc (void *ptr, size_t oldsize, size_t newsize); -void dFree (void *ptr, size_t size); +ODE_API void * dAlloc (size_t size); +ODE_API void * dRealloc (void *ptr, size_t oldsize, size_t newsize); +ODE_API void dFree (void *ptr, size_t size); #ifdef __cplusplus } diff --git a/Externals/ode/include/ode/misc.h b/Externals/ode/include/ode/misc.h index 21355eb2455..9fd1a147acf 100644 --- a/Externals/ode/include/ode/misc.h +++ b/Externals/ode/include/ode/misc.h @@ -34,48 +34,48 @@ extern "C" { /* return 1 if the random number generator is working. */ -int dTestRand(); +ODE_API int dTestRand(void); /* return next 32 bit random number. this uses a not-very-random linear * congruential method. */ -unsigned long dRand(); +ODE_API unsigned long dRand(void); /* get and set the current random number seed. */ -unsigned long dRandGetSeed(); -void dRandSetSeed (unsigned long s); +ODE_API unsigned long dRandGetSeed(void); +ODE_API void dRandSetSeed (unsigned long s); /* return a random integer between 0..n-1. the distribution will get worse * as n approaches 2^32. */ -int dRandInt (int n); +ODE_API int dRandInt (int n); /* return a random real number between 0..1 */ -dReal dRandReal(); +ODE_API dReal dRandReal(void); /* print out a matrix */ #ifdef __cplusplus -void dPrintMatrix (const dReal *A, int n, int m, const char *fmt = "%10.4f ", +ODE_API void dPrintMatrix (const dReal *A, int n, int m, const char *fmt = "%10.4f ", FILE *f=stdout); #else -void dPrintMatrix (const dReal *A, int n, int m, char *fmt, FILE *f); +ODE_API void dPrintMatrix (const dReal *A, int n, int m, char *fmt, FILE *f); #endif /* make a random vector with entries between +/- range. A has n elements. */ -void dMakeRandomVector (dReal *A, int n, dReal range); +ODE_API void dMakeRandomVector (dReal *A, int n, dReal range); /* make a random matrix with entries between +/- range. A has size n*m. */ -void dMakeRandomMatrix (dReal *A, int n, int m, dReal range); +ODE_API void dMakeRandomMatrix (dReal *A, int n, int m, dReal range); /* clear the upper triangle of a square matrix */ -void dClearUpperTriangle (dReal *A, int n); +ODE_API void dClearUpperTriangle (dReal *A, int n); /* return the maximum element difference between the two n*m matrices */ -dReal dMaxDifference (const dReal *A, const dReal *B, int n, int m); +ODE_API dReal dMaxDifference (const dReal *A, const dReal *B, int n, int m); /* return the maximum element difference between the lower triangle of two * n*n matrices */ -dReal dMaxDifferenceLowerTriangle (const dReal *A, const dReal *B, int n); +ODE_API dReal dMaxDifferenceLowerTriangle (const dReal *A, const dReal *B, int n); #ifdef __cplusplus diff --git a/Externals/ode/include/ode/objects.h b/Externals/ode/include/ode/objects.h index 8e8d07902a1..f41f06ad5c0 100644 --- a/Externals/ode/include/ode/objects.h +++ b/Externals/ode/include/ode/objects.h @@ -49,7 +49,7 @@ extern "C" { * @return an identifier * @ingroup world */ -dWorldID dWorldCreate(void); +ODE_API dWorldID dWorldCreate(void); /** @@ -61,7 +61,7 @@ dWorldID dWorldCreate(void); * @ingroup world * @param world the identifier for the world the be destroyed. */ -void dWorldDestroy (dWorldID world); +ODE_API void dWorldDestroy (dWorldID world); /** @@ -72,14 +72,14 @@ void dWorldDestroy (dWorldID world); * * @ingroup world */ -void dWorldSetGravity (dWorldID, dReal x, dReal y, dReal z); +ODE_API void dWorldSetGravity (dWorldID, dReal x, dReal y, dReal z); /** * @brief Get the gravity vector for a given world. * @ingroup world */ -void dWorldGetGravity (dWorldID, dVector3 gravity); +ODE_API void dWorldGetGravity (dWorldID, dVector3 gravity); /** @@ -89,14 +89,14 @@ void dWorldGetGravity (dWorldID, dVector3 gravity); * @param dWorldID the identifier of the world. * @param erp Typical values are in the range 0.1--0.8. The default is 0.2. */ -void dWorldSetERP (dWorldID, dReal erp); +ODE_API void dWorldSetERP (dWorldID, dReal erp); /** * @brief Get the error reduction parameter. * @ingroup world * @return ERP value */ -dReal dWorldGetERP (dWorldID); +ODE_API dReal dWorldGetERP (dWorldID); /** @@ -106,7 +106,7 @@ dReal dWorldGetERP (dWorldID); * The default is 10^-5 if single precision is being used, or 10^-10 * if double precision is being used. */ -void dWorldSetCFM (dWorldID, dReal cfm); +ODE_API void dWorldSetCFM (dWorldID, dReal cfm); /** @@ -114,7 +114,7 @@ void dWorldSetCFM (dWorldID, dReal cfm); * @ingroup world * @return CFM value */ -dReal dWorldGetCFM (dWorldID); +ODE_API dReal dWorldGetCFM (dWorldID); /** @@ -127,7 +127,7 @@ dReal dWorldGetCFM (dWorldID); * @ingroup world * @param stepsize The number of seconds that the simulation has to advance. */ -void dWorldStep (dWorldID, dReal stepsize); +ODE_API void dWorldStep (dWorldID, dReal stepsize); /** @@ -144,7 +144,7 @@ void dWorldStep (dWorldID, dReal stepsize); * computation may depend on integrator parameters that are set as * properties of the world. */ -void dWorldImpulseToForce +ODE_API void dWorldImpulseToForce ( dWorldID, dReal stepsize, dReal ix, dReal iy, dReal iz, dVector3 force @@ -182,7 +182,7 @@ void dWorldImpulseToForce * Increasing the number of QuickStep iterations may help a little bit, but * it is not going to help much if your system is really near singular. */ -void dWorldQuickStep (dWorldID w, dReal stepsize); +ODE_API void dWorldQuickStep (dWorldID w, dReal stepsize); /** @@ -194,7 +194,7 @@ void dWorldQuickStep (dWorldID w, dReal stepsize); * longer to compute. * @param num The default is 20 iterations. */ -void dWorldSetQuickStepNumIterations (dWorldID, int num); +ODE_API void dWorldSetQuickStepNumIterations (dWorldID, int num); /** @@ -203,21 +203,21 @@ void dWorldSetQuickStepNumIterations (dWorldID, int num); * @ingroup world * @return nr of iterations */ -int dWorldGetQuickStepNumIterations (dWorldID); +ODE_API int dWorldGetQuickStepNumIterations (dWorldID); /** * @brief Set the SOR over-relaxation parameter * @ingroup world * @param over_relaxation value to use by SOR */ -void dWorldSetQuickStepW (dWorldID, dReal over_relaxation); +ODE_API void dWorldSetQuickStepW (dWorldID, dReal over_relaxation); /** * @brief Get the SOR over-relaxation parameter * @ingroup world * @returns the over-relaxation setting */ -dReal dWorldGetQuickStepW (dWorldID); +ODE_API dReal dWorldGetQuickStepW (dWorldID); /* World contact parameter functions */ @@ -229,14 +229,14 @@ dReal dWorldGetQuickStepW (dWorldID); * @remarks * Reducing this value can help prevent "popping" of deeply embedded objects. */ -void dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel); +ODE_API void dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel); /** * @brief Get the maximum correcting velocity that contacts are allowed * to generated. * @ingroup world */ -dReal dWorldGetContactMaxCorrectingVel (dWorldID); +ODE_API dReal dWorldGetContactMaxCorrectingVel (dWorldID); /** * @brief Set the depth of the surface layer around all geometry objects. @@ -249,14 +249,14 @@ dReal dWorldGetContactMaxCorrectingVel (dWorldID); * Increasing this to some small value (e.g. 0.001) can help prevent * jittering problems due to contacts being repeatedly made and broken. */ -void dWorldSetContactSurfaceLayer (dWorldID, dReal depth); +ODE_API void dWorldSetContactSurfaceLayer (dWorldID, dReal depth); /** * @brief Get the depth of the surface layer around all geometry objects. * @ingroup world * @returns the depth */ -dReal dWorldGetContactSurfaceLayer (dWorldID); +ODE_API dReal dWorldGetContactSurfaceLayer (dWorldID); /* StepFast1 functions */ @@ -266,7 +266,8 @@ dReal dWorldGetContactSurfaceLayer (dWorldID); * @param maxiterations The number of iterations to perform. * @ingroup world */ -void dWorldStepFast1(dWorldID, dReal stepsize, int maxiterations); +ODE_API void dWorldStepFast1(dWorldID, dReal stepsize, int maxiterations); + /** * @defgroup disable Automatic Enabling and Disabling @@ -299,83 +300,83 @@ void dWorldStepFast1(dWorldID, dReal stepsize, int maxiterations); * @brief Set the AutoEnableDepth parameter used by the StepFast1 algorithm. * @ingroup disable */ -void dWorldSetAutoEnableDepthSF1(dWorldID, int autoEnableDepth); +ODE_API void dWorldSetAutoEnableDepthSF1(dWorldID, int autoEnableDepth); /** * @brief Get the AutoEnableDepth parameter used by the StepFast1 algorithm. * @ingroup disable */ -int dWorldGetAutoEnableDepthSF1(dWorldID); +ODE_API int dWorldGetAutoEnableDepthSF1(dWorldID); /** * @brief Get auto disable linear threshold for newly created bodies. * @ingroup disable * @return the threshold */ -dReal dWorldGetAutoDisableLinearThreshold (dWorldID); +ODE_API dReal dWorldGetAutoDisableLinearThreshold (dWorldID); /** * @brief Set auto disable linear threshold for newly created bodies. * @param linear_threshold default is 0.01 * @ingroup disable */ -void dWorldSetAutoDisableLinearThreshold (dWorldID, dReal linear_threshold); +ODE_API void dWorldSetAutoDisableLinearThreshold (dWorldID, dReal linear_threshold); /** * @brief Get auto disable angular threshold for newly created bodies. * @ingroup disable * @return the threshold */ -dReal dWorldGetAutoDisableAngularThreshold (dWorldID); +ODE_API dReal dWorldGetAutoDisableAngularThreshold (dWorldID); /** * @brief Set auto disable angular threshold for newly created bodies. * @param linear_threshold default is 0.01 * @ingroup disable */ -void dWorldSetAutoDisableAngularThreshold (dWorldID, dReal angular_threshold); +ODE_API void dWorldSetAutoDisableAngularThreshold (dWorldID, dReal angular_threshold); /** * @brief Get auto disable steps for newly created bodies. * @ingroup disable * @return nr of steps */ -int dWorldGetAutoDisableSteps (dWorldID); +ODE_API int dWorldGetAutoDisableSteps (dWorldID); /** * @brief Set auto disable steps for newly created bodies. * @ingroup disable * @param steps default is 10 */ -void dWorldSetAutoDisableSteps (dWorldID, int steps); +ODE_API void dWorldSetAutoDisableSteps (dWorldID, int steps); /** * @brief Get auto disable time for newly created bodies. * @ingroup disable * @return nr of seconds */ -dReal dWorldGetAutoDisableTime (dWorldID); +ODE_API dReal dWorldGetAutoDisableTime (dWorldID); /** * @brief Set auto disable time for newly created bodies. * @ingroup disable * @param time default is 0 seconds */ -void dWorldSetAutoDisableTime (dWorldID, dReal time); +ODE_API void dWorldSetAutoDisableTime (dWorldID, dReal time); /** * @brief Get auto disable flag for newly created bodies. * @ingroup disable * @return 0 or 1 */ -int dWorldGetAutoDisableFlag (dWorldID); +ODE_API int dWorldGetAutoDisableFlag (dWorldID); /** * @brief Set auto disable flag for newly created bodies. * @ingroup disable * @param do_auto_disable default is false. */ -void dWorldSetAutoDisableFlag (dWorldID, int do_auto_disable); +ODE_API void dWorldSetAutoDisableFlag (dWorldID, int do_auto_disable); @@ -418,70 +419,70 @@ void dWorldSetAutoDisableFlag (dWorldID, int do_auto_disable); * @ingroup bodies * @return the threshold */ -dReal dBodyGetAutoDisableLinearThreshold (dBodyID); +ODE_API dReal dBodyGetAutoDisableLinearThreshold (dBodyID); /** * @brief Set auto disable linear threshold. * @ingroup bodies * @return the threshold */ -void dBodySetAutoDisableLinearThreshold (dBodyID, dReal linear_threshold); +ODE_API void dBodySetAutoDisableLinearThreshold (dBodyID, dReal linear_threshold); /** * @brief Get auto disable angular threshold. * @ingroup bodies * @return the threshold */ -dReal dBodyGetAutoDisableAngularThreshold (dBodyID); +ODE_API dReal dBodyGetAutoDisableAngularThreshold (dBodyID); /** * @brief Set auto disable angular threshold. * @ingroup bodies * @return the threshold */ -void dBodySetAutoDisableAngularThreshold (dBodyID, dReal angular_threshold); +ODE_API void dBodySetAutoDisableAngularThreshold (dBodyID, dReal angular_threshold); /** * @brief Get auto disable steps. * @ingroup bodies * @return the nr of steps */ -int dBodyGetAutoDisableSteps (dBodyID); +ODE_API int dBodyGetAutoDisableSteps (dBodyID); /** * @brief Set auto disable steps. * @ingroup bodies * @param steps the nr of steps. */ -void dBodySetAutoDisableSteps (dBodyID, int steps); +ODE_API void dBodySetAutoDisableSteps (dBodyID, int steps); /** * @brief Get auto disable time. * @ingroup bodies * @return nr of seconds */ -dReal dBodyGetAutoDisableTime (dBodyID); +ODE_API dReal dBodyGetAutoDisableTime (dBodyID); /** * @brief Set auto disable time. * @ingroup bodies * @param time nr of seconds. */ -void dBodySetAutoDisableTime (dBodyID, dReal time); +ODE_API void dBodySetAutoDisableTime (dBodyID, dReal time); /** * @brief Get auto disable flag. * @ingroup bodies * @return 0 or 1 */ -int dBodyGetAutoDisableFlag (dBodyID); +ODE_API int dBodyGetAutoDisableFlag (dBodyID); /** * @brief Set auto disable flag. * @ingroup bodies * @param do_auto_disable 0 or 1 */ -void dBodySetAutoDisableFlag (dBodyID, int do_auto_disable); +ODE_API void dBodySetAutoDisableFlag (dBodyID, int do_auto_disable); /** * @brief Set auto disable defaults. @@ -489,7 +490,7 @@ void dBodySetAutoDisableFlag (dBodyID, int do_auto_disable); * Set the values for the body to those set as default for the world. * @ingroup bodies */ -void dBodySetAutoDisableDefaults (dBodyID); +ODE_API void dBodySetAutoDisableDefaults (dBodyID); @@ -499,7 +500,7 @@ void dBodySetAutoDisableDefaults (dBodyID); * Default mass parameters are at position (0,0,0). * @ingroup bodies */ -dBodyID dBodyCreate (dWorldID); +ODE_API dBodyID dBodyCreate (dWorldID); /** * @brief Destroy a body. @@ -509,7 +510,7 @@ dBodyID dBodyCreate (dWorldID); * deleted. * @ingroup bodies */ -void dBodyDestroy (dBodyID); +ODE_API void dBodyDestroy (dBodyID); void dWorldAddBody (dWorldID,dBodyID); // X-Ray custom probably void dWorldAddJoint (dWorldID,dJointID); // X-Ray custom probably @@ -521,14 +522,14 @@ void dWorldRemoveJoint (dWorldID,dJointID); // X-Ray custom probably * @ingroup bodies * @param data arbitraty pointer */ -void dBodySetData (dBodyID, void *data); +ODE_API void dBodySetData (dBodyID, void *data); /** * @brief Get the body's user-data pointer. * @ingroup bodies * @return a pointer to the user's data. */ -void *dBodyGetData (dBodyID); +ODE_API void *dBodyGetData (dBodyID); /** * @brief Set position of a body. @@ -538,7 +539,7 @@ void *dBodyGetData (dBodyID); * that are present. * @ingroup bodies */ -void dBodySetPosition (dBodyID, dReal x, dReal y, dReal z); +ODE_API void dBodySetPosition (dBodyID, dReal x, dReal y, dReal z); /** * @brief Set the orientation of a body. @@ -548,7 +549,7 @@ void dBodySetPosition (dBodyID, dReal x, dReal y, dReal z); * if the new configuration is inconsistent with the joints/constraints * that are present. */ -void dBodySetRotation (dBodyID, const dMatrix3 R); +ODE_API void dBodySetRotation (dBodyID, const dMatrix3 R); /** * @brief Set the orientation of a body. @@ -558,19 +559,19 @@ void dBodySetRotation (dBodyID, const dMatrix3 R); * if the new configuration is inconsistent with the joints/constraints * that are present. */ -void dBodySetQuaternion (dBodyID, const dQuaternion q); +ODE_API void dBodySetQuaternion (dBodyID, const dQuaternion q); /** * @brief Set the linear velocity of a body. * @ingroup bodies */ -void dBodySetLinearVel (dBodyID, dReal x, dReal y, dReal z); +ODE_API void dBodySetLinearVel (dBodyID, dReal x, dReal y, dReal z); /** * @brief Set the angular velocity of a body. * @ingroup bodies */ -void dBodySetAngularVel (dBodyID, dReal x, dReal y, dReal z); +ODE_API void dBodySetAngularVel (dBodyID, dReal x, dReal y, dReal z); /** * @brief Get the position of a body. @@ -580,93 +581,93 @@ void dBodySetAngularVel (dBodyID, dReal x, dReal y, dReal z); * so the vectors are valid until any changes are made to the rigid body * system structure. */ -const dReal * dBodyGetPosition (dBodyID); +ODE_API const dReal * dBodyGetPosition (dBodyID); /** * @brief Get the rotation of a body. * @ingroup bodies * @return pointer to a 4x3 rotation matrix. */ -const dReal * dBodyGetRotation (dBodyID); /* ptr to 4x3 rot matrix */ +ODE_API const dReal * dBodyGetRotation (dBodyID); /* ptr to 4x3 rot matrix */ /** * @brief Get the rotation of a body. * @ingroup bodies * @return pointer to 4 scalars that represent the quaternion. */ -const dReal * dBodyGetQuaternion (dBodyID); +ODE_API const dReal * dBodyGetQuaternion (dBodyID); /** * @brief Get the linear velocity of a body. * @ingroup bodies */ -const dReal * dBodyGetLinearVel (dBodyID); +ODE_API const dReal * dBodyGetLinearVel (dBodyID); /** * @brief Get the angular velocity of a body. * @ingroup bodies */ -const dReal * dBodyGetAngularVel (dBodyID); +ODE_API const dReal * dBodyGetAngularVel (dBodyID); /** * @brief Set the mass of a body. * @ingroup bodies */ -void dBodySetMass (dBodyID, const dMass *mass); +ODE_API void dBodySetMass (dBodyID, const dMass *mass); /** * @brief Get the mass of a body. * @ingroup bodies */ -void dBodyGetMass (dBodyID, dMass *mass); +ODE_API void dBodyGetMass (dBodyID, dMass *mass); /** * @brief Add force at centre of mass of body in absolute coordinates. * @ingroup bodies */ -void dBodyAddForce (dBodyID, dReal fx, dReal fy, dReal fz); +ODE_API void dBodyAddForce (dBodyID, dReal fx, dReal fy, dReal fz); /** * @brief Add torque at centre of mass of body in absolute coordinates. * @ingroup bodies */ -void dBodyAddTorque (dBodyID, dReal fx, dReal fy, dReal fz); +ODE_API void dBodyAddTorque (dBodyID, dReal fx, dReal fy, dReal fz); /** * @brief Add force at centre of mass of body in coordinates relative to body. * @ingroup bodies */ -void dBodyAddRelForce (dBodyID, dReal fx, dReal fy, dReal fz); +ODE_API void dBodyAddRelForce (dBodyID, dReal fx, dReal fy, dReal fz); /** * @brief Add torque at centre of mass of body in coordinates relative to body. * @ingroup bodies */ -void dBodyAddRelTorque (dBodyID, dReal fx, dReal fy, dReal fz); +ODE_API void dBodyAddRelTorque (dBodyID, dReal fx, dReal fy, dReal fz); /** * @brief Add force at specified point in body in global coordinates. * @ingroup bodies */ -void dBodyAddForceAtPos (dBodyID, dReal fx, dReal fy, dReal fz, +ODE_API void dBodyAddForceAtPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); /** * @brief Add force at specified point in body in local coordinates. * @ingroup bodies */ -void dBodyAddForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz, +ODE_API void dBodyAddForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); /** * @brief Add force at specified point in body in global coordinates. * @ingroup bodies */ -void dBodyAddRelForceAtPos (dBodyID, dReal fx, dReal fy, dReal fz, +ODE_API void dBodyAddRelForceAtPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); /** * @brief Add force at specified point in body in local coordinates. * @ingroup bodies */ -void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz, +ODE_API void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz); /** @@ -678,7 +679,7 @@ void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz, * body system. * @ingroup bodies */ -const dReal * dBodyGetForce (dBodyID); +ODE_API const dReal * dBodyGetForce (dBodyID); /** * @brief Return the current accumulated torque vector. @@ -689,7 +690,7 @@ const dReal * dBodyGetForce (dBodyID); * body system. * @ingroup bodies */ -const dReal * dBodyGetTorque (dBodyID); +ODE_API const dReal * dBodyGetTorque (dBodyID); /** * @brief Set the body force accumulation vector. @@ -699,7 +700,7 @@ const dReal * dBodyGetTorque (dBodyID); * were called on them while they were deactivated. * @ingroup bodies */ -void dBodySetForce (dBodyID b, dReal x, dReal y, dReal z); +ODE_API void dBodySetForce (dBodyID b, dReal x, dReal y, dReal z); /** * @brief Set the body torque accumulation vector. @@ -709,14 +710,14 @@ void dBodySetForce (dBodyID b, dReal x, dReal y, dReal z); * were called on them while they were deactivated. * @ingroup bodies */ -void dBodySetTorque (dBodyID b, dReal x, dReal y, dReal z); +ODE_API void dBodySetTorque (dBodyID b, dReal x, dReal y, dReal z); /** * @brief Get world position of a relative point on body. * @ingroup bodies * @param result will contain the result. */ -void dBodyGetRelPointPos +ODE_API void dBodyGetRelPointPos ( dBodyID, dReal px, dReal py, dReal pz, dVector3 result @@ -727,7 +728,7 @@ void dBodyGetRelPointPos * @ingroup bodies * @param result will contain the result. */ -void dBodyGetRelPointVel +ODE_API void dBodyGetRelPointVel ( dBodyID, dReal px, dReal py, dReal pz, dVector3 result @@ -739,7 +740,7 @@ void dBodyGetRelPointVel * @ingroup bodies * @param result will contain the result. */ -void dBodyGetPointVel +ODE_API void dBodyGetPointVel ( dBodyID, dReal px, dReal py, dReal pz, dVector3 result @@ -753,7 +754,7 @@ void dBodyGetPointVel * @ingroup bodies * @param result will contain the result. */ -void dBodyGetPosRelPoint +ODE_API void dBodyGetPosRelPoint ( dBodyID, dReal px, dReal py, dReal pz, dVector3 result @@ -764,7 +765,7 @@ void dBodyGetPosRelPoint * @ingroup bodies * @param result will contain the result. */ -void dBodyVectorToWorld +ODE_API void dBodyVectorToWorld ( dBodyID, dReal px, dReal py, dReal pz, dVector3 result @@ -775,7 +776,7 @@ void dBodyVectorToWorld * @ingroup bodies * @param result will contain the result. */ -void dBodyVectorFromWorld +ODE_API void dBodyVectorFromWorld ( dBodyID, dReal px, dReal py, dReal pz, dVector3 result @@ -798,7 +799,7 @@ void dBodyVectorFromWorld * error in a simulation, and the finite mode will only fix one of those * sources of error. */ -void dBodySetFiniteRotationMode (dBodyID, int mode); +ODE_API void dBodySetFiniteRotationMode (dBodyID, int mode); /** * @brief sets the finite rotation axis for a body. @@ -816,28 +817,28 @@ void dBodySetFiniteRotationMode (dBodyID, int mode); * you can call this function with the wheel's hinge axis as the argument to * try and improve its behavior. */ -void dBodySetFiniteRotationAxis (dBodyID, dReal x, dReal y, dReal z); +ODE_API void dBodySetFiniteRotationAxis (dBodyID, dReal x, dReal y, dReal z); /** * @brief Get the way a body's orientation is updated each timestep. * @ingroup bodies * @return the mode 0 (infitesimal) or 1 (finite). */ -int dBodyGetFiniteRotationMode (dBodyID); +ODE_API int dBodyGetFiniteRotationMode (dBodyID); /** * @brief Get the finite rotation axis. * @param result will contain the axis. * @ingroup bodies */ -void dBodyGetFiniteRotationAxis (dBodyID, dVector3 result); +ODE_API void dBodyGetFiniteRotationAxis (dBodyID, dVector3 result); /** * @brief Get the number of joints that are attached to this body. * @ingroup bodies * @return nr of joints */ -int dBodyGetNumJoints (dBodyID b); +ODE_API int dBodyGetNumJoints (dBodyID b); /** * @brief Return a joint attached to this body, given by index. @@ -845,14 +846,14 @@ int dBodyGetNumJoints (dBodyID b); * @param index valid range is 0 to n-1 where n is the value returned by * dBodyGetNumJoints(). */ -dJointID dBodyGetJoint (dBodyID, int index); +ODE_API dJointID dBodyGetJoint (dBodyID, int index); /** * @brief Manually enable a body. * @param dBodyID identification of body. * @ingroup bodies */ -void dBodyEnable (dBodyID); +ODE_API void dBodyEnable (dBodyID); /** * @brief Manually disable a body. @@ -861,14 +862,14 @@ void dBodyEnable (dBodyID); * A disabled body that is connected through a joint to an enabled body will * be automatically re-enabled at the next simulation step. */ -void dBodyDisable (dBodyID); +ODE_API void dBodyDisable (dBodyID); /** * @brief Check wether a body is enabled. * @ingroup bodies * @return 1 if a body is currently enabled or 0 if it is disabled. */ -int dBodyIsEnabled (dBodyID); +ODE_API int dBodyIsEnabled (dBodyID); /** * @brief Set whether the body is influenced by the world's gravity or not. @@ -877,14 +878,14 @@ int dBodyIsEnabled (dBodyID); * @remarks * Newly created bodies are always influenced by the world's gravity. */ -void dBodySetGravityMode (dBodyID b, int mode); +ODE_API void dBodySetGravityMode (dBodyID b, int mode); /** * @brief Get whether the body is influenced by the world's gravity or not. * @ingroup bodies * @return nonzero means gravity affects this body. */ -int dBodyGetGravityMode (dBodyID b); +ODE_API int dBodyGetGravityMode (dBodyID b); @@ -963,7 +964,7 @@ int dBodyGetGravityMode (dBodyID b); * @param dJointGroupID set to 0 to allocate the joint normally. * If it is nonzero the joint is allocated in the given joint group. */ -dJointID dJointCreateBall (dWorldID, dJointGroupID); +ODE_API dJointID dJointCreateBall (dWorldID, dJointGroupID); /** * @brief Create a new joint of the hinge type. @@ -971,7 +972,7 @@ dJointID dJointCreateBall (dWorldID, dJointGroupID); * @param dJointGroupID set to 0 to allocate the joint normally. * If it is nonzero the joint is allocated in the given joint group. */ -dJointID dJointCreateHinge (dWorldID, dJointGroupID); +ODE_API dJointID dJointCreateHinge (dWorldID, dJointGroupID); /** * @brief Create a new joint of the slider type. @@ -979,7 +980,7 @@ dJointID dJointCreateHinge (dWorldID, dJointGroupID); * @param dJointGroupID set to 0 to allocate the joint normally. * If it is nonzero the joint is allocated in the given joint group. */ -dJointID dJointCreateSlider (dWorldID, dJointGroupID); +ODE_API dJointID dJointCreateSlider (dWorldID, dJointGroupID); /** * @brief Create a new joint of the contact type. @@ -987,8 +988,8 @@ dJointID dJointCreateSlider (dWorldID, dJointGroupID); * @param dJointGroupID set to 0 to allocate the joint normally. * If it is nonzero the joint is allocated in the given joint group. */ -dJointID dJointCreateContact (dWorldID, dJointGroupID, const dContact *); -dJointID dJointCreateContactSpecial (dWorldID, dJointGroupID, const dContact *); +ODE_API dJointID dJointCreateContact (dWorldID, dJointGroupID, const dContact *); +dJointID dJointCreateContactSpecial (dWorldID, dJointGroupID, const dContact *); // XXX: GSC custom? /** * @brief Create a new joint of the hinge2 type. @@ -996,7 +997,7 @@ dJointID dJointCreateContactSpecial (dWorldID, dJointGroupID, const dContact *); * @param dJointGroupID set to 0 to allocate the joint normally. * If it is nonzero the joint is allocated in the given joint group. */ -dJointID dJointCreateHinge2 (dWorldID, dJointGroupID); +ODE_API dJointID dJointCreateHinge2 (dWorldID, dJointGroupID); /** * @brief Create a new joint of the universal type. @@ -1004,7 +1005,7 @@ dJointID dJointCreateHinge2 (dWorldID, dJointGroupID); * @param dJointGroupID set to 0 to allocate the joint normally. * If it is nonzero the joint is allocated in the given joint group. */ -dJointID dJointCreateUniversal (dWorldID, dJointGroupID); +ODE_API dJointID dJointCreateUniversal (dWorldID, dJointGroupID); /** * @brief Create a new joint of the fixed type. @@ -1012,9 +1013,9 @@ dJointID dJointCreateUniversal (dWorldID, dJointGroupID); * @param dJointGroupID set to 0 to allocate the joint normally. * If it is nonzero the joint is allocated in the given joint group. */ -dJointID dJointCreateFixed (dWorldID, dJointGroupID); +ODE_API dJointID dJointCreateFixed (dWorldID, dJointGroupID); -dJointID dJointCreateNull (dWorldID, dJointGroupID); +ODE_API dJointID dJointCreateNull (dWorldID, dJointGroupID); /** * @brief Create a new joint of the A-motor type. @@ -1022,7 +1023,8 @@ dJointID dJointCreateNull (dWorldID, dJointGroupID); * @param dJointGroupID set to 0 to allocate the joint normally. * If it is nonzero the joint is allocated in the given joint group. */ -dJointID dJointCreateAMotor (dWorldID, dJointGroupID); +ODE_API dJointID dJointCreateAMotor (dWorldID, dJointGroupID); + /** * @brief Destroy a joint. @@ -1032,7 +1034,7 @@ dJointID dJointCreateAMotor (dWorldID, dJointGroupID); * However, if the joint is a member of a group then this function has no * effect - to destroy that joint the group must be emptied or destroyed. */ -void dJointDestroy (dJointID); +ODE_API void dJointDestroy (dJointID); /** @@ -1040,7 +1042,7 @@ void dJointDestroy (dJointID); * @ingroup joints * @param max_size deprecated. Set to 0. */ -dJointGroupID dJointGroupCreate (int max_size); +ODE_API dJointGroupID dJointGroupCreate (int max_size); /** * @brief Destroy a joint group. @@ -1048,7 +1050,7 @@ dJointGroupID dJointGroupCreate (int max_size); * * All joints in the joint group will be destroyed. */ -void dJointGroupDestroy (dJointGroupID); +ODE_API void dJointGroupDestroy (dJointGroupID); /** * @brief Empty a joint group. @@ -1057,7 +1059,8 @@ void dJointGroupDestroy (dJointGroupID); * All joints in the joint group will be destroyed, * but the joint group itself will not be destroyed. */ -void dJointGroupEmpty (dJointGroupID); +ODE_API void dJointGroupEmpty (dJointGroupID); + /** * @brief Attach the joint to some new bodies. * @ingroup joints @@ -1071,19 +1074,19 @@ void dJointGroupEmpty (dJointGroupID); * @remarks * Some joints, like hinge-2 need to be attached to two bodies to work. */ -void dJointAttach (dJointID, dBodyID body1, dBodyID body2); +ODE_API void dJointAttach (dJointID, dBodyID body1, dBodyID body2); /** * @brief Set the user-data pointer * @ingroup joints */ -void dJointSetData (dJointID, void *data); +ODE_API void dJointSetData (dJointID, void *data); /** * @brief Get the user-data pointer * @ingroup joints */ -void *dJointGetData (dJointID); +ODE_API void *dJointGetData (dJointID); /** * @brief Get the type of the joint @@ -1099,7 +1102,7 @@ void *dJointGetData (dJointID); * \li JointTypeAMotor * \li JointTypeLMotor */ -int dJointGetType (dJointID); +ODE_API int dJointGetType (dJointID); /** * @brief Return the bodies that this joint connects. @@ -1111,7 +1114,7 @@ int dJointGetType (dJointID); * If both body IDs are zero, the joint is in ``limbo'' and has no effect on * the simulation. */ -dBodyID dJointGetBody (dJointID, int index); +ODE_API dBodyID dJointGetBody (dJointID, int index); /** * @brief Sets the datastructure that is to receive the feedback. @@ -1120,13 +1123,13 @@ dBodyID dJointGetBody (dJointID, int index); * much force an individual joint exerts. * @ingroup joints */ -void dJointSetFeedback (dJointID, dJointFeedback *); +ODE_API void dJointSetFeedback (dJointID, dJointFeedback *); /** * @brief Gets the datastructure that is to receive the feedback. * @ingroup joints */ -dJointFeedback *dJointGetFeedback (dJointID); +ODE_API dJointFeedback *dJointGetFeedback (dJointID); /** * @brief Set the joint anchor point. @@ -1135,24 +1138,26 @@ dJointFeedback *dJointGetFeedback (dJointID); * The joint will try to keep this point on each body * together. The input is specified in world coordinates. */ -void dJointSetBallAnchor (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetBallAnchor (dJointID, dReal x, dReal y, dReal z); + /** * @brief Set hinge anchor parameter. * @ingroup joints */ -void dJointSetHingeAnchor (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetHingeAnchor (dJointID, dReal x, dReal y, dReal z); + /** * @brief Set hinge axis. * @ingroup joints */ -void dJointSetHingeAxis (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetHingeAxis (dJointID, dReal x, dReal y, dReal z); /** * @brief set joint parameter * @ingroup joints */ -void dJointSetHingeParam (dJointID, int parameter, dReal value); +ODE_API void dJointSetHingeParam (dJointID, int parameter, dReal value); /** * @brief Applies the torque about the hinge axis. @@ -1162,18 +1167,19 @@ void dJointSetHingeParam (dJointID, int parameter, dReal value); * direction to body 2. This function is just a wrapper for dBodyAddTorque()} * @ingroup joints */ -void dJointAddHingeTorque(dJointID joint, dReal torque); +ODE_API void dJointAddHingeTorque(dJointID joint, dReal torque); /** * @brief set the joint axis * @ingroup joints */ -void dJointSetSliderAxis (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetSliderAxis (dJointID, dReal x, dReal y, dReal z); + /** * @brief set joint parameter * @ingroup joints */ -void dJointSetSliderParam (dJointID, int parameter, dReal value); +ODE_API void dJointSetSliderParam (dJointID, int parameter, dReal value); /** * @brief Applies the given force in the slider's direction. @@ -1183,31 +1189,31 @@ void dJointSetSliderParam (dJointID, int parameter, dReal value); * direction to body2. This function is just a wrapper for dBodyAddForce(). * @ingroup joints */ -void dJointAddSliderForce(dJointID joint, dReal force); +ODE_API void dJointAddSliderForce(dJointID joint, dReal force); /** * @brief set anchor * @ingroup joints */ -void dJointSetHinge2Anchor (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetHinge2Anchor (dJointID, dReal x, dReal y, dReal z); /** * @brief set axis * @ingroup joints */ -void dJointSetHinge2Axis1 (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetHinge2Axis1 (dJointID, dReal x, dReal y, dReal z); /** * @brief set axis * @ingroup joints */ -void dJointSetHinge2Axis2 (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetHinge2Axis2 (dJointID, dReal x, dReal y, dReal z); /** * @brief set joint parameter * @ingroup joints */ -void dJointSetHinge2Param (dJointID, int parameter, dReal value); +ODE_API void dJointSetHinge2Param (dJointID, int parameter, dReal value); /** * @brief Applies torque1 about the hinge2's axis 1, torque2 about the @@ -1215,31 +1221,31 @@ void dJointSetHinge2Param (dJointID, int parameter, dReal value); * @remarks This function is just a wrapper for dBodyAddTorque(). * @ingroup joints */ -void dJointAddHinge2Torques(dJointID joint, dReal torque1, dReal torque2); +ODE_API void dJointAddHinge2Torques(dJointID joint, dReal torque1, dReal torque2); /** * @brief set anchor * @ingroup joints */ -void dJointSetUniversalAnchor (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetUniversalAnchor (dJointID, dReal x, dReal y, dReal z); /** * @brief set axis * @ingroup joints */ -void dJointSetUniversalAxis1 (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetUniversalAxis1 (dJointID, dReal x, dReal y, dReal z); /** * @brief set axis * @ingroup joints */ -void dJointSetUniversalAxis2 (dJointID, dReal x, dReal y, dReal z); +ODE_API void dJointSetUniversalAxis2 (dJointID, dReal x, dReal y, dReal z); /** * @brief set joint parameter * @ingroup joints */ -void dJointSetUniversalParam (dJointID, int parameter, dReal value); +ODE_API void dJointSetUniversalParam (dJointID, int parameter, dReal value); /** * @brief Applies torque1 about the universal's axis 1, torque2 about the @@ -1247,7 +1253,7 @@ void dJointSetUniversalParam (dJointID, int parameter, dReal value); * @remarks This function is just a wrapper for dBodyAddTorque(). * @ingroup joints */ -void dJointAddUniversalTorques(dJointID joint, dReal torque1, dReal torque2); +ODE_API void dJointAddUniversalTorques(dJointID joint, dReal torque1, dReal torque2); /** * @brief Call this on the fixed joint after it has been attached to @@ -1255,21 +1261,21 @@ void dJointAddUniversalTorques(dJointID joint, dReal torque1, dReal torque2); * rotation between the bodies. * @ingroup joints */ -void dJointSetFixed (dJointID); -void dJointSetFixedQuaternionPos (dJointID joint, dQuaternion quaternion, dReal* pos); +ODE_API void dJointSetFixed (dJointID); +void dJointSetFixedQuaternionPos (dJointID joint, dQuaternion quaternion, dReal* pos); // XXX: GSC custom? /** * @brief set the nr of axes * @param num 0..3 * @ingroup joints */ -void dJointSetAMotorNumAxes (dJointID, int num); +ODE_API void dJointSetAMotorNumAxes (dJointID, int num); /** * @brief set axis * @ingroup joints */ -void dJointSetAMotorAxis (dJointID, int anum, int rel, +ODE_API void dJointSetAMotorAxis (dJointID, int anum, int rel, dReal x, dReal y, dReal z); /** @@ -1281,19 +1287,19 @@ void dJointSetAMotorAxis (dJointID, int anum, int rel, * but it is not needed for axis motors. * @ingroup joints */ -void dJointSetAMotorAngle (dJointID, int anum, dReal angle); +ODE_API void dJointSetAMotorAngle (dJointID, int anum, dReal angle); /** * @brief set joint parameter * @ingroup joints */ -void dJointSetAMotorParam (dJointID, int parameter, dReal value); +ODE_API void dJointSetAMotorParam (dJointID, int parameter, dReal value); /** * @brief set mode * @ingroup joints */ -void dJointSetAMotorMode (dJointID, int mode); +ODE_API void dJointSetAMotorMode (dJointID, int mode); /** * @brief Applies torque0 about the AMotor's axis 0, torque1 about the @@ -1303,7 +1309,7 @@ void dJointSetAMotorMode (dJointID, int mode); * This function is just a wrapper for dBodyAddTorque(). * @ingroup joints */ -void dJointAddAMotorTorques (dJointID, dReal torque1, dReal torque2, dReal torque3); +ODE_API void dJointAddAMotorTorques (dJointID, dReal torque1, dReal torque2, dReal torque3); /** * @brief Get the joint anchor point, in world coordinates. @@ -1311,7 +1317,7 @@ void dJointAddAMotorTorques (dJointID, dReal torque1, dReal torque2, dReal torqu * This returns the point on body 1. If the joint is perfectly satisfied, * this will be the same as the point on body 2. */ -void dJointGetBallAnchor (dJointID, dVector3 result); +ODE_API void dJointGetBallAnchor (dJointID, dVector3 result); /** * @brief Get the joint anchor point, in world coordinates. @@ -1323,7 +1329,7 @@ void dJointGetBallAnchor (dJointID, dVector3 result); * within roundoff errors. dJointGetBallAnchor2() can be used, along with * dJointGetBallAnchor(), to see how far the joint has come apart. */ -void dJointGetBallAnchor2 (dJointID, dVector3 result); +ODE_API void dJointGetBallAnchor2 (dJointID, dVector3 result); /** * @brief Get the hinge anchor point, in world coordinates. @@ -1332,7 +1338,7 @@ void dJointGetBallAnchor2 (dJointID, dVector3 result); * this will be the same as the point on body 2. * @ingroup joints */ -void dJointGetHingeAnchor (dJointID, dVector3 result); +ODE_API void dJointGetHingeAnchor (dJointID, dVector3 result); /** * @brief Get the joint anchor point, in world coordinates. @@ -1342,19 +1348,19 @@ void dJointGetHingeAnchor (dJointID, dVector3 result); * This can be used, for example, to see how far the joint has come apart. * @ingroup joints */ -void dJointGetHingeAnchor2 (dJointID, dVector3 result); +ODE_API void dJointGetHingeAnchor2 (dJointID, dVector3 result); /** * @brief get axis * @ingroup joints */ -void dJointGetHingeAxis (dJointID, dVector3 result); +ODE_API void dJointGetHingeAxis (dJointID, dVector3 result); /** * @brief get joint parameter * @ingroup joints */ -dReal dJointGetHingeParam (dJointID, int parameter); +ODE_API dReal dJointGetHingeParam (dJointID, int parameter); /** * @brief Get the hinge angle. @@ -1366,13 +1372,13 @@ dReal dJointGetHingeParam (dJointID, int parameter); * bodies is examined and that position will be the zero angle. * @ingroup joints */ -dReal dJointGetHingeAngle (dJointID); +ODE_API dReal dJointGetHingeAngle (dJointID); /** * @brief Get the hinge angle time derivative. * @ingroup joints */ -dReal dJointGetHingeAngleRate (dJointID); +ODE_API dReal dJointGetHingeAngleRate (dJointID); /** * @brief Get the slider linear position (i.e. the slider's extension) @@ -1381,25 +1387,25 @@ dReal dJointGetHingeAngleRate (dJointID); * examined and that position will be the zero position. * @ingroup joints */ -dReal dJointGetSliderPosition (dJointID); +ODE_API dReal dJointGetSliderPosition (dJointID); /** * @brief Get the slider linear position's time derivative. * @ingroup joints */ -dReal dJointGetSliderPositionRate (dJointID); +ODE_API dReal dJointGetSliderPositionRate (dJointID); /** * @brief Get the slider axis * @ingroup joints */ -void dJointGetSliderAxis (dJointID, dVector3 result); +ODE_API void dJointGetSliderAxis (dJointID, dVector3 result); /** * @brief get joint parameter * @ingroup joints */ -dReal dJointGetSliderParam (dJointID, int parameter); +ODE_API dReal dJointGetSliderParam (dJointID, int parameter); /** * @brief Get the joint anchor point, in world coordinates. @@ -1407,7 +1413,7 @@ dReal dJointGetSliderParam (dJointID, int parameter); * this will be the same as the point on body 2. * @ingroup joints */ -void dJointGetHinge2Anchor (dJointID, dVector3 result); +ODE_API void dJointGetHinge2Anchor (dJointID, dVector3 result); /** * @brief Get the joint anchor point, in world coordinates. @@ -1417,43 +1423,43 @@ void dJointGetHinge2Anchor (dJointID, dVector3 result); * This can be used, for example, to see how far the joint has come apart. * @ingroup joints */ -void dJointGetHinge2Anchor2 (dJointID, dVector3 result); +ODE_API void dJointGetHinge2Anchor2 (dJointID, dVector3 result); /** * @brief Get joint axis * @ingroup joints */ -void dJointGetHinge2Axis1 (dJointID, dVector3 result); +ODE_API void dJointGetHinge2Axis1 (dJointID, dVector3 result); /** * @brief Get joint axis * @ingroup joints */ -void dJointGetHinge2Axis2 (dJointID, dVector3 result); +ODE_API void dJointGetHinge2Axis2 (dJointID, dVector3 result); /** * @brief get joint parameter * @ingroup joints */ -dReal dJointGetHinge2Param (dJointID, int parameter); +ODE_API dReal dJointGetHinge2Param (dJointID, int parameter); /** * @brief Get angle * @ingroup joints */ -dReal dJointGetHinge2Angle1 (dJointID); +ODE_API dReal dJointGetHinge2Angle1 (dJointID); /** * @brief Get time derivative of angle * @ingroup joints */ -dReal dJointGetHinge2Angle1Rate (dJointID); +ODE_API dReal dJointGetHinge2Angle1Rate (dJointID); /** * @brief Get time derivative of angle * @ingroup joints */ -dReal dJointGetHinge2Angle2Rate (dJointID); +ODE_API dReal dJointGetHinge2Angle2Rate (dJointID); /** * @brief Get the joint anchor point, in world coordinates. @@ -1461,7 +1467,7 @@ dReal dJointGetHinge2Angle2Rate (dJointID); * this will be the same as the point on body 2. * @ingroup joints */ -void dJointGetUniversalAnchor (dJointID, dVector3 result); +ODE_API void dJointGetUniversalAnchor (dJointID, dVector3 result); /** * @brief Get the joint anchor point, in world coordinates. @@ -1476,50 +1482,50 @@ void dJointGetUniversalAnchor (dJointID, dVector3 result); * dJointGetUniversalAnchor(), to see how far the joint has come apart. * @ingroup joints */ -void dJointGetUniversalAnchor2 (dJointID, dVector3 result); +ODE_API void dJointGetUniversalAnchor2 (dJointID, dVector3 result); /** * @brief Get axis * @ingroup joints */ -void dJointGetUniversalAxis1 (dJointID, dVector3 result); +ODE_API void dJointGetUniversalAxis1 (dJointID, dVector3 result); /** * @brief Get axis * @ingroup joints */ -void dJointGetUniversalAxis2 (dJointID, dVector3 result); +ODE_API void dJointGetUniversalAxis2 (dJointID, dVector3 result); /** * @brief get joint parameter * @ingroup joints */ -dReal dJointGetUniversalParam (dJointID, int parameter); +ODE_API dReal dJointGetUniversalParam (dJointID, int parameter); /** * @brief Get angle * @ingroup joints */ -dReal dJointGetUniversalAngle1 (dJointID); +ODE_API dReal dJointGetUniversalAngle1 (dJointID); /** * @brief Get angle * @ingroup joints */ -dReal dJointGetUniversalAngle2 (dJointID); +ODE_API dReal dJointGetUniversalAngle2 (dJointID); /** * @brief Get time derivative of angle * @ingroup joints */ -dReal dJointGetUniversalAngle1Rate (dJointID); +ODE_API dReal dJointGetUniversalAngle1Rate (dJointID); /** * @brief Get time derivative of angle * @ingroup joints */ -dReal dJointGetUniversalAngle2Rate (dJointID); +ODE_API dReal dJointGetUniversalAngle2Rate (dJointID); /** * @brief Get the number of angular axes that will be controlled by the @@ -1529,7 +1535,7 @@ dReal dJointGetUniversalAngle2Rate (dJointID); * This is automatically set to 3 in dAMotorEuler mode. * @ingroup joints */ -int dJointGetAMotorNumAxes (dJointID); +ODE_API int dJointGetAMotorNumAxes (dJointID); /** * @brief Get the AMotor axes. @@ -1540,7 +1546,7 @@ int dJointGetAMotorNumAxes (dJointID); * \li 2: The axis is anchored to the second body. * @ingroup joints */ -void dJointGetAMotorAxis (dJointID, int anum, dVector3 result); +ODE_API void dJointGetAMotorAxis (dJointID, int anum, dVector3 result); /** * @brief Get axis @@ -1558,7 +1564,7 @@ void dJointGetAMotorAxis (dJointID, int anum, dVector3 result); to the second body. * @ingroup joints */ -int dJointGetAMotorAxisRel (dJointID, int anum); +ODE_API int dJointGetAMotorAxisRel (dJointID, int anum); /** * @brief Get the current angle for axis. @@ -1568,7 +1574,7 @@ int dJointGetAMotorAxisRel (dJointID, int anum); * In dAMotorEuler mode this is the corresponding euler angle. * @ingroup joints */ -dReal dJointGetAMotorAngle (dJointID, int anum); +ODE_API dReal dJointGetAMotorAngle (dJointID, int anum); /** * @brief Get the current angle rate for axis anum. @@ -1578,13 +1584,13 @@ dReal dJointGetAMotorAngle (dJointID, int anum); * In dAMotorEuler mode this is the corresponding euler angle rate. * @ingroup joints */ -dReal dJointGetAMotorAngleRate (dJointID, int anum); +ODE_API dReal dJointGetAMotorAngleRate (dJointID, int anum); /** * @brief get joint parameter * @ingroup joints */ -dReal dJointGetAMotorParam (dJointID, int parameter); +ODE_API dReal dJointGetAMotorParam (dJointID, int parameter); /** * @brief Get the angular motor mode. @@ -1599,7 +1605,7 @@ dReal dJointGetAMotorParam (dJointID, int parameter); * of the bodies will correspond to all euler angles at zero. * @ingroup joints */ -int dJointGetAMotorMode (dJointID); +ODE_API int dJointGetAMotorMode (dJointID); /** @@ -1608,7 +1614,7 @@ int dJointGetAMotorMode (dJointID); * a joint, otherwise return 0. * @ingroup joints */ -int dAreConnected (dBodyID, dBodyID); +ODE_API int dAreConnected (dBodyID, dBodyID); /** * @brief Utility function @@ -1621,7 +1627,7 @@ int dAreConnected (dBodyID, dBodyID); * bodies that already have contacts. * @ingroup joints */ -int dAreConnectedExcluding (dBodyID, dBodyID, int joint_type); +ODE_API int dAreConnectedExcluding (dBodyID, dBodyID, int joint_type); #ifdef __cplusplus diff --git a/Externals/ode/include/ode/odecpp_collision.h b/Externals/ode/include/ode/odecpp_collision.h index 6d69d212983..e631b3aef1c 100644 --- a/Externals/ode/include/ode/odecpp_collision.h +++ b/Externals/ode/include/ode/odecpp_collision.h @@ -251,7 +251,7 @@ class dPlane : public dGeom { { dGeomPlaneGetParams (_id,result); } }; - +// XXX: Cylinder was renamed to Capsule class dCCylinder : public dGeom { // intentionally undefined, don't use these dCCylinder (dCCylinder &); diff --git a/Externals/ode/include/ode/odemath.h b/Externals/ode/include/ode/odemath.h index 05e045cd014..a32da0a2b87 100644 --- a/Externals/ode/include/ode/odemath.h +++ b/Externals/ode/include/ode/odemath.h @@ -219,10 +219,10 @@ extern "C" { /* * normalize 3x1 and 4x1 vectors (i.e. scale them to unit length) */ -void dNormalize3_slow (dVector3 a); -void dNormalize4 (dVector4 a); +ODE_API void dNormalize3_slow (dVector3 a); // XXX: original +ODE_API void dNormalize4 (dVector4 a); -__forceinline void dNormalize3 (dVector3 a) +__forceinline void dNormalize3 (dVector3 a) // XXX: GSC custom { dReal sqr_magnitude = a[0]*a[0] + a[1]*a[1] + a[2]*a[2]; dReal epsilon = 1.192092896e-05F; @@ -243,7 +243,7 @@ __forceinline void dNormalize3 (dVector3 a) * q wont be. */ -void dPlaneSpace (const dVector3 n, dVector3 p, dVector3 q); +ODE_API void dPlaneSpace (const dVector3 n, dVector3 p, dVector3 q); #ifdef __cplusplus } diff --git a/Externals/ode/include/ode/rotation.h b/Externals/ode/include/ode/rotation.h index 951547d98f2..a72be27f1d4 100644 --- a/Externals/ode/include/ode/rotation.h +++ b/Externals/ode/include/ode/rotation.h @@ -31,36 +31,36 @@ extern "C" { #endif -void dRSetIdentity (dMatrix3 R); +ODE_API void dRSetIdentity (dMatrix3 R); -void dRFromAxisAndAngle (dMatrix3 R, dReal ax, dReal ay, dReal az, +ODE_API void dRFromAxisAndAngle (dMatrix3 R, dReal ax, dReal ay, dReal az, dReal angle); -void dRFromEulerAngles (dMatrix3 R, dReal phi, dReal theta, dReal psi); +ODE_API void dRFromEulerAngles (dMatrix3 R, dReal phi, dReal theta, dReal psi); -void dRFrom2Axes (dMatrix3 R, dReal ax, dReal ay, dReal az, +ODE_API void dRFrom2Axes (dMatrix3 R, dReal ax, dReal ay, dReal az, dReal bx, dReal by, dReal bz); -void dRFromZAxis (dMatrix3 R, dReal ax, dReal ay, dReal az); +ODE_API void dRFromZAxis (dMatrix3 R, dReal ax, dReal ay, dReal az); -void dQSetIdentity (dQuaternion q); +ODE_API void dQSetIdentity (dQuaternion q); -void dQFromAxisAndAngle (dQuaternion q, dReal ax, dReal ay, dReal az, +ODE_API void dQFromAxisAndAngle (dQuaternion q, dReal ax, dReal ay, dReal az, dReal angle); /* Quaternion multiplication, analogous to the matrix multiplication routines. */ /* qa = rotate by qc, then qb */ -void dQMultiply0 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc); +ODE_API void dQMultiply0 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc); /* qa = rotate by qc, then by inverse of qb */ -void dQMultiply1 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc); +ODE_API void dQMultiply1 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc); /* qa = rotate by inverse of qc, then by qb */ -void dQMultiply2 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc); +ODE_API void dQMultiply2 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc); /* qa = rotate by inverse of qc, then by inverse of qb */ -void dQMultiply3 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc); +ODE_API void dQMultiply3 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc); -void dRfromQ (dMatrix3 R, const dQuaternion q); -void dQfromR (dQuaternion q, const dMatrix3 R); -void dDQfromW (dReal dq[4], const dVector3 w, const dQuaternion q); +ODE_API void dRfromQ (dMatrix3 R, const dQuaternion q); +ODE_API void dQfromR (dQuaternion q, const dMatrix3 R); +ODE_API void dDQfromW (dReal dq[4], const dVector3 w, const dQuaternion q); #ifdef __cplusplus diff --git a/Externals/ode/include/ode/timer.h b/Externals/ode/include/ode/timer.h index 7ca462a88bb..c3f42a7adab 100644 --- a/Externals/ode/include/ode/timer.h +++ b/Externals/ode/include/ode/timer.h @@ -37,23 +37,23 @@ typedef struct dStopwatch { unsigned long cc[2]; /* clock count since last `start' */ } dStopwatch; -void dStopwatchReset (dStopwatch *); -void dStopwatchStart (dStopwatch *); -void dStopwatchStop (dStopwatch *); -double dStopwatchTime (dStopwatch *); /* returns total time in secs */ +ODE_API void dStopwatchReset (dStopwatch *); +ODE_API void dStopwatchStart (dStopwatch *); +ODE_API void dStopwatchStop (dStopwatch *); +ODE_API double dStopwatchTime (dStopwatch *); /* returns total time in secs */ /* code timers */ -void dTimerStart (const char *description); /* pass a static string here */ -void dTimerNow (const char *description); /* pass a static string here */ -void dTimerEnd(void); +ODE_API void dTimerStart (const char *description); /* pass a static string here */ +ODE_API void dTimerNow (const char *description); /* pass a static string here */ +ODE_API void dTimerEnd(void); /* print out a timer report. if `average' is nonzero, print out the average * time for each slot (this is only meaningful if the same start-now-end * calls are being made repeatedly. */ -void dTimerReport (FILE *fout, int average); +ODE_API void dTimerReport (FILE *fout, int average); /* resolution */ @@ -61,12 +61,12 @@ void dTimerReport (FILE *fout, int average); /* returns the timer ticks per second implied by the timing hardware or API. * the actual timer resolution may not be this great. */ -double dTimerTicksPerSecond(void); +ODE_API double dTimerTicksPerSecond(void); /* returns an estimate of the actual timer resolution, in seconds. this may * be greater than 1/ticks_per_second. */ -double dTimerResolution(void); +ODE_API double dTimerResolution(void); #ifdef __cplusplus diff --git a/Externals/ode/ode/src/collision_std.h b/Externals/ode/ode/src/collision_std.h index 3c0a7ec0be6..217575d7268 100644 --- a/Externals/ode/ode/src/collision_std.h +++ b/Externals/ode/ode/src/collision_std.h @@ -47,6 +47,7 @@ int dCollideBoxBox (dxGeom *o1, dxGeom *o2, int flags, dContactGeom *contact, int skip); int dCollideBoxPlane (dxGeom *o1, dxGeom *o2, int flags, dContactGeom *contact, int skip); +// XXX: Cylinder was renamed to Capsule int dCollideCCylinderSphere (dxGeom *o1, dxGeom *o2, int flags, dContactGeom *contact, int skip); int dCollideCCylinderBox (dxGeom *o1, dxGeom *o2, int flags,