|
@@ -30,8 +30,7 @@ Sound::Sound()
|
30
|
30
|
{
|
31
|
31
|
mSource[0] = 0;
|
32
|
32
|
mBuffer[0] = 0;
|
33
|
|
- mNextBuffer = 0;
|
34
|
|
- mNextSource = 0;
|
|
33
|
+ mNext = 0;
|
35
|
34
|
mInit = false;
|
36
|
35
|
}
|
37
|
36
|
|
|
@@ -92,9 +91,10 @@ void Sound::sourceAt(int source, float pos[3])
|
92
|
91
|
{
|
93
|
92
|
assert(mInit == true);
|
94
|
93
|
assert(source >= 0);
|
|
94
|
+ assert(source < mNext);
|
95
|
95
|
assert(pos != NULL);
|
96
|
96
|
|
97
|
|
- alSourcefv(mSource[source-1], AL_POSITION, pos);
|
|
97
|
+ alSourcefv(mSource[source], AL_POSITION, pos);
|
98
|
98
|
}
|
99
|
99
|
|
100
|
100
|
|
|
@@ -115,7 +115,7 @@ int Sound::addFile(const char *filename, int *source, unsigned int flags)
|
115
|
115
|
|
116
|
116
|
alGetError();
|
117
|
117
|
|
118
|
|
- alGenBuffers(1, &mBuffer[mNextBuffer]);
|
|
118
|
+ alGenBuffers(1, &mBuffer[mNext]);
|
119
|
119
|
|
120
|
120
|
if (alGetError() != AL_NO_ERROR)
|
121
|
121
|
{
|
|
@@ -125,7 +125,7 @@ int Sound::addFile(const char *filename, int *source, unsigned int flags)
|
125
|
125
|
|
126
|
126
|
alGetError();
|
127
|
127
|
|
128
|
|
- alGenSources(1, &mSource[mNextSource]);
|
|
128
|
+ alGenSources(1, &mSource[mNext]);
|
129
|
129
|
|
130
|
130
|
if (alGetError() != AL_NO_ERROR)
|
131
|
131
|
{
|
|
@@ -143,19 +143,16 @@ int Sound::addFile(const char *filename, int *source, unsigned int flags)
|
143
|
143
|
return -3;
|
144
|
144
|
}
|
145
|
145
|
|
146
|
|
- alBufferData(mBuffer[mNextBuffer], format, data, size, static_cast<ALsizei>(freq));
|
|
146
|
+ alBufferData(mBuffer[mNext], format, data, size, static_cast<ALsizei>(freq));
|
147
|
147
|
|
148
|
|
- alSourcei(mSource[mNextSource], AL_BUFFER, mBuffer[mNextBuffer]);
|
|
148
|
+ alSourcei(mSource[mNext], AL_BUFFER, mBuffer[mNext]);
|
149
|
149
|
|
150
|
150
|
if (flags & SoundFlagsLoop)
|
151
|
151
|
{
|
152
|
|
- alSourcei(mSource[mNextSource], AL_LOOPING, 1);
|
|
152
|
+ alSourcei(mSource[mNext], AL_LOOPING, 1);
|
153
|
153
|
}
|
154
|
154
|
|
155
|
|
- ++mNextBuffer;
|
156
|
|
- ++mNextSource;
|
157
|
|
-
|
158
|
|
- *source = mNextBuffer;
|
|
155
|
+ *source = mNext++;
|
159
|
156
|
|
160
|
157
|
return 0;
|
161
|
158
|
}
|
|
@@ -178,7 +175,7 @@ int Sound::addWave(unsigned char *wav, unsigned int length, int *source, unsigne
|
178
|
175
|
|
179
|
176
|
alGetError();
|
180
|
177
|
|
181
|
|
- alGenBuffers(1, &mBuffer[mNextBuffer]);
|
|
178
|
+ alGenBuffers(1, &mBuffer[mNext]);
|
182
|
179
|
|
183
|
180
|
if (alGetError() != AL_NO_ERROR)
|
184
|
181
|
{
|
|
@@ -188,7 +185,7 @@ int Sound::addWave(unsigned char *wav, unsigned int length, int *source, unsigne
|
188
|
185
|
|
189
|
186
|
alGetError();
|
190
|
187
|
|
191
|
|
- alGenSources(1, &mSource[mNextSource]);
|
|
188
|
+ alGenSources(1, &mSource[mNext]);
|
192
|
189
|
|
193
|
190
|
if (alGetError() != AL_NO_ERROR)
|
194
|
191
|
{
|
|
@@ -197,7 +194,7 @@ int Sound::addWave(unsigned char *wav, unsigned int length, int *source, unsigne
|
197
|
194
|
}
|
198
|
195
|
|
199
|
196
|
//AL_FORMAT_WAVE_EXT does not exist on Mac!"
|
200
|
|
- // alBufferData(mBuffer[mNextBuffer], AL_FORMAT_WAVE_EXT, data, size, freq);
|
|
197
|
+ // alBufferData(mBuffer[mNext], AL_FORMAT_WAVE_EXT, data, size, freq);
|
201
|
198
|
// Idea: Fill Buffer with
|
202
|
199
|
// alutLoadMemoryFromFileImage
|
203
|
200
|
// (const ALvoid *data, ALsizei length, ALenum *format, ALsizei *size, ALfloat *frequency)
|
|
@@ -210,19 +207,16 @@ int Sound::addWave(unsigned char *wav, unsigned int length, int *source, unsigne
|
210
|
207
|
}
|
211
|
208
|
|
212
|
209
|
|
213
|
|
- alBufferData(mBuffer[mNextBuffer], format, data, size, static_cast<ALsizei>(freq));
|
|
210
|
+ alBufferData(mBuffer[mNext], format, data, size, static_cast<ALsizei>(freq));
|
214
|
211
|
|
215
|
|
- alSourcei(mSource[mNextSource], AL_BUFFER, mBuffer[mNextBuffer]);
|
|
212
|
+ alSourcei(mSource[mNext], AL_BUFFER, mBuffer[mNext]);
|
216
|
213
|
|
217
|
214
|
if (flags & SoundFlagsLoop)
|
218
|
215
|
{
|
219
|
|
- alSourcei(mSource[mNextSource], AL_LOOPING, 1);
|
|
216
|
+ alSourcei(mSource[mNext], AL_LOOPING, 1);
|
220
|
217
|
}
|
221
|
218
|
|
222
|
|
- ++mNextBuffer;
|
223
|
|
- ++mNextSource;
|
224
|
|
-
|
225
|
|
- *source = mNextBuffer;
|
|
219
|
+ *source = mNext++;
|
226
|
220
|
|
227
|
221
|
//! \fixme Should free alut buffer?
|
228
|
222
|
|
|
@@ -234,8 +228,9 @@ void Sound::play(int source)
|
234
|
228
|
{
|
235
|
229
|
assert(mInit == true);
|
236
|
230
|
assert(source >= 0);
|
|
231
|
+ assert(source < mNext);
|
237
|
232
|
|
238
|
|
- alSourcePlay(mSource[source-1]);
|
|
233
|
+ alSourcePlay(mSource[source]);
|
239
|
234
|
}
|
240
|
235
|
|
241
|
236
|
|
|
@@ -243,7 +238,8 @@ void Sound::stop(int source)
|
243
|
238
|
{
|
244
|
239
|
assert(mInit == true);
|
245
|
240
|
assert(source >= 0);
|
|
241
|
+ assert(source < mNext);
|
246
|
242
|
|
247
|
|
- alSourceStop(mSource[source-1]);
|
|
243
|
+ alSourceStop(mSource[source]);
|
248
|
244
|
}
|
249
|
245
|
|