mirror of https://github.com/bjornbytes/lovr.git
Basic audio boilerplate;
This commit is contained in:
parent
724e0dd6eb
commit
062bdda684
|
@ -0,0 +1,26 @@
|
|||
#include "audio/audio.h"
|
||||
#include "util.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
static AudioState state;
|
||||
|
||||
void lovrAudioInit() {
|
||||
ALCdevice* device = alcOpenDevice(NULL);
|
||||
if (!device) {
|
||||
error("Unable to open default audio device");
|
||||
}
|
||||
|
||||
ALCcontext* context = alcCreateContext(device, NULL);
|
||||
if (!context || !alcMakeContextCurrent(context) || alcGetError(device) != ALC_NO_ERROR) {
|
||||
error("Unable to create OpenAL context");
|
||||
}
|
||||
|
||||
state.device = device;
|
||||
state.context = context;
|
||||
}
|
||||
|
||||
void lovrAudioDestroy() {
|
||||
alcMakeContextCurrent(NULL);
|
||||
alcDestroyContext(state.context);
|
||||
alcCloseDevice(state.device);
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
#include <OpenAL/al.h>
|
||||
#include <OpenAL/alc.h>
|
||||
|
||||
#ifndef LOVR_AUDIO_TYPES
|
||||
#define LOVR_AUDIO_TYPES
|
||||
|
||||
typedef struct {
|
||||
ALCdevice* device;
|
||||
ALCcontext* context;
|
||||
} AudioState;
|
||||
|
||||
#endif
|
||||
|
||||
void lovrAudioInit();
|
||||
void lovrAudioDestroy();
|
|
@ -1,4 +1,5 @@
|
|||
#include "lovr.h"
|
||||
#include "lovr/audio.h"
|
||||
#include "lovr/event.h"
|
||||
#include "lovr/filesystem.h"
|
||||
#include "lovr/graphics.h"
|
||||
|
@ -56,6 +57,7 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
|||
lua_setglobal(L, "lovr");
|
||||
|
||||
// Preload modules
|
||||
luax_preloadmodule(L, "lovr.audio", l_lovrAudioInit);
|
||||
luax_preloadmodule(L, "lovr.event", l_lovrEventInit);
|
||||
luax_preloadmodule(L, "lovr.filesystem", l_lovrFilesystemInit);
|
||||
luax_preloadmodule(L, "lovr.graphics", l_lovrGraphicsInit);
|
||||
|
@ -67,6 +69,7 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
|||
snprintf(buffer, sizeof(buffer), "%s",
|
||||
"local conf = { "
|
||||
" modules = { "
|
||||
" audio = true, "
|
||||
" event = true, "
|
||||
" graphics = true, "
|
||||
" headset = true, "
|
||||
|
@ -85,7 +88,7 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
|||
" success, err = pcall(lovr.conf, conf) "
|
||||
"end "
|
||||
|
||||
"local modules = { 'event', 'graphics', 'headset', 'timer' } "
|
||||
"local modules = { 'audio', 'event', 'graphics', 'headset', 'timer' } "
|
||||
"for _, module in ipairs(modules) do "
|
||||
" if conf.modules[module] then "
|
||||
" lovr[module] = require('lovr.' .. module) "
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
#include "lovr/audio.h"
|
||||
#include "audio/audio.h"
|
||||
|
||||
const luaL_Reg lovrAudio[] = {
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
int l_lovrAudioInit(lua_State* L) {
|
||||
lua_newtable(L);
|
||||
luaL_register(L, NULL, lovrAudio);
|
||||
lovrAudioInit();
|
||||
return 1;
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
#include <lua.h>
|
||||
#include <lauxlib.h>
|
||||
#include <lualib.h>
|
||||
|
||||
extern const luaL_Reg lovrAudio[];
|
||||
int l_lovrAudioInit(lua_State* L);
|
Loading…
Reference in New Issue