realXtend/naali — pull request #549 by Stinkfist0 (2012-10-30 10:20:45+00:00)
Title: TundraCore

Introducing TundraCore: Asset, Audio, Console, Framework, Input, Scene, and Ui static libraries now combined into one dynamic library, TundraCore. Also while on the subject of leaner and meaner Tundra core, SceneInteract is now its own plugin (we don't want hardcoded application logic running in each scene) and Billboard, ParticleSystem (both core Ogre features), Sky, Fog, and EnvironmentLight (all of these four handle core Ogre::SceneManager functionality) ECs are moved to OgreRenderingModule.

As the result, depending on the case, the resulting plugin DLL's size can be even three times smaller compared to the non-TundraCore approach. Comparison done using RelWithDebInfo build configuration. Alternatively, TundraCore can be built as a single static library by setting TUDRACORE_SHARED to 0 in the root CMakeLists.txt. The Tundra build (especially linking) and Tundra startup times seem to be also faste
The TundraCore source folder has the original libraries' sources in their own subdirectories. UseTundraCore() CMake macro can be used to to include all of the TundraCore subdirectories to your project in order to include the files using the shorter include path (f.ex. "Ui/UiAPI.h" vs. "UiApi.h").

Note: For now the Color class resides in Math library due to problematic nature of shared library and compile-time MATH_OGRE_INTEROP feature which creates dependency to Ogre and we don't want TundraCore to have Ogre dependency. Also note that, for now at least, Math, kNet and Qt needs to be linked explicitly to the project in most cases.