So far so good - the basic framework for the scenegraph has been put into place, and the high-level render algorithm is more or less fully stubbed in. I'm about 80% of the way through reimplementing camera abstractions; part of the nasty work is moving away from treating cameras as scenegraph nodes and making them separate entities. (Sometime when I rally some energy and English writing ability I'll do another Real World Gamedev entry on why I made that decision.)
One of the big blocks of functionality left to reimplement is our internal scene buffer/soft-instancing mechanism. It's currently woven quite deeply into the data structures and code for the scenegraph, although ideally it should be a separate module that the scenegraph nodes themselves are totally unaware of. Decoupling and reimplementing that system will be a big step towards getting the camera logic finished.
Once that's done, I really just have to stub in render delegation calls to each scenegraph node; I'll come back through when I implement the rest of the scenegraph classes and have each node class do the correct "stuff" when it is Render()ed. Then the fun bit will be making sure the camera transformation pipeline is still sane, and the camera logic will basically be done.
Wheeze! This is a heck of a project, but at least progress is steady and still on target. Things are already looking a lot cleaner (and a fair bit more efficient) so morale is still good.
I also got ahold of my Frisco Melt (if you know why I mention that, you spend too much time on GDNet) and so I'm very happy.
Off to relax a bit, and then dive back into the code.