I decided I needed a temporary "floor" so I could see the shadows of objects (as without any depth cues, even I couldn't understand where some of the things were being generated). I dragged out some old water code I had from a previous version of the game where it was much more terrain based, and added a GL backend for it so I could see it on the mac build (which took inordinately longer than it should have, because I always forget you need to use a second texture stage to have texture and CPV at the same time). The water bobs and swells while the texture slowly drifts over the surface - all totally out of place inside a room, but after reading the article on how Ritman wrote the story for Head over Heels, I'm less worried about having a solid explanation for everything I put in up front. I've also turned on labels in the rendering code so I can match up the room that gets generated with the logical puzzle it thinks it's asked for.
Now I certainly don't plan to have every room half full of water, but putting this in reminded me of that awesome Tomb Raider level (The Cistern, I think it was called), where you have to raise and lower the water to get to different parts of the level. I don't think I'm going to force my poor little cow to swim, but maybe if I made certain blocks float on water, I could create some cool puzzles where you need to flood the room to raise a platform up (to either collect something or jump off the floating block to get to another part of the room), and then lower it again to get to the door you submerged when the room was flooded. Yet another thing on my ever expanding todo list (currently sitting at a staggering 2675 lines long).
Other than fixing a nasty bug in my capsule to box collision code that was flooding my physics solver with NaNs, I did put in some initial support for generating blocks inside the puzzle. Adding these made it instantly feel a lot more Head-Over-Heels-ish (which is precisely what I want by the way). It's still pretty stupid about using the blocks: it doesn't know how to ensure you actually need to use the block when navigating the puzzle, and the building code doesn't have a clue how to take blocks into account when laying out the platforms, but it's a good start.