Here's another snapshot of the project I'm working on. So far, this is working about as I want - though I left it running for a while just to see what happens, and came back to a massively dropped framerate, so I'm assuming there's something wrong with it.
I'll have to test it more tomorrow, I guess!