#ifndef _OBAOGREBASE_H #define _OBAOGREBASE_H #include #include namespace OBA { /** Specialisation of ArchiveFactory for FileSystem files. */ class _OBAExport FileSystemArchiveFactory : public Ogre::ArchiveFactory { public: virtual ~FileSystemArchiveFactory() {} /// @copydoc FactoryObj::getType const Ogre::String& getType(void) const { static Ogre::String name = "FileSystem"; return name; } /// @copydoc FactoryObj::createInstance Ogre::Archive *createInstance( const Ogre::String& name ) { return new Ogre::FileSystemArchive(name, "FileSystem"); } /// @copydoc FactoryObj::destroyInstance void destroyInstance( Ogre::Archive* arch) { delete arch; } }; class _OBAExport OgreBase: public CSingleton { protected: Ogre::ArchiveManager *mArchiveManager; Ogre::ResourceGroupManager *mResourceGroupManager; Ogre::DefaultHardwareBufferManager *mDefaultHardwareBufferManager; Ogre::MeshSerializer *mMeshSerializer; Ogre::MaterialSerializer *mMaterialSerializer; Ogre::XMLMeshSerializer *mXMLMeshSerializer; Ogre::MaterialManager *mMaterialManager; Ogre::LogManager *mLogManager; Ogre::MeshManager *mMeshManager; FileSystemArchiveFactory *mFileSystemArchiveFactory; Ogre::Math *mMath; public: static OgreBase& getSingleton(void); static OgreBase* getSingletonPtr(void); OgreBase(); ~OgreBase(); Ogre::XMLMeshSerializer* getXMLMeshSerializer(); Ogre::MaterialSerializer* getMaterialSerializer(); Ogre::MeshSerializer* getMeshSerializer(); void initialize(); void shutdown(); }; } #endif