]> git.jsancho.org Git - lugaru.git/commitdiff
Prepare to cleanup sound emission
authorAlexander Monakov <amonakov@gmail.com>
Tue, 28 Dec 2010 22:42:20 +0000 (01:42 +0300)
committerAlexander Monakov <amonakov@gmail.com>
Tue, 28 Dec 2010 22:42:20 +0000 (01:42 +0300)
Source/Game.cpp
Source/Globals.cpp
Source/Sounds.cpp
Source/Sounds.h
Source/openal_wrapper.cpp
Source/openal_wrapper.h

index d68ee1154e7320edde2216daa4e90067d06f0871..0751da011ff12a886863ecb6c0aec0dd0dea8f36 100644 (file)
@@ -218,12 +218,7 @@ typedef struct {
 } params_thread;
 
 void Game::fireSound(int sound) {
-       float gLoc[3]={0,0,0};
-       float vel[3]={0,0,0};
-       PlaySoundEx( sound, samp[sound], NULL, true);
-       OPENAL_3D_SetAttributes(channels[sound], gLoc, vel);
-       OPENAL_SetVolume(channels[sound], 256);
-       OPENAL_SetPaused(channels[sound], false);
+       emit_sound_at(sound);
 }
 
 void Game::inputText(char* str, int* charselected, int* nb_chars) {
index 30065b40f1e36201ec416df39dfcadb4a510d781..901ac1afe90f18d84fa9500969187bb144c6d6bf 100644 (file)
@@ -39,7 +39,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include "Animation.h"
 
 bool visibleloading = 0;
-int channels[100] = {0};
 
 float volume = 0;
 bool ismotionblur = 0;
index c82f42ed3a4a58a5ccb10b5fcd3dfe29eba50cde..9cedebc02350f897b86b842352221010c3df941c 100644 (file)
@@ -19,6 +19,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 
+#include "Quaternions.h"
 #include "Sounds.h"
 #include "openal_wrapper.h"
 
@@ -26,6 +27,8 @@ struct OPENAL_SAMPLE *samp[sounds_count];
 
 int footstepsound, footstepsound2, footstepsound3, footstepsound4;
 
+int channels[100];
+
 static const char *sound_data[sounds_count] = {
 #define DECLARE_SOUND(id, filename) filename,
 #include "Sounds.def"
@@ -70,3 +73,12 @@ void loadAllSounds()
     OPENAL_Stream_SetMode(samp[i], OPENAL_LOOP_NORMAL);
 }
 
+void
+emit_sound_at(int soundid, const XYZ &pos, float vol)
+{
+  PlaySoundEx (soundid, samp[soundid], NULL, true);
+  OPENAL_3D_SetAttributes_ (channels[soundid], pos, NULL);
+  OPENAL_SetVolume (channels[soundid], vol);
+  OPENAL_SetPaused (channels[soundid], false);
+}
+
index 8feac33951dcf4d0d113f2e7281f442eed627133..12d36601e6616ab1130dd3aea3e1ad5b0129f472 100644 (file)
@@ -33,5 +33,7 @@ extern struct OPENAL_SAMPLE *samp[sounds_count];
 
 extern void loadAllSounds();
 
+extern void emit_sound_at(int soundid, const XYZ &pos = XYZ(), float vol = 256.f);
+
 extern int footstepsound, footstepsound2, footstepsound3, footstepsound4;
 #endif
index c3849a859f9cb7fce9042030e639301e17a4a957..3d9021f006e86e4bb929623433541f92c43a7a17 100644 (file)
@@ -25,6 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include <stdlib.h>
 #include <string.h>
 
+#include "Quaternions.h"
 #include "openal_wrapper.h"
 #include "Sounds.h"
 
@@ -186,6 +187,16 @@ AL_API signed char OPENAL_3D_SetAttributes(int channel, const float *pos, const
     return true;
 }
 
+AL_API signed char OPENAL_3D_SetAttributes_(int channel, const XYZ &pos, const float *vel)
+{
+    if (!initialized) return false;
+    if ((channel < 0) || (channel >= num_channels)) return false;
+
+    set_channel_position(channel, pos.x, pos.y, -pos.z);
+
+    return true;
+}
+
 AL_API signed char OPENAL_Init(int mixrate, int maxsoftwarechannels, unsigned int flags)
 {
     if (initialized) return false;
index 9f9c41be4cf426de5e5ae43fbe6601265cb478ab..5f2280b6176f6e232fa0eb7c7e1265475e22bbb2 100644 (file)
@@ -70,6 +70,7 @@ extern "C" {
 
 AL_API void OPENAL_3D_Listener_SetAttributes(const float *pos, const float *vel, float fx, float fy, float fz, float tx, float ty, float tz);
 AL_API signed char OPENAL_3D_SetAttributes(int channel, const float *pos, const float *vel);
+AL_API signed char OPENAL_3D_SetAttributes_(int channel, const XYZ &pos, const float *vel);
 AL_API signed char OPENAL_Init(int mixrate, int maxsoftwarechannels, unsigned int flags);
 AL_API void OPENAL_Close();
 AL_API OPENAL_SAMPLE *OPENAL_Sample_Load(int index, const char *name_or_data, unsigned int mode, int offset, int length);
@@ -83,6 +84,7 @@ AL_API void OPENAL_Stream_Close(OPENAL_STREAM *stream);
 AL_API signed char OPENAL_Stream_SetMode(OPENAL_STREAM *stream, unsigned int mode);
 AL_API void OPENAL_Update();
 AL_API signed char OPENAL_SetOutput(int outputtype);
+void PlaySoundEx(int chan, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
 
 #ifdef __cplusplus
 }