Extension of the C-API for Bullet in Blender, to enable customized
collision detection outside of rigid body dynamics.
These extensions consist of a few major changes:
* Support for "btGhost" objects.
These are Bullet collision objects, but not rigid bodies. They can be
added to a btCollisionWorld, or they can be used for immediate
individual collision detection. Ghost objects don't have any effect on
rigid bodies or other collision objects.
Ghost objects are "one-way" colliders: they register contacts with
actual collision objects, but don't themselves generate contacts in
other bodies. This makes them useful for accessing Bullet's advanced
contact generation algorithms in simulation systems that don't
actually interact with rigid bodies (e.g. hair or cloth).
* Better low-level access to collision shapes.
Collision shapes can now be allocated outside of the API using static
size variables. This allows more efficient allocation schemes, such
as bulk array allocation and mempools/memarenas. The Bullet engine
itself expects callers to allocate and manage class instances in fact,
but due to the optional linking with Bullet and the differences
between C/C++ the allocation was left to single collision shape
instances so far.
* Compound shapes can now be constructed explicitly as well. Previously
only the primitive shapes were supported, with compounds limited to
* Contact callback functions (contact and proximity tests) can now do
complete reports of all manifold contact points.
Taken together, these API improvements will open up Bullet to a wider
range of features inside Blender, for rigid body simulations as well as
Differential Revision: https://developer.blender.org/D1268