soundmanager.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FIFE_SOUNDMANAGER_H
00023 #define FIFE_SOUNDMANAGER_H
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include "fife_openal.h"
00036
00037 namespace FIFE {
00038 class SoundEmitter;
00039 class SoundClipPool;
00040
00041 class SoundManager {
00042 public:
00043
00044 SoundManager(SoundClipPool* pool);
00045
00046 ~SoundManager();
00047
00050 void init();
00051
00057 SoundEmitter* getEmitter(unsigned int emitterid) const;
00058
00061 SoundEmitter* createEmitter();
00062
00065 void releaseEmitter(unsigned int emitterid);
00066
00069 ALCcontext* getContext() const {
00070 return m_context;
00071 }
00072
00077 void setVolume(float vol) {
00078 if (m_device == NULL) {
00079 m_volume = vol;
00080 }
00081 alListenerf(AL_GAIN, vol);
00082 }
00083
00086 void mute() {
00087 alGetListenerf(AL_GAIN, &m_mutevol);
00088 alListenerf(AL_GAIN, 0);
00089 }
00090
00093 void unmute() {
00094 alListenerf(AL_GAIN, m_mutevol);
00095 }
00096
00099 void setListenerPosition(float x, float y, float z) {
00100 alListener3f(AL_POSITION, x, y, z);
00101 }
00102
00105 void setListenerOrientation(float x, float y, float z) {
00106 ALfloat vec[6] = { x, y, z, 0.0, 0.0, 1.0};
00107 alListenerfv(AL_ORIENTATION, vec);
00108 }
00109
00112 void setListenerVelocity(float x, float y, float z);
00113
00116 bool isActive() const{
00117 return m_device != NULL;
00118 }
00119
00120 private:
00121
00122 std::vector<SoundEmitter*> m_emittervec;
00123 ALCcontext* m_context;
00124 ALCdevice* m_device;
00125 SoundClipPool* m_pool;
00126 float m_mutevol;
00127 float m_volume;
00128 };
00129 }
00130 #endif