mirror of https://github.com/bjornbytes/lovr.git
lovr.audio.getVelocity; lovr.audio.setVelocity;
This commit is contained in:
parent
9df7195e68
commit
063f005ed7
|
@ -31,8 +31,9 @@ void lovrAudioInit() {
|
||||||
state.device = device;
|
state.device = device;
|
||||||
state.context = context;
|
state.context = context;
|
||||||
vec_init(&state.sources);
|
vec_init(&state.sources);
|
||||||
vec3_set(state.position, 0, 0, 0);
|
|
||||||
quat_set(state.orientation, 0, 0, 0, -1);
|
quat_set(state.orientation, 0, 0, 0, -1);
|
||||||
|
vec3_set(state.position, 0, 0, 0);
|
||||||
|
vec3_set(state.velocity, 0, 0, 0);
|
||||||
|
|
||||||
atexit(lovrAudioDestroy);
|
atexit(lovrAudioDestroy);
|
||||||
}
|
}
|
||||||
|
@ -82,6 +83,12 @@ void lovrAudioGetPosition(float* x, float* y, float* z) {
|
||||||
*z = state.position[2];
|
*z = state.position[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lovrAudioGetVelocity(float* x, float* y, float* z) {
|
||||||
|
*x = state.velocity[0];
|
||||||
|
*y = state.velocity[1];
|
||||||
|
*z = state.velocity[2];
|
||||||
|
}
|
||||||
|
|
||||||
float lovrAudioGetVolume() {
|
float lovrAudioGetVolume() {
|
||||||
float volume;
|
float volume;
|
||||||
alGetListenerf(AL_GAIN, &volume);
|
alGetListenerf(AL_GAIN, &volume);
|
||||||
|
@ -135,6 +142,11 @@ void lovrAudioSetPosition(float x, float y, float z) {
|
||||||
alListener3f(AL_POSITION, x, y, z);
|
alListener3f(AL_POSITION, x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lovrAudioSetVelocity(float x, float y, float z) {
|
||||||
|
vec3_set(state.velocity, x, y, z);
|
||||||
|
alListener3f(AL_VELOCITY, x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
void lovrAudioSetVolume(float volume) {
|
void lovrAudioSetVolume(float volume) {
|
||||||
alListenerf(AL_GAIN, volume);
|
alListenerf(AL_GAIN, volume);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,9 @@ typedef struct {
|
||||||
ALCdevice* device;
|
ALCdevice* device;
|
||||||
ALCcontext* context;
|
ALCcontext* context;
|
||||||
vec_void_t sources;
|
vec_void_t sources;
|
||||||
float position[3];
|
|
||||||
float orientation[4];
|
float orientation[4];
|
||||||
|
float position[3];
|
||||||
|
float velocity[4];
|
||||||
} AudioState;
|
} AudioState;
|
||||||
|
|
||||||
void lovrAudioInit();
|
void lovrAudioInit();
|
||||||
|
@ -20,6 +21,7 @@ void lovrAudioUpdate();
|
||||||
void lovrAudioAdd(Source* source);
|
void lovrAudioAdd(Source* source);
|
||||||
void lovrAudioGetOrientation(float* angle, float* ax, float* ay, float* az);
|
void lovrAudioGetOrientation(float* angle, float* ax, float* ay, float* az);
|
||||||
void lovrAudioGetPosition(float* x, float* y, float* z);
|
void lovrAudioGetPosition(float* x, float* y, float* z);
|
||||||
|
void lovrAudioGetVelocity(float* x, float* y, float* z);
|
||||||
float lovrAudioGetVolume();
|
float lovrAudioGetVolume();
|
||||||
int lovrAudioHas(Source* source);
|
int lovrAudioHas(Source* source);
|
||||||
void lovrAudioPause();
|
void lovrAudioPause();
|
||||||
|
@ -27,5 +29,6 @@ void lovrAudioResume();
|
||||||
void lovrAudioRewind();
|
void lovrAudioRewind();
|
||||||
void lovrAudioSetOrientation(float angle, float ax, float ay, float az);
|
void lovrAudioSetOrientation(float angle, float ax, float ay, float az);
|
||||||
void lovrAudioSetPosition(float x, float y, float z);
|
void lovrAudioSetPosition(float x, float y, float z);
|
||||||
|
void lovrAudioSetVelocity(float x, float y, float z);
|
||||||
void lovrAudioSetVolume(float volume);
|
void lovrAudioSetVolume(float volume);
|
||||||
void lovrAudioStop();
|
void lovrAudioStop();
|
||||||
|
|
|
@ -133,8 +133,9 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
||||||
" if lovr.audio then "
|
" if lovr.audio then "
|
||||||
" lovr.audio.update() "
|
" lovr.audio.update() "
|
||||||
" if lovr.headset and lovr.headset.isPresent() then "
|
" if lovr.headset and lovr.headset.isPresent() then "
|
||||||
" lovr.audio.setPosition(lovr.headset.getPosition()) "
|
|
||||||
" lovr.audio.setOrientation(lovr.headset.getOrientation()) "
|
" lovr.audio.setOrientation(lovr.headset.getOrientation()) "
|
||||||
|
" lovr.audio.setPosition(lovr.headset.getPosition()) "
|
||||||
|
" lovr.audio.setVelocity(lovr.headset.getVelocity()) "
|
||||||
" end "
|
" end "
|
||||||
" end "
|
" end "
|
||||||
" if lovr.update then lovr.update(dt) end "
|
" if lovr.update then lovr.update(dt) end "
|
||||||
|
|
|
@ -9,6 +9,7 @@ const luaL_Reg lovrAudio[] = {
|
||||||
{ "update", l_lovrAudioUpdate },
|
{ "update", l_lovrAudioUpdate },
|
||||||
{ "getOrientation", l_lovrAudioGetOrientation },
|
{ "getOrientation", l_lovrAudioGetOrientation },
|
||||||
{ "getPosition", l_lovrAudioGetPosition },
|
{ "getPosition", l_lovrAudioGetPosition },
|
||||||
|
{ "getVelocity", l_lovrAudioGetVelocity },
|
||||||
{ "getVolume", l_lovrAudioGetVolume },
|
{ "getVolume", l_lovrAudioGetVolume },
|
||||||
{ "newSource", l_lovrAudioNewSource },
|
{ "newSource", l_lovrAudioNewSource },
|
||||||
{ "pause", l_lovrAudioPause },
|
{ "pause", l_lovrAudioPause },
|
||||||
|
@ -16,6 +17,7 @@ const luaL_Reg lovrAudio[] = {
|
||||||
{ "rewind", l_lovrAudioRewind },
|
{ "rewind", l_lovrAudioRewind },
|
||||||
{ "setOrientation", l_lovrAudioSetOrientation },
|
{ "setOrientation", l_lovrAudioSetOrientation },
|
||||||
{ "setPosition", l_lovrAudioSetPosition },
|
{ "setPosition", l_lovrAudioSetPosition },
|
||||||
|
{ "setVelocity", l_lovrAudioSetVelocity },
|
||||||
{ "setVolume", l_lovrAudioSetVolume },
|
{ "setVolume", l_lovrAudioSetVolume },
|
||||||
{ "stop", l_lovrAudioStop },
|
{ "stop", l_lovrAudioStop },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
|
@ -58,6 +60,15 @@ int l_lovrAudioGetPosition(lua_State* L) {
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int l_lovrAudioGetVelocity(lua_State* L) {
|
||||||
|
float x, y, z;
|
||||||
|
lovrAudioGetVelocity(&x, &y, &z);
|
||||||
|
lua_pushnumber(L, x);
|
||||||
|
lua_pushnumber(L, y);
|
||||||
|
lua_pushnumber(L, z);
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
int l_lovrAudioGetVolume(lua_State* L) {
|
int l_lovrAudioGetVolume(lua_State* L) {
|
||||||
lua_pushnumber(L, lovrAudioGetVolume());
|
lua_pushnumber(L, lovrAudioGetVolume());
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -114,6 +125,14 @@ int l_lovrAudioSetPosition(lua_State* L) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int l_lovrAudioSetVelocity(lua_State* L) {
|
||||||
|
float x = luaL_checknumber(L, 1);
|
||||||
|
float y = luaL_checknumber(L, 2);
|
||||||
|
float z = luaL_checknumber(L, 3);
|
||||||
|
lovrAudioSetVelocity(x, y, z);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int l_lovrAudioSetVolume(lua_State* L) {
|
int l_lovrAudioSetVolume(lua_State* L) {
|
||||||
float volume = luaL_checknumber(L, 1);
|
float volume = luaL_checknumber(L, 1);
|
||||||
lovrAudioSetVolume(volume);
|
lovrAudioSetVolume(volume);
|
||||||
|
|
|
@ -8,6 +8,7 @@ int l_lovrAudioInit(lua_State* L);
|
||||||
int l_lovrAudioUpdate(lua_State* L);
|
int l_lovrAudioUpdate(lua_State* L);
|
||||||
int l_lovrAudioGetOrientation(lua_State* L);
|
int l_lovrAudioGetOrientation(lua_State* L);
|
||||||
int l_lovrAudioGetPosition(lua_State* L);
|
int l_lovrAudioGetPosition(lua_State* L);
|
||||||
|
int l_lovrAudioGetVelocity(lua_State* L);
|
||||||
int l_lovrAudioGetVolume(lua_State* L);
|
int l_lovrAudioGetVolume(lua_State* L);
|
||||||
int l_lovrAudioNewSource(lua_State* L);
|
int l_lovrAudioNewSource(lua_State* L);
|
||||||
int l_lovrAudioPause(lua_State* L);
|
int l_lovrAudioPause(lua_State* L);
|
||||||
|
@ -15,5 +16,6 @@ int l_lovrAudioResume(lua_State* L);
|
||||||
int l_lovrAudioRewind(lua_State* L);
|
int l_lovrAudioRewind(lua_State* L);
|
||||||
int l_lovrAudioSetOrientation(lua_State* L);
|
int l_lovrAudioSetOrientation(lua_State* L);
|
||||||
int l_lovrAudioSetPosition(lua_State* L);
|
int l_lovrAudioSetPosition(lua_State* L);
|
||||||
|
int l_lovrAudioSetVelocity(lua_State* L);
|
||||||
int l_lovrAudioSetVolume(lua_State* L);
|
int l_lovrAudioSetVolume(lua_State* L);
|
||||||
int l_lovrAudioStop(lua_State* L);
|
int l_lovrAudioStop(lua_State* L);
|
||||||
|
|
Loading…
Reference in New Issue