- Shape queries: Allow you to use a shape that has not been added to a space to query for overlaps.
- Add a data field to cpSpace. Bodies, shapes and constraints already have a data field, so why not the space?
- Allow rouge bodies to marked as static. Shapes attached to static rogue bodies will be added as static shapes, and shapes resting on them will be allowed to sleep.
- Force groups of objects to sleep. You can currently sleep individual objects, with a group if any object wakes up, they all wake up.
One of the biggest problems is that as a C API, Chipmunk is wide open. I consider much of it to be private, but it's not exactly well documented which parts. I think I'm going to fix this in two waves. I created a macro that I can use to mark struct fields as private. It basically does C++ style name mangling when a certain flag is enabled. In 5.3.3 I'll mark all all the private fields, but make it optional to enable the name mangling. This gives people a little warning before 6.0 is released to know how to fix up their code and gives them a chance to request public APIs to do the same things. When 6.0 is released, you still have the option of disabling the name mangling if you want to continue using code that accesses the private APIs, but you are at least well warned that minor versions may make private changes and break things. Does this seem reasonable?
There are also a number of more minor issues like a few names that don't follow the convention ("cp_bias_coef" and the bounding box functions), and a number of now unused struct fields that I want to remove.
The biggest feature that I have planned for 6.0 is supporting different collision detection broadphases. I've been meaning to do this for a very long time, but it simply never got done. I already have a working dynamic bounding box tree implementation, and have started on a static tree as well. It's not terribly optimized yet, though it does outperform the spatial hash for scenes with < 100 shapes. Additionally, I've made a nice generic API that will allow people to use the spatial indexes easily from their own code. The only downside is that any code that iterates space->activeShapes will break. Even though I tell people not to do it, everyone seems to do it anyway. (sigh)
Are there any other features that people are itching to have in Chipmunk 6.0?