From 695ab419155d9bd95e036e37f2c5281c0aadf89b Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sun, 1 Feb 2015 00:36:34 -0400 Subject: [PATCH] Added love.audio.set/getDopplerScale. --- src/modules/audio/Audio.h | 3 +++ src/modules/audio/null/Audio.cpp | 9 +++++++++ src/modules/audio/null/Audio.h | 3 +++ src/modules/audio/openal/Audio.cpp | 11 +++++++++++ src/modules/audio/openal/Audio.h | 3 +++ src/modules/audio/wrap_Audio.cpp | 14 ++++++++++++++ src/modules/audio/wrap_Audio.h | 2 ++ 7 files changed, 45 insertions(+) diff --git a/src/modules/audio/Audio.h b/src/modules/audio/Audio.h index 9405bde38..42a090d23 100644 --- a/src/modules/audio/Audio.h +++ b/src/modules/audio/Audio.h @@ -185,6 +185,9 @@ public: **/ virtual void setVelocity(float *v) = 0; + virtual void setDopplerScale(float scale) = 0; + virtual float getDopplerScale() const = 0; + /** * Begins recording audio input from the microphone. **/ diff --git a/src/modules/audio/null/Audio.cpp b/src/modules/audio/null/Audio.cpp index 6e950d23d..cbd89c895 100644 --- a/src/modules/audio/null/Audio.cpp +++ b/src/modules/audio/null/Audio.cpp @@ -132,6 +132,15 @@ void Audio::setVelocity(float *) { } +void Audio::setDopplerScale(float) +{ +} + +float Audio::getDopplerScale() const +{ + return 1.0f; +} + void Audio::record() { } diff --git a/src/modules/audio/null/Audio.h b/src/modules/audio/null/Audio.h index 852aebda0..efbeb7a54 100644 --- a/src/modules/audio/null/Audio.h +++ b/src/modules/audio/null/Audio.h @@ -67,6 +67,9 @@ public: void getVelocity(float *v) const; void setVelocity(float *v); + void setDopplerScale(float scale); + float getDopplerScale() const; + void record(); love::sound::SoundData *getRecordedData(); love::sound::SoundData *stopRecording(bool returnData); diff --git a/src/modules/audio/openal/Audio.cpp b/src/modules/audio/openal/Audio.cpp index 72338418b..8536f6d4e 100644 --- a/src/modules/audio/openal/Audio.cpp +++ b/src/modules/audio/openal/Audio.cpp @@ -256,6 +256,17 @@ void Audio::setVelocity(float *v) alListenerfv(AL_VELOCITY, v); } +void Audio::setDopplerScale(float scale) +{ + if (scale >= 0.0f) + alDopplerFactor(scale); +} + +float Audio::getDopplerScale() const +{ + return alGetFloat(AL_DOPPLER_FACTOR); +} + void Audio::record() { if (!canRecord()) return; diff --git a/src/modules/audio/openal/Audio.h b/src/modules/audio/openal/Audio.h index c7beb6bb1..6a7c9f779 100644 --- a/src/modules/audio/openal/Audio.h +++ b/src/modules/audio/openal/Audio.h @@ -85,6 +85,9 @@ public: void getVelocity(float *v) const; void setVelocity(float *v); + void setDopplerScale(float scale); + float getDopplerScale() const; + void record(); love::sound::SoundData *getRecordedData(); love::sound::SoundData *stopRecording(bool returnData); diff --git a/src/modules/audio/wrap_Audio.cpp b/src/modules/audio/wrap_Audio.cpp index c0f08340f..3acbc08d1 100644 --- a/src/modules/audio/wrap_Audio.cpp +++ b/src/modules/audio/wrap_Audio.cpp @@ -218,6 +218,18 @@ int w_getVelocity(lua_State *L) return 3; } +int w_setDopplerScale(lua_State *L) +{ + instance()->setDopplerScale(luax_checkfloat(L, 1)); + return 0; +} + +int w_getDopplerScale(lua_State *L) +{ + lua_pushnumber(L, instance()->getDopplerScale()); + return 1; +} + int w_record(lua_State *) { instance()->record(); @@ -299,6 +311,8 @@ static const luaL_Reg functions[] = { "getOrientation", w_getOrientation }, { "setVelocity", w_setVelocity }, { "getVelocity", w_getVelocity }, + { "setDopplerScale", w_setDopplerScale }, + { "getDopplerScale", w_getDopplerScale }, /*{ "record", w_record }, { "getRecordedData", w_getRecordedData }, { "stopRecording", w_stopRecording },*/ diff --git a/src/modules/audio/wrap_Audio.h b/src/modules/audio/wrap_Audio.h index 31d9af132..40dc807d9 100644 --- a/src/modules/audio/wrap_Audio.h +++ b/src/modules/audio/wrap_Audio.h @@ -47,6 +47,8 @@ int w_setOrientation(lua_State *L); int w_getOrientation(lua_State *L); int w_setVelocity(lua_State *L); int w_getVelocity(lua_State *L); +int w_setDopplerScale(lua_State *L); +int w_getDopplerScale(lua_State *L); int w_record(lua_State *L); int w_getRecordedData(lua_State *L); int w_stopRecording(lua_State *L);