After some early experimentation I put together a more formal 'engine' that could be used within generic projects. At some point I need to document the engine using class diagrams and API references, but for the moment here are some simple demos that I created to demonstrate some of its capabilities.