From 3b3d0ad32e24c2ff0a13daf3e865054f63afaf86 Mon Sep 17 00:00:00 2001 From: jussi Date: Wed, 24 Jan 2024 19:14:30 +0200 Subject: LoadBufferFromString, LoadWaveFromMemory and LoadMusicStreamFromMemory. --- src/audio.c | 32 ++++++++++++++++++++++++++++++++ src/core.c | 24 ++++++++++++++++++++++++ src/lua_core.c | 3 +++ 3 files changed, 59 insertions(+) (limited to 'src') diff --git a/src/audio.c b/src/audio.c index ef466cb..a02120a 100644 --- a/src/audio.c +++ b/src/audio.c @@ -112,6 +112,22 @@ int laudioLoadWave( lua_State *L ) { return 1; } +/* +> wave = RL.LoadWaveFromMemory( string fileType, Buffer data ) + +Load wave from memory buffer, fileType refers to extension: i.e. '.wav' + +- Success return Wave +*/ +int laudioLoadWaveFromMemory( lua_State *L ) { + const char* fileType = luaL_checkstring( L, 1 ); + Buffer* buffer = uluaGetBuffer( L, 2 ); + + uluaPushWave( L, LoadWaveFromMemory( fileType, buffer->data, buffer->size ) ); + + return 1; +} + /* > isReady = RL.IsWaveReady( Wave wave ) @@ -423,6 +439,22 @@ int laudioLoadMusicStream( lua_State *L ) { return 1; } +/* +> music = RL.LoadMusicStreamFromMemory( string fileType, Buffer data ) + +Load music stream from data + +- Success return Music +*/ +int laudioLoadMusicStreamFromMemory( lua_State* L ) { + const char* fileType = luaL_checkstring( L, 1 ); + Buffer* buffer = uluaGetBuffer( L, 2 ); + + uluaPushMusic( L, LoadMusicStreamFromMemory( fileType, buffer->data, buffer->size ) ); + + return 1; +} + /* > isReady = RL.IsMusicReady( Music music ) diff --git a/src/core.c b/src/core.c index 9dfbe01..199e424 100644 --- a/src/core.c +++ b/src/core.c @@ -3081,6 +3081,30 @@ int lcoreLoadBufferFromFile( lua_State *L ) { return 1; } +/* +> buffer = RL.LoadBufferFromString( string buffer ) + +Read buffer data from string + +- Failure return nil +- Success return Buffer +*/ +int lcoreLoadBufferFromString( lua_State *L ) { + size_t len = 0; + const char *string = luaL_checklstring( L, 1, &len ); + + Buffer buffer = { + .type = BUFFER_UNSIGNED_CHAR, + .size = len, + .data = malloc( len * sizeof( unsigned char ) ) + }; + memcpy( buffer.data, string, len ); + + uluaPushBuffer( L, buffer ); + + return 1; +} + /* > RL.UnloadBuffer( Buffer buffer ) diff --git a/src/lua_core.c b/src/lua_core.c index 820cc20..3465fce 100644 --- a/src/lua_core.c +++ b/src/lua_core.c @@ -1414,6 +1414,7 @@ void luaRegister() { /* Buffer management functions. */ assingGlobalFunction( "LoadBuffer", lcoreLoadBuffer ); assingGlobalFunction( "LoadBufferFromFile", lcoreLoadBufferFromFile ); + assingGlobalFunction( "LoadBufferFromString", lcoreLoadBufferFromString ); assingGlobalFunction( "UnloadBuffer", lcoreUnloadBuffer ); assingGlobalFunction( "GetBufferData", lcoreGetBufferData ); assingGlobalFunction( "GetBufferType", lcoreGetBufferType ); @@ -1767,6 +1768,7 @@ void luaRegister() { /* Wave/Sound loading/unloading functions. */ assingGlobalFunction( "LoadSound", laudioLoadSound ); assingGlobalFunction( "LoadWave", laudioLoadWave ); + assingGlobalFunction( "LoadWaveFromMemory", laudioLoadWaveFromMemory ); assingGlobalFunction( "IsWaveReady", laudioIsWaveReady ); assingGlobalFunction( "LoadSoundFromWave", laudioLoadSoundFromWave ); assingGlobalFunction( "LoadSoundAlias", laudioLoadSoundAlias ); @@ -1790,6 +1792,7 @@ void luaRegister() { assingGlobalFunction( "WaveCrop", laudioWaveCrop ); /* Music management functions. */ assingGlobalFunction( "LoadMusicStream", laudioLoadMusicStream ); + assingGlobalFunction( "LoadMusicStreamFromMemory", laudioLoadMusicStreamFromMemory ); assingGlobalFunction( "IsMusicReady", laudioIsMusicReady ); assingGlobalFunction( "UnloadMusicStream", laudioUnloadMusicStream ); assingGlobalFunction( "PlayMusicStream", laudioPlayMusicStream ); -- cgit v1.2.3