From 2a6afc499950aa52dd322bb0672308cca2130121 Mon Sep 17 00:00:00 2001 From: bjorn Date: Sun, 26 Feb 2017 13:14:15 -0800 Subject: [PATCH] lovr.audio.isSpatialized; --- src/audio/audio.c | 7 ++++++- src/audio/audio.h | 2 ++ src/lovr/audio.c | 6 ++++++ src/lovr/audio.h | 1 + 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/audio/audio.c b/src/audio/audio.c index 0b95efe5..1e4e3d63 100644 --- a/src/audio/audio.c +++ b/src/audio/audio.c @@ -22,8 +22,9 @@ void lovrAudioInit() { } alcResetDeviceSOFT = (LPALCRESETDEVICESOFT) alcGetProcAddress(device, "alcResetDeviceSOFT"); + state.isSpatialized = alcIsExtensionPresent(device, "ALC_SOFT_HRTF"); - if (alcIsExtensionPresent(device, "ALC_SOFT_HRTF")) { + if (state.isSpatialized) { ALCint attrs[3] = { ALC_HRTF_SOFT, ALC_TRUE, 0 }; alcResetDeviceSOFT(device, attrs); } @@ -106,6 +107,10 @@ int lovrAudioHas(Source* source) { return index >= 0; } +int lovrAudioIsSpatialized(Source* source) { + return state.isSpatialized; +} + void lovrAudioPause() { int i; Source* source; vec_foreach(&state.sources, source, i) { diff --git a/src/audio/audio.h b/src/audio/audio.h index 42cf7220..cdb5c648 100644 --- a/src/audio/audio.h +++ b/src/audio/audio.h @@ -10,6 +10,7 @@ typedef struct { ALCdevice* device; ALCcontext* context; vec_void_t sources; + int isSpatialized; float orientation[4]; float position[3]; float velocity[4]; @@ -25,6 +26,7 @@ void lovrAudioGetPosition(float* x, float* y, float* z); void lovrAudioGetVelocity(float* x, float* y, float* z); float lovrAudioGetVolume(); int lovrAudioHas(Source* source); +int lovrAudioIsSpatialized(); void lovrAudioPause(); void lovrAudioResume(); void lovrAudioRewind(); diff --git a/src/lovr/audio.c b/src/lovr/audio.c index fba2b22c..03940d8f 100644 --- a/src/lovr/audio.c +++ b/src/lovr/audio.c @@ -12,6 +12,7 @@ const luaL_Reg lovrAudio[] = { { "getPosition", l_lovrAudioGetPosition }, { "getVelocity", l_lovrAudioGetVelocity }, { "getVolume", l_lovrAudioGetVolume }, + { "isSpatialized", l_lovrAudioIsSpatialized }, { "newSource", l_lovrAudioNewSource }, { "pause", l_lovrAudioPause }, { "resume", l_lovrAudioResume }, @@ -84,6 +85,11 @@ int l_lovrAudioGetVolume(lua_State* L) { return 1; } +int l_lovrAudioIsSpatialized(lua_State* L) { + lua_pushnumber(L, lovrAudioIsSpatialized()); + return 1; +} + int l_lovrAudioNewSource(lua_State* L) { const char* filename = luaL_checkstring(L, 1); if (!strstr(filename, ".ogg")) { diff --git a/src/lovr/audio.h b/src/lovr/audio.h index e32d6442..a82234a0 100644 --- a/src/lovr/audio.h +++ b/src/lovr/audio.h @@ -11,6 +11,7 @@ int l_lovrAudioGetOrientation(lua_State* L); int l_lovrAudioGetPosition(lua_State* L); int l_lovrAudioGetVelocity(lua_State* L); int l_lovrAudioGetVolume(lua_State* L); +int l_lovrAudioIsSpatialized(lua_State* L); int l_lovrAudioNewSource(lua_State* L); int l_lovrAudioPause(lua_State* L); int l_lovrAudioResume(lua_State* L);