/* bool MeshUnloadTask::mainThreadUnload(String name) { Ogre::MeshManager::getSingleton().unload(name); // operationCompleted(Ogre::BackgroundProcessTicket(), Ogre::BackgroundProcessResult()); return false; } */ void MeshUnloadTask::doRun() { /*I REALLY wish this were true*/ // SequentialWorkQueue::getSingleton().queueWork(std::tr1::bind(&MeshUnloadTask::mainThreadUnload, this, mHash)); String hash = mHash; //CDNArchive::canonicalMhashName(mHash); Ogre::MeshManager* meshManager = Ogre::MeshManager::getSingletonPtr(); meshManager->remove(hash); Ogre::ResourcePtr meshResource = meshManager->getByName(hash); assert(meshResource.isNull()); SharedResourcePtr resource = mResource.lock(); if (resource) resource->unloaded(true, mEpoch); }
void ExteriorCellRender::insertMesh(const std::string &mesh, Ogre::Vector3 vec, Ogre::Vector3 axis, Ogre::Radian angle, std::string sceneNodeName, std::string sceneParent[], int elements, bool translateFirst){ assert (mInsert); //mInsert-> Ogre::SceneNode *parent = mInsert; for (int i = 0; i < elements; i++){ if(sceneParent[i] != "" && parent->getChild(sceneParent[i])) parent = dynamic_cast<Ogre::SceneNode*> (parent->getChild(sceneParent[i])); } mNpcPart = parent->createChildSceneNode(sceneNodeName); MeshPtr good2 = NifOgre::NIFLoader::load(mesh); MovableObject *ent = mScene.getMgr()->createEntity(mesh); if(translateFirst){ mNpcPart->translate(vec); mNpcPart->rotate(axis, angle); } else{ mNpcPart->rotate(axis, angle); mNpcPart->translate(vec); } mNpcPart->attachObject(ent); Ogre::MeshManager *m = MeshManager::getSingletonPtr(); const std::string beast1 ="meshes\\b\\B_N_Khajiit_F_Skins.nif"; const std::string beast2 ="meshes\\b\\B_N_Khajiit_M_Skins.nif"; const std::string beast3 ="meshes\\b\\B_N_Argonian_F_Skins.nif"; const std::string beast4 ="meshes\\b\\B_N_Argonian_M_Skins.nif"; const std::string beasttail1 ="tail\\b\\B_N_Khajiit_F_Skins.nif"; const std::string beasttail2 ="tail\\b\\B_N_Khajiit_M_Skins.nif"; const std::string beasttail3 ="tail\\b\\B_N_Argonian_F_Skins.nif"; const std::string beasttail4 ="tail\\b\\B_N_Argonian_M_Skins.nif"; const std::string beastfoot1 ="foot\\b\\B_N_Khajiit_F_Skins.nif"; const std::string beastfoot2 ="foot\\b\\B_N_Khajiit_M_Skins.nif"; const std::string beastfoot3 ="foot\\b\\B_N_Argonian_F_Skins.nif"; const std::string beastfoot4 ="foot\\b\\B_N_Argonian_M_Skins.nif"; if(mesh.compare(beast1) == 0 && m->getByName(beasttail1).isNull()) { //std::cout << "CLONINGKHAJIITF\n"; good2->reload(); MeshPtr tail = good2->clone(beasttail1); good2->reload(); MeshPtr foot = good2->clone(beastfoot1); good2->reload(); } else if(mesh.compare(beast2) == 0 && m->getByName(beasttail2).isNull()) { //std::cout << "CLONINGKHAJIITM\n"; good2->reload(); MeshPtr tail = good2->clone(beasttail2); good2->reload(); MeshPtr foot = good2->clone(beastfoot2); good2->reload(); } else if(mesh.compare(beast3) == 0 && m->getByName(beasttail3).isNull()) { //std::cout << "CLONINGARGONIANF\n"; good2->reload(); MeshPtr tail = good2->clone(beasttail3); good2->reload(); MeshPtr foot = good2->clone(beastfoot3); good2->reload(); } else if(mesh.compare(beast4) == 0 && m->getByName(beasttail4).isNull()) { //std::cout << "CLONINGARGONIANM\n"; good2->reload(); MeshPtr tail = good2->clone(beasttail4); good2->reload(); MeshPtr foot = good2->clone(beastfoot4); good2->reload(); } }