I’m updating CVS and the online documentation as I go with the Quake3 level support. I won’t be making another snapshot release until the main Quake3 level features are working, which may be a little while since I’m also in the process of moving house!
So if you want to get a look at what’s going on, browse the online docs or use CVS (you can browse it online here if you don’t have CVS on your machine) to get a preview.
In a nutshell, I’ve created a new module called OgreEngineIndoor which contains all the classes related to indoor rendering. In addition, the Root class (via the SceneManagerEnumerator) will automatically give you a BspSceneManager when you ask for an indoor-type scene, ensuring rendering is specialised for BSP-based levels without you having to know about the internals.
The SceneManager has also gained a new method called setWorldGeometry – this is a generic method which specific specialisations will override depending on their rendering basis (e.g. the BspSceneManager loads a Quake3 level, a LandscapeSceneManager might load a heightfield datafile). It allows me to standardise the SceneManager interface nicely yet still have specifics under the surface. Because the end application never needs to know what specialisation it’s using under the surface, it leaves the way open for better SceneManager subclasses to be added seamlessly without requiring code changes to end applications.