void OgreMeshAsset::operationCompleted(Ogre::BackgroundProcessTicket ticket, const Ogre::BackgroundProcessResult &result) { if (ticket != loadTicket_) return; // Reset to 0 to mark the asynch request is not active anymore. Aborted in Unload() if it is. loadTicket_ = 0; const QString assetRef = Name(); if (!result.error) { ogreMesh = Ogre::MeshManager::getSingleton().getByName(AssetAPI::SanitateAssetRef(assetRef).toStdString(), OgreRenderer::OgreRenderingModule::CACHE_RESOURCE_GROUP); if (!ogreMesh.isNull()) { if (GenerateMeshData()) { assetAPI->AssetLoadCompleted(assetRef); return; } else { LogError("OgreMeshAsset::operationCompleted: asynch load failed in GenerateMeshData - see log above for details."); } } else LogError("OgreMeshAsset::operationCompleted: Ogre::Mesh was null after threaded loading: " + assetRef); } else LogError("OgreMeshAsset::operationCompleted: Ogre failed to do threaded loading: " + result.message); DoUnload(); assetAPI->AssetLoadFailed(assetRef); }
bool AudioAsset::LoadFromRawPCMWavData(const u8 *data, size_t numBytes, bool stereo, bool is16Bit, int frequency) { // Clean up the previous OpenAL audio buffer handle, if old data existed. DoUnload(); #ifndef TUNDRA_NO_AUDIO if (!data || numBytes == 0) { LogError("Null data passed in AudioAsset::LoadFromWavData!"); return false; } if (!CreateBuffer()) return false; ALenum openALFormat; if (stereo && is16Bit) openALFormat = AL_FORMAT_STEREO16; else if (!stereo && is16Bit) openALFormat = AL_FORMAT_MONO16; else if (stereo && !is16Bit) openALFormat = AL_FORMAT_STEREO8; else /* (!stereo && !is16Bit)*/ openALFormat = AL_FORMAT_MONO8; // Copy the new data over. std::vector<u8> tmpData(data, data + numBytes); alBufferData(handle, openALFormat, &tmpData[0], tmpData.size(), frequency); ALenum error = alGetError(); if (error != AL_NONE) { const ALchar unknownError[] = "unknown error"; const ALchar *errorString = alGetString(error); if (!errorString) errorString = unknownError; LogError("Could not set OpenAL sound buffer data: OpenAL error number " + QString::number(error) + ": " + errorString); DoUnload(); return false; } return true; #else return false; #endif }
/// \brief /// Ensures that the resource is unloaded inline void EnsureUnloaded() { if (!IsLoaded()) return; VASSERT(CanUnload()); ///< this should be tested outside this function! DoUnload(); }
void IAsset::Unload() { // LogDebug("IAsset::Unload called for asset \"" + name.toStdString() + "\"."); DoUnload(); emit Unloaded(this); }