I've started working on and committing the new C-API for interfacing with Bullet into my branch at last. At the time of writing, I've finally replaced the old API calls with the ones from the new API.
Everything that worked before seems to work still. Also, all the hack to force resetting of simulations now seems to be working, while it didn't before. Yay! (Note: it's still really a hack still, since we should be able to do this by just stopping playback, or jumping back to the 'start frame' for the sim... but at least that should be easy to fix soon).
Unfortunately, despite now using MotionStates, I still can't seem to get reverse playback working (which is necessary for allowing normal 'scrubbing' of the timeline). There is some movement in the right direction, but it only happens once and then stops. This was not the case when I tried doing this in the "Hello World" demo in Bullet srcs. Is it to do with the sizes of the timesteps - i.e. do I need to specify max timesteps/substeps? Or am I screwing up the way the MotionStates update?
If anybody reading this is familiar with Bullet, some suggestions/help on fixing this would be appreciated :)