|
From: Seb <whi...@us...> - 2004-10-22 19:27:04
|
Update of /cvsroot/epfl/tgengine-0.1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26919 Modified Files: soundmanager.cc soundmanager.h Log Message: Une seule methode pour ajouter un son que ce soit un ogg ou un wav, detection automatique ! Plus une nouvelle methode qui parse un fichier et ajoute au sound manager tous les sons demande ! Index: soundmanager.cc =================================================================== RCS file: /cvsroot/epfl/tgengine-0.1/soundmanager.cc,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** soundmanager.cc 16 Oct 2004 15:26:48 -0000 1.10 --- soundmanager.cc 22 Oct 2004 19:26:55 -0000 1.11 *************** *** 72,75 **** --- 72,77 ---- Engine::pVarManager->AddVar("sound", 1); enable = &Engine::pVarManager->GetVar("sound")->intValue; + + ParseSoundFile("data/sounds/file.snd"); } *************** *** 78,84 **** int SoundManager::MainLoop(void* arg) { ! bool done = false; int* check; ! while (!done) { --- 80,86 ---- int SoundManager::MainLoop(void* arg) { ! bool done = false; int* check; ! while (!done) { *************** *** 90,94 **** pSoundManager->EnableSoundManager(); ! SDL_Delay(80); } --- 92,96 ---- pSoundManager->EnableSoundManager(); ! SDL_Delay(80); } *************** *** 155,159 **** } ! // Creat a new buffer for a sound ALuint SoundManager::LoadWavALBuffer(char path[40]) { --- 157,207 ---- } ! // Add a Wav or Ogg sound to the sounds list ! void SoundManager::AddSound(string name, bool relative,bool looping) ! { ! string ogg_tmp_name, wav_tmp_name; ! char *ogg_path, *wav_path; ! ! try ! { ! #ifdef SOUND_DEBUG ! cout << "OpenAL:: AddSound: " << name << endl; ! #endif ! ! wav_tmp_name = "data/sounds/"+name+".wav"; ! ogg_tmp_name = "data/sounds/"+name+".ogg"; ! ! ogg_path = (char*) ogg_tmp_name.c_str(); ! wav_path = (char*) wav_tmp_name.c_str(); ! ! if (fopen(ogg_path, "rb") != NULL) ! { ! SoundList[name] = LoadOggALSample("data/sounds/"+name+".ogg", looping); ! ! if(relative) ! alSourcei(SoundList[name],AL_SOURCE_RELATIVE,AL_TRUE); ! } ! else if (fopen(wav_path, "rb") != NULL) ! { ! SoundList[name] = LoadWavALSample("data/sounds/"+name+".wav", looping); ! ! if(relative) ! alSourcei(SoundList[name],AL_SOURCE_RELATIVE,AL_TRUE); ! } ! else ! { ! cerr << "OpenAL:: Cannot find " << name << " for reading..." << endl; ! } ! ! } ! catch(string err) ! { ! cerr << "OpenAL error: " << err.c_str() << endl; ! } ! ! LoadedFiles.clear(); ! } ! ! // Create a new buffer for a sound ALuint SoundManager::LoadWavALBuffer(char path[40]) { *************** *** 281,324 **** return source; } - - // Add a Wav sound to the sounds list - void SoundManager::AddWAV(string name, bool relative,bool looping) - { - FILE *f; - string tmp_name; - char *path; - - try - { - #ifdef SOUND_DEBUG - cout << "OpenAL:: AddWAV: " << name << endl; - #endif - - tmp_name = "data/sounds/"+name+".wav"; - - path = (char*) tmp_name.c_str(); - - f = fopen(path, "rb"); - - if (f == NULL) - { - cerr << "OpenAL:: Cannot open " << tmp_name << " for reading..." << endl; - } - else - { - SoundList[name] = LoadWavALSample("data/sounds/"+name+".wav", looping); - - if(relative) - alSourcei(SoundList[name],AL_SOURCE_RELATIVE,AL_TRUE); - } - - } - catch(string err) - { - cerr << "OpenAL error: " << err.c_str() << endl; - } - - LoadedFiles.clear(); - } // Creat a new buffer for a sound --- 329,332 ---- *************** *** 432,475 **** } - // Add a Wav sound to the sounds list - void SoundManager::AddOGG(string name, bool relative,bool looping) - { - FILE *f; - string tmp_name; - char *path; - - try - { - #ifdef SOUND_DEBUG - cout << "OpenAL:: AddOGG: " << name << endl; - #endif - - tmp_name = "data/sounds/"+name+".ogg"; - - path = (char*) tmp_name.c_str(); - - f = fopen(path, "rb"); - - if (f == NULL) - { - cerr << "OpenAL:: Cannot open " << tmp_name << " for reading..." << endl; - } - else - { - SoundList[name] = LoadOggALSample("data/sounds/"+name+".ogg", looping); - - if(relative) - alSourcei(SoundList[name],AL_SOURCE_RELATIVE,AL_TRUE); - } - - } - catch(string err) - { - cerr << "OpenAL:: Error: " << err.c_str() << endl; - } - - LoadedFiles.clear(); - } - // This function loads a .ogg file into a memory buffer and returns the format and frequency. void SoundManager::LoadOGG(char *fileName, vector<char> &buffer, ALenum &format, ALsizei &freq) --- 440,443 ---- *************** *** 654,657 **** --- 622,651 ---- } + // Parse a sound file + void SoundManager::ParseSoundFile (char* filename) + { + ifstream file; + char buffer [1024]; + + file.open (filename, ios::in); + if (file.fail()) + { + cerr << "OpenAL:: Cannot parse SoundFile: " << filename << endl; + return; + } + + // Read each line + while (!file.eof()) + { + file.getline(buffer, 1024); + AddSound(buffer,false,false); + + while (buffer.find("numbones") == std::string::npos) + file >> buffer; + + file >> numBones; + } + } + // Handling Errors string SoundManager::GetALErrorString(ALenum err) Index: soundmanager.h =================================================================== RCS file: /cvsroot/epfl/tgengine-0.1/soundmanager.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** soundmanager.h 16 Oct 2004 15:26:48 -0000 1.5 --- soundmanager.h 22 Oct 2004 19:26:55 -0000 1.6 *************** *** 52,57 **** SoundManager(); ! void AddWAV(string name, bool relative,bool looping); ! void AddOGG(string name, bool relative,bool looping); bool CheckSound(string name); --- 52,56 ---- SoundManager(); ! void AddSound(string name, bool relative,bool looping); bool CheckSound(string name); *************** *** 96,99 **** --- 95,100 ---- void LoadOGG(char *fileName, vector<char> &buffer, ALenum &format, ALsizei &freq); + void ParseSoundFile (char* filename); + vector<string> LoadedFiles; // Holds loaded file paths temporarily. vector<ALuint> Buffers; // Holds all loaded buffers. |