Source:getOrientation; Source:setOrientation;

This commit is contained in:
bjorn 2017-01-05 21:21:14 -08:00
parent d437d04259
commit fa6b742972
4 changed files with 36 additions and 4 deletions

View File

@ -58,6 +58,10 @@ ALenum lovrSourceGetFormat(Source* source) {
return 0;
}
void lovrSourceGetOrientation(Source* source, float* x, float* y, float* z) {
alGetSource3f(source->id, AL_DIRECTION, x, y, z);
}
float lovrSourceGetPitch(Source* source) {
float pitch;
alGetSourcef(source->id, AL_PITCH, &pitch);
@ -142,14 +146,18 @@ void lovrSourceSeek(Source* source, int sample) {
}
}
void lovrSourceSetPitch(Source* source, float pitch) {
alSourcef(source->id, AL_PITCH, pitch);
}
void lovrSourceSetLooping(Source* source, int isLooping) {
source->isLooping = isLooping;
}
void lovrSourceSetOrientation(Source* source, float dx, float dy, float dz) {
alSource3f(source->id, AL_DIRECTION, dx, dy, dz);
}
void lovrSourceSetPitch(Source* source, float pitch) {
alSourcef(source->id, AL_PITCH, pitch);
}
void lovrSourceSetPosition(Source* source, float x, float y, float z) {
alSource3f(source->id, AL_POSITION, x, y, z);
}

View File

@ -38,6 +38,7 @@ int lovrSourceGetBitDepth(Source* source);
int lovrSourceGetChannels(Source* source);
int lovrSourceGetDuration(Source* source);
ALenum lovrSourceGetFormat(Source* source);
void lovrSourceGetOrientation(Source* source, float* x, float* y, float* z);
float lovrSourceGetPitch(Source* source);
void lovrSourceGetPosition(Source* source, float* x, float* y, float* z);
int lovrSourceGetSampleRate(Source* source);
@ -53,6 +54,7 @@ void lovrSourceRewind(Source* source);
void lovrSourceSeek(Source* source, int sample);
void lovrSourceSetLooping(Source* source, int isLooping);
void lovrSourceSetPitch(Source* source, float pitch);
void lovrSourceSetOrientation(Source* source, float dx, float dy, float dz);
void lovrSourceSetPosition(Source* source, float x, float y, float z);
void lovrSourceSetVolume(Source* source, float volume);
void lovrSourceStop(Source* source);

View File

@ -5,6 +5,7 @@ const luaL_Reg lovrSource[] = {
{ "getBitDepth", l_lovrSourceGetBitDepth },
{ "getChannels", l_lovrSourceGetChannels },
{ "getDuration", l_lovrSourceGetDuration },
{ "getOrientation", l_lovrSourceGetOrientation },
{ "getPitch", l_lovrSourceGetPitch },
{ "getPosition", l_lovrSourceGetPosition },
{ "getSampleRate", l_lovrSourceGetSampleRate },
@ -19,6 +20,7 @@ const luaL_Reg lovrSource[] = {
{ "rewind", l_lovrSourceRewind },
{ "seek", l_lovrSourceSeek },
{ "setLooping", l_lovrSourceSetLooping },
{ "setOrientation", l_lovrSourceSetOrientation },
{ "setPitch", l_lovrSourceSetPitch },
{ "setPosition", l_lovrSourceSetPosition },
{ "setVolume", l_lovrSourceSetVolume },
@ -53,6 +55,15 @@ int l_lovrSourceGetDuration(lua_State* L) {
return 1;
}
int l_lovrSourceGetOrientation(lua_State* L) {
float x, y, z;
lovrSourceGetOrientation(luax_checktype(L, 1, Source), &x, &y, &z);
lua_pushnumber(L, x);
lua_pushnumber(L, y);
lua_pushnumber(L, z);
return 3;
}
int l_lovrSourceGetPitch(lua_State* L) {
Source* source = luax_checktype(L, 1, Source);
lua_pushnumber(L, lovrSourceGetPitch(source));
@ -140,6 +151,15 @@ int l_lovrSourceSetLooping(lua_State* L) {
return 0;
}
int l_lovrSourceSetOrientation(lua_State* L) {
Source* source = luax_checktype(L, 1, Source);
float x = luaL_checknumber(L, 2);
float y = luaL_checknumber(L, 3);
float z = luaL_checknumber(L, 4);
lovrSourceSetOrientation(source, x, y, z);
return 0;
}
int l_lovrSourceSetPitch(lua_State* L) {
lovrSourceSetPitch(luax_checktype(L, 1, Source), luaL_checknumber(L, 2));
return 0;

View File

@ -7,6 +7,7 @@ extern const luaL_Reg lovrSource[];
int l_lovrSourceGetBitDepth(lua_State* L);
int l_lovrSourceGetChannels(lua_State* L);
int l_lovrSourceGetDuration(lua_State* L);
int l_lovrSourceGetOrientation(lua_State* L);
int l_lovrSourceGetPitch(lua_State* L);
int l_lovrSourceGetPosition(lua_State* L);
int l_lovrSourceGetSampleRate(lua_State* L);
@ -21,6 +22,7 @@ int l_lovrSourceResume(lua_State* L);
int l_lovrSourceRewind(lua_State* L);
int l_lovrSourceSeek(lua_State* L);
int l_lovrSourceSetLooping(lua_State* L);
int l_lovrSourceSetOrientation(lua_State* L);
int l_lovrSourceSetPitch(lua_State* L);
int l_lovrSourceSetPosition(lua_State* L);
int l_lovrSourceSetVolume(lua_State* L);