#include "BBCManager.h" namespace BBC { template <> BBCManager* CSingleton::ms_Singleton = NULL; BBCManager* BBCManager::getSingletonPtr(void) { return ms_Singleton; } BBCManager& BBCManager::getSingleton(void) { assert( ms_Singleton ); return ( *ms_Singleton ); } BBCManager::BBCManager() { } BBCManager::~BBCManager() { } void BBCManager::shutdown() { } void BBCManager::initialize() { } Ogre::Mesh* BBCManager::loadMesh(Ogre::String folderName, Ogre::String fileName) { //std::ifstream ifs; //ifs.open(Ogre::String(folderName + fileName).c_str(), std::ios_base::in | std::ios_base::binary); //Ogre::DataStreamPtr stream(new Ogre::FileStreamDataStream(folderName + fileName, &ifs, false)); //Ogre::MeshPtr mesh = OBA::OgreBase::getSingleton().getMeshManager()->create(fileName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); //OBA::OgreBase::getSingleton().getMeshSerializer()->importMesh(stream, mesh.getPointer()); Ogre::ResourceGroupManager::getSingleton().addResourceLocation(folderName, "FileSystem", fileName, false); Ogre::MeshPtr mesh = Ogre::MeshManager::getSingleton().load(fileName, fileName); return mesh.getPointer(); } Ogre::Mesh* BBCManager::loadXMLMesh(Ogre::String name) { Ogre::MeshPtr newMesh = Ogre::MeshManager::getSingleton().createManual(name.substr(0,((name.size()-1)-4)),Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); Ogre::VertexElementType colourElementType; if (true) { // DirectX Colour Format colourElementType = Ogre::VET_COLOUR_ARGB; } else { // OpenGL Colour Format colourElementType = Ogre::VET_COLOUR_ABGR; } OBA::OgreBase::getSingleton().getXMLMeshSerializer()->importMesh(name, colourElementType, newMesh.getPointer()); return newMesh.getPointer(); } void BBCManager::saveMesh(Ogre::String name) { Ogre::MeshPtr meshPtr = Ogre::MeshManager::getSingleton().getByName(name); OBA::OgreBase::getSingleton().getMeshSerializer()->exportMesh(meshPtr.getPointer(),name); } void BBCManager::saveXMLMesh(Ogre::String name) { Ogre::MeshPtr meshPtr = Ogre::MeshManager::getSingleton().getByName(name); OBA::OgreBase::getSingleton().getXMLMeshSerializer()->exportMesh(meshPtr.getPointer(),name + ".xml"); } void BBCManager::saveMaterial(Ogre::String materialName) { Ogre::ResourceManager::ResourceMapIterator it = Ogre::MaterialManager::getSingleton().getResourceIterator(); while (it.hasMoreElements()) { Ogre::MaterialPtr m = it.getNext(); if (m->getName() == materialName) { OBA::OgreBase::getSingleton().getMaterialSerializer()->queueForExport(m); break; } } //OBA::OgreBase::getSingleton().getMaterialSerializer()->exportQueued(dest); } }