Cannot walk INSIDE buildings.

If I recall correctly, Roaming Ralph does this by checking the name of the first collision on the part of the terrain ray, and, if said collision is not with the terrain, resetting the character’s position.

[edit]
For a brief description of what I believe is happening, take a look at my last post in this thread.
[/edit]

On the other hand, I suspect that I’d more likely have two collision techniques:

  1. Terrain height
    The Roaming Ralph system, used only for setting the character’s z-coordinate (and possibly replaced by another system depending on my circumstances - I seem to recall that GeoMipTerrain could simply fetch the z-coordinate for a given x and y, for example).

  2. Obstacles
    A collision sphere attached to the character and controlled by a CollisionHandlerPusher, set to collide only with non-terrain obstacles.

The various types of collision object - terrain, obstacle and any others that you might have - are then distinguished using bitmasks (for which see this manual page).