I finally got particles up and running in my engine. I derived them from my textured quad class so you can apply any texture you want, tint, size, scale, rotate, etc. Each particle also has a custom aging function that allows you to change it's colour, alpha fade, etc.
Since particles are just regular game objects they are allowed to have children. This opens up possibilities where particles can spawn other particles fairly easily. This makes effects like shrapnel, sparks, etc easy to implement. You still need to do things fairly smartly so you're not actually creating new particles on the fly causing a bunch of memory allocs but that shouldn't be too tough to deal with.
The next step I want to do is to allow you to optionally hook particles into the physics system. This would allow smoke to float away, etc. Performance will be the big issue around how many particles I can have in the physics system at the same time. Rendering perf shouldn't be that big of a deal since I'm just dealing with quads and I already do intelligent batching in my engine.
I'll try to throw together a demo in the next couple of days. Maybe an ugly fireworks display?