#include "OBAOgreBase.h" namespace OBA { template <> OgreBase* CSingleton::ms_Singleton = NULL; OgreBase* OgreBase::getSingletonPtr(void) { return ms_Singleton; } OgreBase& OgreBase::getSingleton(void) { assert( ms_Singleton ); return ( *ms_Singleton ); } OgreBase::OgreBase() { } OgreBase::~OgreBase() { } Ogre::XMLMeshSerializer* OgreBase::getXMLMeshSerializer() { return mXMLMeshSerializer; } Ogre::MaterialSerializer* OgreBase::getMaterialSerializer() { return mMaterialSerializer; } Ogre::MeshSerializer* OgreBase::getMeshSerializer() { return mMeshSerializer; } void OgreBase::initialize() { mLogManager = new Ogre::LogManager(); mLogManager->createLog("Ogre.log", true, true); mArchiveManager = new Ogre::ArchiveManager(); mResourceGroupManager = new Ogre::ResourceGroupManager(); mMath = new Ogre::Math(); mMeshManager = new Ogre::MeshManager(); mMaterialManager = new Ogre::MaterialManager(); mMaterialManager->initialise(); mMaterialSerializer = new Ogre::MaterialSerializer(); mMeshSerializer = new Ogre::MeshSerializer(); mXMLMeshSerializer = new Ogre::XMLMeshSerializer(); mFileSystemArchiveFactory = new FileSystemArchiveFactory(); Ogre::ArchiveManager::getSingleton().addArchiveFactory( mFileSystemArchiveFactory ); mDefaultHardwareBufferManager = new Ogre::DefaultHardwareBufferManager(); } void OgreBase::shutdown() { if (mArchiveManager) { delete mArchiveManager; } if (mFileSystemArchiveFactory) { delete mFileSystemArchiveFactory; } if (mMeshSerializer) { delete mMeshSerializer; } if (mXMLMeshSerializer) { delete mXMLMeshSerializer; } if (mMaterialSerializer) { delete mMaterialSerializer; } if (mMath) { delete mMath; } if (mMeshManager) { delete mMeshManager; } if (mMaterialManager) { mMaterialManager->removeAll(); delete mMaterialManager; } if (mResourceGroupManager) { delete mResourceGroupManager; } // Not necessary if we have a RenderWindow... if (mDefaultHardwareBufferManager) { delete mDefaultHardwareBufferManager; } if (mLogManager) { delete mLogManager; } } }