btHingeConstraint does not use the m_angularOnly flag (enabled by setAngularOnly(...)) in its new solver implementation, which is the default. It will only take effect if you use the obsolete solver implementation, which can be enabled with the following client code:
Code:
#define IN_PARALLELL_SOLVER // !!! grants public access to btHingeConstraint data members
#include <BulletDynamics/ConstraintSolver/btHingeConstraint.h>
. . .
btHingeConstraint * hinge = new btHingeConstraint( . . . )
hinge->setAngularOnly( true );
hinge->m_useSolveConstraintObsolete = true; // !!! normally a private data member
. . .
I am using a btHingeConstraint to achieve an "upright" constraint that has been discussed elsewhere in the forum. I had to make this fix after upgrading from 2.73 to 2.74 in order to get double-precision (BT_USE_DOUBLE_PRECISION) working successfully on Gentoo GNU/Linux for amd64.
I have recently replaced our own physics engine with Bullet, and am very pleased with the results. The code is well designed and easy to follow. The overall object design and C++ coding style is actually very close to ours, which made the integration surprisingly easy. The lead game designer got even more excited when she saw everything in our world bouncing around!
Great work guys
--Christopher