Browse Source

Fixed offset sound ids

Thomas Buck 10 years ago
parent
commit
7e6f80090c
2 changed files with 24 additions and 29 deletions
  1. 4
    5
      include/Sound.h
  2. 20
    24
      src/Sound.cpp

+ 4
- 5
include/Sound.h View File

@@ -82,11 +82,10 @@ public:
82 82
     void stop(int source);
83 83
 
84 84
 private:
85
-    bool mInit;                    //!< Guard to ensure ausio system is active
86
-    unsigned int mBuffer[256];     //!< Audio buffer id list
87
-    unsigned int mSource[256];     //!< Audio source id list
88
-    unsigned int mNextBuffer;      //!< Audio buffer id cursor
89
-    unsigned int mNextSource;      //!< Audio source id cursor
85
+    bool mInit;                //!< Guard to ensure ausio system is active
86
+    unsigned int mBuffer[256]; //!< Audio buffer id list
87
+    unsigned int mSource[256]; //!< Audio source id list
88
+    int mNext;                 //!< Audio id cursor
90 89
 };
91 90
 
92 91
 #endif

+ 20
- 24
src/Sound.cpp View File

@@ -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
 

Loading…
Cancel
Save