- added bt32BitAxisSweep3, which co-exists without recompilation, using template class. This broadphase is recommended for large worlds with many objects (> 16384), until btMultiSwap is finished.
- Fixed some recent issues in Bullet 2.57 related to compound (thanks Proctoid) and memory allocations
Some dynamic memory allocations have been replace by pool allocation or stack allocations.
quantized aabb versus quantized aabb overlap check is made branch-free (helps a lot on consoles PS3/XBox 360)
Collision algorithms are now created through a new btDefaultCollisionConfiguration, to decouple dependency (this is the API change):
Example:
btDefaultCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration();
m_dispatcher = new btCollisionDispatcher(collisionConfiguration);
improved hinge constraint: adds limits
added btAtan2Fast
quaternion helper functions
All thanks to Starbreeze Studios / Marcus Hennix, Marten Svanfeldt
Thanks tbp for more details on reproducing case.
- Fixed issue with full 32bit integers in btAxisSweep3 (define BP_USE_FIXEDPOINT_INT_32), it used only 65536 for quantization, it should use full integer space (0xffffffff)
- Added 'getForwardVector' and getCurrentSpeedKmHour utility functions to btRaycastVehicle
- Fixed local scaling issues (btConvexTriangleMeshShape, btBvhTriangleMeshShape, removed scaling from btMatrix3x3). Thanks Volker for reporting!
- Added second filename search, so that starting BspDemo and ConvexDecompositionDemo from within Visual Studio (without setting the starting path) still works
btFullAssert ( yadda_yadda ) ;
...in the btScalar.h header, it's defined as:
#define btFullAssert
...which means that the statement above becomes:
( yadda_yadda ) ;
...which means that code may actually be compiled and executed (unnecessarily) - and even when the code is something simple like:
( i > 0 && i < 3 ) ;
...the GCC tosses out a 'statement with no effect' warning - before
it optimises away the code.
The fix is:
#define btFullAssert(x)
...so that the macro still takes a parameter which is now removed
from the sources so you get:
;
...which is guaranteed not to generate code.
eg:
bulletmath_suffix="-lbulletmath"
bulletcollision_suffix="-lbulletcollision"
bulletdynamics_suffix="-lbulletdynamics"
dnl Check bulletmath library
AC_CHECK_LIB(bulletmath, btBulletMathProbe, true,
AC_MSG_ERROR([there seems to be a problem with the bulletmath library]))
LIBS="$bulletmath_suffix $LIBS"
dnl Check bulletcollision library
AC_CHECK_LIB(bulletcollision, btBulletCollisionProbe, true,
AC_MSG_ERROR([there seems to be a problem with the bulletcollision library]))
LIBS="$bulletcollision_suffix $LIBS"
dnl Check bulletdynamics library
AC_CHECK_LIB(bulletdynamics, btBulletDynamicsProbe, true,
AC_MSG_ERROR([there seems to be a problem with the bulletdynamics library]))
LIBS="$bulletdynamics_suffix $LIBS"
Same interface but less features (push_back, pop_back, clear, size, [] etc).
To prepare for SIMD/SSE code: Added #define ATTRIBUTE_ALIGNED16(a) __declspec(align(16)) a
Added btStackAlloc to Bullet (right now only used by btGjkEpa)
removed default constructors of btCollisionWorld/btDiscreteDynamicsWorld, to reduce link-time dependencies
Improved vehicle interpolation of wheels, and added Z-up axis option for the Demo
made 'getWorldTransform' const method in btMotionState
added future 'deactivationCallback'(not used yet)