AudioSamplePtr ETHAudioResourceManager::AddFile( AudioPtr audio, const Platform::FileIOHubPtr& fileIOHub, const str_type::string& path, const Audio::SAMPLE_TYPE type) { if (!m_resource.empty()) { str_type::string fileName = Platform::GetFileName(path); std::map<str_type::string, AudioSamplePtr>::iterator iter = m_resource.find(fileName); if (iter != m_resource.end()) return iter->second; } AudioSamplePtr pSample; str_type::string fixedName(path); Platform::FixSlashes(fixedName); if (!(pSample = audio->LoadSampleFromFile(fixedName, fileIOHub->GetFileManager(), type))) { pSample.reset(); ETH_STREAM_DECL(ss) << GS_L("(Not loaded) \"") << fixedName << GS_L("\""); ETHResourceProvider::Log(ss.str(), Platform::Logger::ERROR); return AudioSamplePtr(); } //#if defined(_DEBUG) || defined(DEBUG) str_type::string fileName = Platform::GetFileName(path); ETH_STREAM_DECL(ss) << GS_L("(Loaded) ") << fileName; ETHResourceProvider::Log(ss.str(), Platform::Logger::INFO); //#endif m_resource[fileName] = pSample; return pSample; }
void ETHEngine::Start(VideoPtr video, InputPtr input, AudioPtr audio) { Platform::FileIOHubPtr fileIOHub = video->GetFileIOHub(); ETHAppEnmlFile file(fileIOHub->GetResourceDirectory() + ETH_APP_PROPERTIES_FILE, fileIOHub->GetFileManager(), video->GetPlatformName()); m_richLighting = file.IsRichLightingEnabled(); m_provider = ETHResourceProviderPtr(new ETHResourceProvider( ETHGraphicResourceManagerPtr(new ETHGraphicResourceManager(file.GetDensityManager())), ETHAudioResourceManagerPtr(new ETHAudioResourceManager()), ETHShaderManagerPtr(new ETHShaderManager(video, fileIOHub->GetStartResourceDirectory() + ETHDirectories::GetShaderDirectory(), m_richLighting)), video, audio, input, fileIOHub, false)); m_ethInput.SetProvider(m_provider); CreateDynamicBackBuffer(file); if (!m_pASEngine) { video->SetBGColor(gs2d::constant::BLACK); if (!PrepareScriptingEngine(file.GetDefinedWords())) { Abort(); return; } if (m_compileAndRun) { if (!RunMainFunction(GetMainFunctionId())) { Abort(); return; } video->EnableQuitShortcuts(true); m_v2LastCamPos = video->GetCameraPos(); } } else { video->SetBGColor(m_lastBGColor); m_pScene->RecoverResources(); } }