The trick was to seperate out the X and Z movement into single steps, which was pretty trivial, so I could do the same style of collision response I've used in 2D games in the past. I believe this is called "seperated axis" collision response or something. Who cares. It works really well.
I'm starting to think about writing some kind of editor to put single horizontal plane levels together. There really is no need to be restricted to orthagonal tiles (ooh, get me using the posh words [smile]) any more.
I figure I could put together levels consisting of arbitrary rectangular shapes on the horizontal plane that could even be extended upwards to arbitrary heights, then maintain a vector of the horizontal rectangle areas for fast searching. The collision system I've developed tonight would work just as well with a vector of arbitrary rectangles as it would with a grid-based map (better in some ways, since anchoring to walls on collision would be simpler) and would allow for very flexible environments within the single plane constraint.
Probably have to write the editor with Direct3D so will have to roll out some kind of simple GUI. Actually, the next thing I really need to suss out is how to draw flat GUI elements on top of a 3D screen, which I guess will just be a case of rendering quads but setting the projection matrix up differently first or something. I'll figure it out.
I'm aware there are probably perfectly good free third party editors available, but I find there is nothing like projects like these to cement my understanding of stuff.
So no screenys tonight, since there have been no graphical changes to last nights progress. If you need a screeny fix, may I heartily recommend Milkshake's journal since the graphics are gorgeous and there is some very innovative stuff going on over there at the moment with some very ambitious procedurally generated environments.
That is all (for now).
[EDIT] So I lied about screenshots.
I decided to have a quad per floor tile instead of one big texture for the floor. I've also added a ceiling and changed the fog colour to black. Don't know why really. Just messing about.