Implement collisionFilterPlugin, use setCollisionFilterPair to enable or disable collision detection between specific pairs of objects. Also, expose setCollisionFilterGroupMask as PyBullet API and in urdf using the tag <collision group="1" mask="2"/>. See examples/pybullet/examples/collisionFilter.py for an example. PyBullet default: Lower the warmstarting factor, for maximal coordinates rigid bodies for more stable simulation. Add btCollisionWorld::refreshBroadphaseProxy to easier recreate the broadphase proxy without adding/removing objects to the world.
43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
#ifndef B3_PLUGIN_API_H
|
|
#define B3_PLUGIN_API_H
|
|
|
|
#ifdef _WIN32
|
|
#define B3_SHARED_API __declspec(dllexport)
|
|
#elif defined (__GNUC__)
|
|
#define B3_SHARED_API __attribute__((visibility("default")))
|
|
#else
|
|
#define B3_SHARED_API
|
|
#endif
|
|
|
|
|
|
#if defined(_WIN32)
|
|
#define B3_API_ENTRY
|
|
#define B3_API_CALL __cdecl
|
|
#define B3_CALLBACK __cdecl
|
|
#else
|
|
#define B3_API_ENTRY
|
|
#define B3_API_CALL
|
|
#define B3_CALLBACK
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/* Plugin API */
|
|
typedef B3_API_ENTRY int (B3_API_CALL * PFN_INIT)(struct b3PluginContext* context);
|
|
typedef B3_API_ENTRY void (B3_API_CALL * PFN_EXIT)(struct b3PluginContext* context);
|
|
typedef B3_API_ENTRY int (B3_API_CALL * PFN_EXECUTE)(struct b3PluginContext* context, const struct b3PluginArguments* arguments);
|
|
typedef B3_API_ENTRY int (B3_API_CALL * PFN_TICK)(struct b3PluginContext* context);
|
|
|
|
typedef B3_API_ENTRY struct UrdfRenderingInterface* (B3_API_CALL * PFN_GET_RENDER_INTERFACE)(struct b3PluginContext* context);
|
|
typedef B3_API_ENTRY struct b3PluginCollisionInterface* (B3_API_CALL * PFN_GET_COLLISION_INTERFACE)(struct b3PluginContext* context);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //B3_PLUGIN_API_H
|