Changeset 782 for code/branches/FICN/src/audio
- Timestamp:
- Jan 1, 2008, 2:00:08 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/FICN/src/audio/_AudioObject.cc
r560 r782 1 1 /* 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 * ORXONOX - the hottest 3D action shooter ever to exist 3 * 4 * 5 * License notice: 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 * Author: 22 * ... 23 * Co-authors: 24 * ... 25 * 26 */ 27 27 28 28 29 29 #include <iostream> 30 30 #include <string> 31 32 #include "core/Debug.h" 31 33 #include "AudioObject.h" 32 #include "../orxonox/core/Debug.h"33 34 34 35 namespace audio 35 36 { 36 37 38 39 40 41 37 AudioObject::AudioObject(std::string audioFile) 38 { 39 audioFile_ = audioFile; 40 SourcePos[0]=0; 41 SourcePos[1]=0; 42 SourcePos[2]=0; 42 43 43 44 45 44 SourceVel[0]=0; 45 SourceVel[1]=0; 46 SourceVel[2]=0; 46 47 47 48 49 48 ListenerPos[0]=0; 49 ListenerPos[1]=0; 50 ListenerPos[2]=0; 50 51 51 52 53 52 ListenerVel[0]=0; 53 ListenerVel[1]=0; 54 ListenerVel[2]=0; 54 55 55 56 57 58 59 60 56 ListenerOri[0]=0; 57 ListenerOri[1]=0; 58 ListenerOri[2]=-1; 59 ListenerOri[3]=0; 60 ListenerOri[4]=1; 61 ListenerOri[5]=0; 61 62 62 63 63 64 // Initialize OpenAL and clear the error bit. 64 65 65 66 66 alutInit(NULL, 0); 67 alGetError(); 67 68 68 69 // Load the wav data. 69 70 70 71 72 71 if(LoadALData() == AL_FALSE) 72 { 73 printf("Error loading sound data."); 73 74 74 75 } 75 76 76 77 78 77 SetListenerValues(); 78 COUT(3) << "Info: Play sone ambient background sound"; 79 } 79 80 80 81 82 83 81 AudioObject::~AudioObject() 82 { 83 KillALData(); 84 } 84 85 85 86 87 88 89 90 91 86 ALboolean AudioObject::LoadALData() 87 { 88 ALenum format; 89 ALsizei size; 90 ALvoid* data; 91 ALsizei freq; 92 ALboolean loop; 92 93 93 94 94 95 alGenBuffers(1, &Buffer); 95 96 96 97 97 if(alGetError() != AL_NO_ERROR) 98 return AL_FALSE; 98 99 99 100 101 100 alutLoadWAVFile((ALbyte*)audioFile_.c_str(), &format, &data, &size, &freq, &loop); 101 alBufferData(Buffer, format, data, size, freq); 102 alutUnloadWAV(format, data, size, freq); 102 103 103 104 alGenSources(1, &Source); 104 105 105 106 106 if(alGetError() != AL_NO_ERROR) 107 return AL_FALSE; 107 108 108 109 110 111 112 113 109 alSourcei (Source, AL_BUFFER, Buffer ); 110 alSourcef (Source, AL_PITCH, 1.0 ); 111 alSourcef (Source, AL_GAIN, 1.0 ); 112 alSourcefv(Source, AL_POSITION, SourcePos); 113 alSourcefv(Source, AL_VELOCITY, SourceVel); 114 alSourcei (Source, AL_LOOPING, loop ); 114 115 115 116 116 if(alGetError() == AL_NO_ERROR) 117 return AL_TRUE; 117 118 118 119 119 120 120 return AL_FALSE; 121 } 121 122 122 123 124 125 126 127 123 void AudioObject::SetListenerValues() 124 { 125 alListenerfv(AL_POSITION, ListenerPos); 126 alListenerfv(AL_VELOCITY, ListenerVel); 127 alListenerfv(AL_ORIENTATION, ListenerOri); 128 } 128 129 129 130 131 132 133 134 130 void AudioObject::KillALData() 131 { 132 alDeleteBuffers(1, &Buffer); 133 alDeleteSources(1, &Source); 134 alutExit(); 135 } 135 136 136 void AudioObject::play() 137 { 138 alSourcePlay(Source); 137 void AudioObject::play() 138 { 139 alSourcePlay(Source); 140 } 139 141 140 }141 142 } 142
Note: See TracChangeset
for help on using the changeset viewer.