there is a lot of question about zero value m_appliedImpulse in gContactProcessedCallback on forums (it's probably best value to start playing sounds etc.).
I think actual call gContactProcessedCallback in btPersistentManifold::refreshContactPoints() is too early for many cases. Final right value m_appliedImpulse get manifold point in btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyFinish(). So call gContactProcessedCallback should be somewhere after that.
I have modified my bullet fork which is too different to make pull request with same patch.
there is a lot of question about zero value m_appliedImpulse in gContactProcessedCallback on forums (it's probably best value to start playing sounds etc.).
I think actual call gContactProcessedCallback in btPersistentManifold::refreshContactPoints() is too early for many cases. Final right value m_appliedImpulse get manifold point in btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyFinish(). So call gContactProcessedCallback should be somewhere after that.
I have modified my bullet fork which is too different to make pull request with same patch.