mirror of https://github.com/bjornbytes/lovr.git
make Source:setSpatial a constructor option instead
This commit is contained in:
parent
8403c9bd70
commit
407742e8b5
|
@ -49,15 +49,16 @@ static int l_lovrAudioSetVolume(lua_State* L) {
|
|||
static int l_lovrAudioNewSource(lua_State* L) {
|
||||
Source* source = NULL;
|
||||
SoundData* soundData = luax_totype(L, 1, SoundData);
|
||||
bool spatial = lua_isboolean(L, 2) ? lua_toboolean(L, 2) : true;
|
||||
|
||||
if (soundData) {
|
||||
source = lovrSourceCreate(soundData);
|
||||
source = lovrSourceCreate(soundData, spatial);
|
||||
} else {
|
||||
Blob* blob = luax_readblob(L, 1, "Source");
|
||||
soundData = lovrSoundDataCreateFromFile(blob, false);
|
||||
lovrRelease(Blob, blob);
|
||||
|
||||
source = lovrSourceCreate(soundData);
|
||||
source = lovrSourceCreate(soundData, spatial);
|
||||
lovrRelease(SoundData, soundData);
|
||||
}
|
||||
|
||||
|
|
|
@ -57,13 +57,6 @@ static int l_lovrSourceGetSpatial(lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int l_lovrSourceSetSpatial(lua_State* L) {
|
||||
Source* source = luax_checktype(L, 1, Source);
|
||||
bool spatial = lua_toboolean(L, 2);
|
||||
lovrSourceSetSpatial(source, spatial);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int l_lovrSourceSetPose(lua_State *L) {
|
||||
Source* source = luax_checktype(L, 1, Source);
|
||||
float position[4], orientation[4];
|
||||
|
@ -128,7 +121,6 @@ const luaL_Reg lovrSource[] = {
|
|||
{ "getVolume", l_lovrSourceGetVolume },
|
||||
{ "setVolume", l_lovrSourceSetVolume },
|
||||
{ "getSpatial", l_lovrSourceGetSpatial },
|
||||
{ "setSpatial", l_lovrSourceSetSpatial },
|
||||
{ "setPose", l_lovrSourceSetPose },
|
||||
{ "getDuration", l_lovrSourceGetDuration },
|
||||
{ "getTime", l_lovrSourceGetTime },
|
||||
|
|
|
@ -226,17 +226,7 @@ void lovrAudioSetListenerPose(float position[4], float orientation[4])
|
|||
|
||||
// Source
|
||||
|
||||
Source* lovrSourceCreate(SoundData* sound) {
|
||||
Source* source = lovrAlloc(Source);
|
||||
source->sound = sound;
|
||||
lovrRetain(source->sound);
|
||||
source->volume = 1.f;
|
||||
lovrSourceSetSpatial(source, true);
|
||||
|
||||
return source;
|
||||
}
|
||||
|
||||
void _lovrSourceAssignConverter(Source *source) {
|
||||
static void _lovrSourceAssignConverter(Source *source) {
|
||||
source->converter = NULL;
|
||||
for (size_t i = 0; i < state.converters.length; i++) {
|
||||
ma_data_converter* converter = &state.converters.data[i];
|
||||
|
@ -263,6 +253,19 @@ void _lovrSourceAssignConverter(Source *source) {
|
|||
}
|
||||
}
|
||||
|
||||
Source* lovrSourceCreate(SoundData* sound, bool spatial) {
|
||||
Source* source = lovrAlloc(Source);
|
||||
source->sound = sound;
|
||||
lovrRetain(source->sound);
|
||||
source->volume = 1.f;
|
||||
|
||||
source->spatial = spatial;
|
||||
source->output_channel_count = source->spatial ? 1 : 2;
|
||||
_lovrSourceAssignConverter(source);
|
||||
|
||||
return source;
|
||||
}
|
||||
|
||||
void lovrSourceDestroy(void* ref) {
|
||||
Source* source = ref;
|
||||
lovrRelease(SoundData, source->sound);
|
||||
|
@ -318,12 +321,6 @@ bool lovrSourceGetSpatial(Source *source) {
|
|||
return source->spatial;
|
||||
}
|
||||
|
||||
void lovrSourceSetSpatial(Source *source, bool spatial) {
|
||||
source->spatial = spatial;
|
||||
source->output_channel_count = source->spatial ? 1 : 2;
|
||||
_lovrSourceAssignConverter(source);
|
||||
}
|
||||
|
||||
void lovrSourceSetPose(Source *source, float position[4], float orientation[4]) {
|
||||
mat4_identity(source->pose);
|
||||
mat4_translate(source->pose, position[0], position[1], position[2]);
|
||||
|
|
|
@ -36,7 +36,7 @@ float lovrAudioGetVolume(void);
|
|||
void lovrAudioSetVolume(float volume);
|
||||
void lovrAudioSetListenerPose(float position[4], float orientation[4]);
|
||||
|
||||
Source* lovrSourceCreate(struct SoundData* soundData);
|
||||
Source* lovrSourceCreate(struct SoundData* soundData, bool spatial);
|
||||
void lovrSourceDestroy(void* ref);
|
||||
void lovrSourcePlay(Source* source);
|
||||
void lovrSourcePause(Source* source);
|
||||
|
@ -47,7 +47,6 @@ void lovrSourceSetLooping(Source* source, bool isLooping);
|
|||
float lovrSourceGetVolume(Source* source);
|
||||
void lovrSourceSetVolume(Source* source, float volume);
|
||||
bool lovrSourceGetSpatial(Source *source);
|
||||
void lovrSourceSetSpatial(Source *source, bool spatial);
|
||||
void lovrSourceSetPose(Source *source, float position[4], float orientation[4]);
|
||||
uint32_t lovrSourceGetTime(Source* source);
|
||||
void lovrSourceSetTime(Source* source, uint32_t sample);
|
||||
|
|
Loading…
Reference in New Issue