I’ve added another dynamic loading related feature to the current development version of Ogre (those of you using CVS will see this right away, others will see this in the next snapshot) – engine plugins.
It’s a pretty standard concept – developers extending Ogre can provide extra .dlls which are loaded at runtime and can do pretty much anything they like to add new features or customise the default behaviour of the engine. Plugins can call anything an application can, but they all get loaded at startup so any applicatin preference overrides plugin settings if they clash.
This will allow me (or anybody else) to add almost ANY new feature to engine without needing a recompile of the core dll or any apps using it.
To enable you to have plugins used for some apps but not others, a plugins.cfg config file lets you define the plugins you actually want loaded for each application. Thus in the examples, the Quake3 engine example loads the ‘OgreBspSceneManager.dll’ plugin, but none of the others do.
I just have a few more bugs to iron out with the new dll structure and I will be releasing another snapshot imminently.