Take a look at my two camera codes that I contributed. They are very simple. What you then do is have an entity and have the camera c_trace it like I did the player. If there is something between the camera and the object you can just have it zoom in. Altough xartor's idea will work, it seems like your will need to clamp every single room, which might suck for you
