Can now have multiple Music objects like other Raylib objects instead of just one.
This commit is contained in:
76
API.md
76
API.md
@@ -4775,48 +4775,70 @@ Crop a wave to defined samples range
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> success = RL.LoadMusicStream( string fileName )
|
> music = RL.LoadMusicStream( string fileName )
|
||||||
|
|
||||||
Load music stream from file
|
Load music stream from file
|
||||||
|
|
||||||
|
- Failure return -1
|
||||||
|
- Success return int
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> success = RL.PlayMusicStream( Music music )
|
||||||
|
|
||||||
|
Start music playing
|
||||||
|
|
||||||
- Failure return false
|
- Failure return false
|
||||||
- Success return true
|
- Success return true
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> RL.PlayMusicStream()
|
> playing = RL.IsMusicStreamPlaying( Music music )
|
||||||
|
|
||||||
Start music playing
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
> playing = RL.IsMusicStreamPlaying()
|
|
||||||
|
|
||||||
Check if music is playing
|
Check if music is playing
|
||||||
|
|
||||||
|
- Failure return nil
|
||||||
- Success return bool
|
- Success return bool
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> RL.StopMusicStream()
|
> success = RL.UpdateMusicStream( Music music )
|
||||||
|
|
||||||
|
Updates buffers for music streaming
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> success = RL.StopMusicStream( Music music )
|
||||||
|
|
||||||
Stop music playing
|
Stop music playing
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> RL.PauseMusicStream()
|
> success = RL.PauseMusicStream( Music music )
|
||||||
|
|
||||||
Pause music playing
|
Pause music playing
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> RL.ResumeMusicStream()
|
> success = RL.ResumeMusicStream( Music music )
|
||||||
|
|
||||||
Resume playing paused music
|
Resume playing paused music
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> success = RL.SeekMusicStream( float position )
|
> success = RL.SeekMusicStream( Music music, float position )
|
||||||
|
|
||||||
Seek music to a position ( in seconds )
|
Seek music to a position ( in seconds )
|
||||||
|
|
||||||
@@ -4825,7 +4847,7 @@ Seek music to a position ( in seconds )
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> success = RL.SetMusicVolume( float volume )
|
> success = RL.SetMusicVolume( Music music, float volume )
|
||||||
|
|
||||||
Set volume for music ( 1.0 is max level )
|
Set volume for music ( 1.0 is max level )
|
||||||
|
|
||||||
@@ -4834,7 +4856,7 @@ Set volume for music ( 1.0 is max level )
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> success = RL.SetMusicPitch( float pitch )
|
> success = RL.SetMusicPitch( Music music, float pitch )
|
||||||
|
|
||||||
Set pitch for a music ( 1.0 is base level )
|
Set pitch for a music ( 1.0 is base level )
|
||||||
|
|
||||||
@@ -4843,7 +4865,7 @@ Set pitch for a music ( 1.0 is base level )
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> success = RL.SetMusicPan( float pan )
|
> success = RL.SetMusicPan( Music music, float pan )
|
||||||
|
|
||||||
Set pan for a music ( 0.5 is center )
|
Set pan for a music ( 0.5 is center )
|
||||||
|
|
||||||
@@ -4852,18 +4874,38 @@ Set pan for a music ( 0.5 is center )
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> length = RL.GetMusicTimeLength()
|
> success = RL.SetMusicLooping( Music music, bool looping )
|
||||||
|
|
||||||
|
Set looping for a music
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> looping = RL.GetMusicLooping( Music music )
|
||||||
|
|
||||||
|
Get looping of a music
|
||||||
|
|
||||||
|
- Failure return nil
|
||||||
|
- Success return bool
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> length = RL.GetMusicTimeLength( Music music )
|
||||||
|
|
||||||
Get music time length ( in seconds )
|
Get music time length ( in seconds )
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
- Success return float
|
- Success return float
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> played = RL.GetMusicTimePlayed()
|
> played = RL.GetMusicTimePlayed( Music music )
|
||||||
|
|
||||||
Get current music time played ( in seconds )
|
Get current music time played ( in seconds )
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
- Success return float
|
- Success return float
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ if( EMSCRIPTEN ) # Web
|
|||||||
else() # Desktop
|
else() # Desktop
|
||||||
if( SHARED )
|
if( SHARED )
|
||||||
message( Shared )
|
message( Shared )
|
||||||
# find_package( raylib 4.0 REQUIRED ) # Requires at least version 4.0
|
find_package( raylib 4.5 REQUIRED ) # Requires at least version 4.5
|
||||||
target_link_libraries( ${PROJECT_NAME} raylib )
|
target_link_libraries( ${PROJECT_NAME} raylib )
|
||||||
target_link_libraries( ${PROJECT_NAME} lua )
|
target_link_libraries( ${PROJECT_NAME} lua )
|
||||||
else()
|
else()
|
||||||
@@ -42,7 +42,7 @@ else() # Desktop
|
|||||||
if( UNIX )
|
if( UNIX )
|
||||||
set( CMAKE_C_COMPILER "gcc" )
|
set( CMAKE_C_COMPILER "gcc" )
|
||||||
|
|
||||||
if( DRM ) # Mainly for Raspberry pi
|
if( DRM ) # Mainly for Raspberry Pi
|
||||||
# target_link_libraries( ${PROJECT_NAME} GLESv2 EGL drm gbm rt bcm_host m dl pthread )
|
# target_link_libraries( ${PROJECT_NAME} GLESv2 EGL drm gbm rt bcm_host m dl pthread )
|
||||||
target_link_libraries( ${PROJECT_NAME} GLESv2 EGL drm gbm rt m dl pthread )
|
target_link_libraries( ${PROJECT_NAME} GLESv2 EGL drm gbm rt m dl pthread )
|
||||||
else()
|
else()
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Reilua means fair in finnish.
|
|||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
ReiLua is WIP and some planned raylib functionality is still missing but it already has over 400 functions and should include all functions to make most 2d and 3d games. Current Raylib version 4.2.0.
|
ReiLua is WIP and some planned raylib functionality is still missing but it already has over 600 functions and should include all functions to make most 2d and 3d games. Current Raylib version 4.5.0.
|
||||||
|
|
||||||
Included submodules.
|
Included submodules.
|
||||||
|
|
||||||
|
|||||||
@@ -3756,70 +3756,114 @@ function RL.WaveCrop( wave, initSample, finalSample ) end
|
|||||||
-- Audio - Music management
|
-- Audio - Music management
|
||||||
|
|
||||||
---Load music stream from file
|
---Load music stream from file
|
||||||
---- Failure return false
|
---- Failure return -1
|
||||||
---- Success return true
|
---- Success return int
|
||||||
---@param fileName string
|
---@param fileName string
|
||||||
---@return any success
|
---@return any music
|
||||||
function RL.LoadMusicStream( fileName ) end
|
function RL.LoadMusicStream( fileName ) end
|
||||||
|
|
||||||
---Start music playing
|
---Start music playing
|
||||||
---@return any RL.PlayMusicStream
|
---- Failure return false
|
||||||
function RL.PlayMusicStream() end
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
|
---@return any success
|
||||||
|
function RL.PlayMusicStream( music ) end
|
||||||
|
|
||||||
---Check if music is playing
|
---Check if music is playing
|
||||||
|
---- Failure return nil
|
||||||
---- Success return bool
|
---- Success return bool
|
||||||
|
---@param music any
|
||||||
---@return any playing
|
---@return any playing
|
||||||
function RL.IsMusicStreamPlaying() end
|
function RL.IsMusicStreamPlaying( music ) end
|
||||||
|
|
||||||
|
---Updates buffers for music streaming
|
||||||
|
---- Failure return false
|
||||||
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
|
---@return any success
|
||||||
|
function RL.UpdateMusicStream( music ) end
|
||||||
|
|
||||||
---Stop music playing
|
---Stop music playing
|
||||||
---@return any RL.StopMusicStream
|
---- Failure return false
|
||||||
function RL.StopMusicStream() end
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
|
---@return any success
|
||||||
|
function RL.StopMusicStream( music ) end
|
||||||
|
|
||||||
---Pause music playing
|
---Pause music playing
|
||||||
---@return any RL.PauseMusicStream
|
---- Failure return false
|
||||||
function RL.PauseMusicStream() end
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
|
---@return any success
|
||||||
|
function RL.PauseMusicStream( music ) end
|
||||||
|
|
||||||
---Resume playing paused music
|
---Resume playing paused music
|
||||||
---@return any RL.ResumeMusicStream
|
---- Failure return false
|
||||||
function RL.ResumeMusicStream() end
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
|
---@return any success
|
||||||
|
function RL.ResumeMusicStream( music ) end
|
||||||
|
|
||||||
---Seek music to a position ( in seconds )
|
---Seek music to a position ( in seconds )
|
||||||
---- Failure return false
|
---- Failure return false
|
||||||
---- Success return true
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
---@param position number
|
---@param position number
|
||||||
---@return any success
|
---@return any success
|
||||||
function RL.SeekMusicStream( position ) end
|
function RL.SeekMusicStream( music, position ) end
|
||||||
|
|
||||||
---Set volume for music ( 1.0 is max level )
|
---Set volume for music ( 1.0 is max level )
|
||||||
---- Failure return false
|
---- Failure return false
|
||||||
---- Success return true
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
---@param volume number
|
---@param volume number
|
||||||
---@return any success
|
---@return any success
|
||||||
function RL.SetMusicVolume( volume ) end
|
function RL.SetMusicVolume( music, volume ) end
|
||||||
|
|
||||||
---Set pitch for a music ( 1.0 is base level )
|
---Set pitch for a music ( 1.0 is base level )
|
||||||
---- Failure return false
|
---- Failure return false
|
||||||
---- Success return true
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
---@param pitch number
|
---@param pitch number
|
||||||
---@return any success
|
---@return any success
|
||||||
function RL.SetMusicPitch( pitch ) end
|
function RL.SetMusicPitch( music, pitch ) end
|
||||||
|
|
||||||
---Set pan for a music ( 0.5 is center )
|
---Set pan for a music ( 0.5 is center )
|
||||||
---- Failure return false
|
---- Failure return false
|
||||||
---- Success return true
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
---@param pan number
|
---@param pan number
|
||||||
---@return any success
|
---@return any success
|
||||||
function RL.SetMusicPan( pan ) end
|
function RL.SetMusicPan( music, pan ) end
|
||||||
|
|
||||||
|
---Set looping for a music
|
||||||
|
---- Failure return false
|
||||||
|
---- Success return true
|
||||||
|
---@param music any
|
||||||
|
---@param looping boolean
|
||||||
|
---@return any success
|
||||||
|
function RL.SetMusicLooping( music, looping ) end
|
||||||
|
|
||||||
|
---Get looping of a music
|
||||||
|
---- Failure return nil
|
||||||
|
---- Success return bool
|
||||||
|
---@param music any
|
||||||
|
---@return any looping
|
||||||
|
function RL.GetMusicLooping( music ) end
|
||||||
|
|
||||||
---Get music time length ( in seconds )
|
---Get music time length ( in seconds )
|
||||||
|
---- Failure return false
|
||||||
---- Success return float
|
---- Success return float
|
||||||
|
---@param music any
|
||||||
---@return any length
|
---@return any length
|
||||||
function RL.GetMusicTimeLength() end
|
function RL.GetMusicTimeLength( music ) end
|
||||||
|
|
||||||
---Get current music time played ( in seconds )
|
---Get current music time played ( in seconds )
|
||||||
|
---- Failure return false
|
||||||
---- Success return float
|
---- Success return float
|
||||||
|
---@param music any
|
||||||
---@return any played
|
---@return any played
|
||||||
function RL.GetMusicTimePlayed() end
|
function RL.GetMusicTimePlayed( music ) end
|
||||||
|
|
||||||
-- Math - Utils
|
-- Math - Utils
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ KEY CHANGES:
|
|||||||
Also using positive stack indexing.
|
Also using positive stack indexing.
|
||||||
- ADDED: Camera3D Lua lib.
|
- ADDED: Camera3D Lua lib.
|
||||||
- ADDED: Raygui wrapper lib.
|
- ADDED: Raygui wrapper lib.
|
||||||
|
- CHANGED: Can now have multiple Music objects like other Raylib objects instead of just one.
|
||||||
|
|
||||||
Detailed changes:
|
Detailed changes:
|
||||||
- FIXED: uluaGetRay was looking for integers instead of tables.
|
- FIXED: uluaGetRay was looking for integers instead of tables.
|
||||||
@@ -53,6 +54,9 @@ Detailed changes:
|
|||||||
- ADDED: glBlitFramebuffer
|
- ADDED: glBlitFramebuffer
|
||||||
- ADDED: GuiGetFont
|
- ADDED: GuiGetFont
|
||||||
- FIXED: GuiScrollPanel
|
- FIXED: GuiScrollPanel
|
||||||
|
- ADDED: UpdateMusicStream
|
||||||
|
- ADDED: SetMusicLooping
|
||||||
|
- ADDED: GetMusicLooping
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
Release: ReiLua version 0.4.0 Using Raylib 4.2
|
Release: ReiLua version 0.4.0 Using Raylib 4.2
|
||||||
|
|||||||
1
devnotes
1
devnotes
@@ -1,5 +1,4 @@
|
|||||||
Current {
|
Current {
|
||||||
* Check raylib changes from https://github.com/raysan5/raylib/blob/master/CHANGELOG
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Backlog {
|
Backlog {
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ int laudioWaveCrop( lua_State *L );
|
|||||||
int laudioLoadMusicStream( lua_State *L );
|
int laudioLoadMusicStream( lua_State *L );
|
||||||
int laudioPlayMusicStream( lua_State *L );
|
int laudioPlayMusicStream( lua_State *L );
|
||||||
int laudioIsMusicStreamPlaying( lua_State *L );
|
int laudioIsMusicStreamPlaying( lua_State *L );
|
||||||
|
int laudioUpdateMusicStream( lua_State *L );
|
||||||
int laudioStopMusicStream( lua_State *L );
|
int laudioStopMusicStream( lua_State *L );
|
||||||
int laudioPauseMusicStream( lua_State *L );
|
int laudioPauseMusicStream( lua_State *L );
|
||||||
int laudioResumeMusicStream( lua_State *L );
|
int laudioResumeMusicStream( lua_State *L );
|
||||||
@@ -33,5 +34,7 @@ int laudioSeekMusicStream( lua_State *L );
|
|||||||
int laudioSetMusicVolume( lua_State *L );
|
int laudioSetMusicVolume( lua_State *L );
|
||||||
int laudioSetMusicPitch( lua_State *L );
|
int laudioSetMusicPitch( lua_State *L );
|
||||||
int laudioSetMusicPan( lua_State *L );
|
int laudioSetMusicPan( lua_State *L );
|
||||||
|
int laudioSetMusicLooping( lua_State *L );
|
||||||
|
int laudioGetMusicLooping( lua_State *L );
|
||||||
int laudioGetMusicTimeLength( lua_State *L );
|
int laudioGetMusicTimeLength( lua_State *L );
|
||||||
int laudioGetMusicTimePlayed( lua_State *L );
|
int laudioGetMusicTimePlayed( lua_State *L );
|
||||||
|
|||||||
@@ -41,7 +41,9 @@ typedef struct {
|
|||||||
size_t soundCount;
|
size_t soundCount;
|
||||||
size_t soundAlloc;
|
size_t soundAlloc;
|
||||||
/* Music. */
|
/* Music. */
|
||||||
Music music;
|
Music **musics;
|
||||||
|
size_t musicCount;
|
||||||
|
size_t musicAlloc;
|
||||||
/* Camera2D's. */
|
/* Camera2D's. */
|
||||||
Camera2D **camera2Ds;
|
Camera2D **camera2Ds;
|
||||||
size_t camera2DCount;
|
size_t camera2DCount;
|
||||||
|
|||||||
356
src/audio.c
356
src/audio.c
@@ -23,6 +23,16 @@ static bool validWave( size_t id ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool validMusic( size_t id ) {
|
||||||
|
if ( id < 0 || state->musicCount < id || state->musics[ id ] == NULL ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s %d", "Invalid music", id );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void checkSoundRealloc( int i ) {
|
static void checkSoundRealloc( int i ) {
|
||||||
if ( i == state->soundCount ) {
|
if ( i == state->soundCount ) {
|
||||||
state->soundCount++;
|
state->soundCount++;
|
||||||
@@ -53,6 +63,21 @@ static void checkWaveRealloc( int i ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void checkMusicRealloc( int i ) {
|
||||||
|
if ( i == state->musicCount ) {
|
||||||
|
state->musicCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( state->musicCount == state->musicAlloc ) {
|
||||||
|
state->musicAlloc += ALLOC_PAGE_SIZE;
|
||||||
|
state->musics = realloc( state->musics, state->musicAlloc * sizeof( Music* ) );
|
||||||
|
|
||||||
|
for ( i = state->musicCount; i < state->musicAlloc; i++ ) {
|
||||||
|
state->musics[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int newSound() {
|
static int newSound() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
@@ -81,6 +106,20 @@ static int newWave() {
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int newMusic() {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for ( i = 0; i < state->musicCount; i++ ) {
|
||||||
|
if ( state->musics[i] == NULL ) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
state->musics[i] = malloc( sizeof( Music ) );
|
||||||
|
checkMusicRealloc( i );
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
## Audio - Audio device management
|
## Audio - Audio device management
|
||||||
*/
|
*/
|
||||||
@@ -599,91 +638,188 @@ int laudioWaveCrop( lua_State *L ) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> success = RL.LoadMusicStream( string fileName )
|
> music = RL.LoadMusicStream( string fileName )
|
||||||
|
|
||||||
Load music stream from file
|
Load music stream from file
|
||||||
|
|
||||||
- Failure return false
|
- Failure return -1
|
||||||
- Success return true
|
- Success return int
|
||||||
*/
|
*/
|
||||||
int laudioLoadMusicStream( lua_State *L ) {
|
int laudioLoadMusicStream( lua_State *L ) {
|
||||||
if ( !lua_isstring( L, 1 ) ) {
|
if ( !lua_isstring( L, 1 ) ) {
|
||||||
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.LoadMusicStream( string fileName )" );
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.LoadMusicStream( string fileName )" );
|
||||||
|
lua_pushinteger( L, -1 );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if ( !FileExists( lua_tostring( L, 1 ) ) ) {
|
||||||
|
lua_pushinteger( L, -1 );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
int i = newMusic();
|
||||||
|
*state->musics[i] = LoadMusicStream( lua_tostring( L, 1 ) );
|
||||||
|
state->musics[i]->looping = true;
|
||||||
|
lua_pushinteger( L, i );
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
> success = RL.PlayMusicStream( Music music )
|
||||||
|
|
||||||
|
Start music playing
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
|
*/
|
||||||
|
int laudioPlayMusicStream( lua_State *L ) {
|
||||||
|
if ( !lua_isnumber( L, 1 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.PlayMusicStream( Music music )" );
|
||||||
lua_pushboolean( L, false );
|
lua_pushboolean( L, false );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if ( FileExists( lua_tostring( L, 1 ) ) ) {
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
state->music = LoadMusicStream( lua_tostring( L, 1 ) );
|
|
||||||
state->music.looping = false;
|
if ( !validMusic( musicId ) ) {
|
||||||
|
|
||||||
lua_pushboolean( L, true );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
lua_pushboolean( L, false );
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
PlayMusicStream( *state->musics[ musicId ] );
|
||||||
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> RL.PlayMusicStream()
|
> playing = RL.IsMusicStreamPlaying( Music music )
|
||||||
|
|
||||||
Start music playing
|
|
||||||
*/
|
|
||||||
int laudioPlayMusicStream( lua_State *L ) {
|
|
||||||
PlayMusicStream( state->music );
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
> playing = RL.IsMusicStreamPlaying()
|
|
||||||
|
|
||||||
Check if music is playing
|
Check if music is playing
|
||||||
|
|
||||||
|
- Failure return nil
|
||||||
- Success return bool
|
- Success return bool
|
||||||
*/
|
*/
|
||||||
int laudioIsMusicStreamPlaying( lua_State *L ) {
|
int laudioIsMusicStreamPlaying( lua_State *L ) {
|
||||||
lua_pushboolean( L, IsMusicStreamPlaying( state->music ) );
|
if ( !lua_isnumber( L, 1 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.IsMusicStreamPlaying( Music music )" );
|
||||||
|
lua_pushnil( L );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
|
||||||
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushnil( L );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
lua_pushboolean( L, IsMusicStreamPlaying( *state->musics[ musicId ] ) );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> RL.StopMusicStream()
|
> success = RL.UpdateMusicStream( Music music )
|
||||||
|
|
||||||
|
Updates buffers for music streaming
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
|
*/
|
||||||
|
int laudioUpdateMusicStream( lua_State *L ) {
|
||||||
|
if ( !lua_isnumber( L, 1 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.UpdateMusicStream( Music music )" );
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
|
||||||
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
UpdateMusicStream( *state->musics[ musicId ] );
|
||||||
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
> success = RL.StopMusicStream( Music music )
|
||||||
|
|
||||||
Stop music playing
|
Stop music playing
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
*/
|
*/
|
||||||
int laudioStopMusicStream( lua_State *L ) {
|
int laudioStopMusicStream( lua_State *L ) {
|
||||||
StopMusicStream( state->music );
|
if ( !lua_isnumber( L, 1 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.StopMusicStream( Music music )" );
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
|
||||||
return 0;
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
StopMusicStream( *state->musics[ musicId ] );
|
||||||
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> RL.PauseMusicStream()
|
> success = RL.PauseMusicStream( Music music )
|
||||||
|
|
||||||
Pause music playing
|
Pause music playing
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
*/
|
*/
|
||||||
int laudioPauseMusicStream( lua_State *L ) {
|
int laudioPauseMusicStream( lua_State *L ) {
|
||||||
PauseMusicStream( state->music );
|
if ( !lua_isnumber( L, 1 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.PauseMusicStream( Music music )" );
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
|
||||||
return 0;
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
PauseMusicStream( *state->musics[ musicId ] );
|
||||||
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> RL.ResumeMusicStream()
|
> success = RL.ResumeMusicStream( Music music )
|
||||||
|
|
||||||
Resume playing paused music
|
Resume playing paused music
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
*/
|
*/
|
||||||
int laudioResumeMusicStream( lua_State *L ) {
|
int laudioResumeMusicStream( lua_State *L ) {
|
||||||
ResumeMusicStream( state->music );
|
if ( !lua_isnumber( L, 1 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.ResumeMusicStream( Music music )" );
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
|
||||||
return 0;
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
ResumeMusicStream( *state->musics[ musicId ] );
|
||||||
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> success = RL.SeekMusicStream( float position )
|
> success = RL.SeekMusicStream( Music music, float position )
|
||||||
|
|
||||||
Seek music to a position ( in seconds )
|
Seek music to a position ( in seconds )
|
||||||
|
|
||||||
@@ -691,21 +827,26 @@ Seek music to a position ( in seconds )
|
|||||||
- Success return true
|
- Success return true
|
||||||
*/
|
*/
|
||||||
int laudioSeekMusicStream( lua_State *L ) {
|
int laudioSeekMusicStream( lua_State *L ) {
|
||||||
if ( !lua_isnumber( L, 1 ) ) {
|
if ( !lua_isnumber( L, 1 ) || !lua_isnumber( L, 2 ) ) {
|
||||||
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.SeekMusicStream( float position )" );
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.SeekMusicStream( Music music, float position )" );
|
||||||
lua_pushboolean( L, false );
|
lua_pushboolean( L, false );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
float position = lua_tonumber( L, 1 );
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
float position = lua_tonumber( L, 2 );
|
||||||
|
|
||||||
SeekMusicStream( state->music, position );
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
SeekMusicStream( *state->musics[ musicId ], position );
|
||||||
lua_pushboolean( L, true );
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> success = RL.SetMusicVolume( float volume )
|
> success = RL.SetMusicVolume( Music music, float volume )
|
||||||
|
|
||||||
Set volume for music ( 1.0 is max level )
|
Set volume for music ( 1.0 is max level )
|
||||||
|
|
||||||
@@ -713,21 +854,26 @@ Set volume for music ( 1.0 is max level )
|
|||||||
- Success return true
|
- Success return true
|
||||||
*/
|
*/
|
||||||
int laudioSetMusicVolume( lua_State *L ) {
|
int laudioSetMusicVolume( lua_State *L ) {
|
||||||
if ( !lua_isnumber( L, 1 ) ) {
|
if ( !lua_isnumber( L, 1 ) || !lua_isnumber( L, 2 ) ) {
|
||||||
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.SetMusicVolume( float volume )" );
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.SetMusicVolume( Music music, float volume )" );
|
||||||
lua_pushboolean( L, false );
|
lua_pushboolean( L, false );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
float volume = lua_tonumber( L, 1 );
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
float volume = lua_tonumber( L, 2 );
|
||||||
|
|
||||||
SetMusicVolume( state->music, volume );
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
SetMusicVolume( *state->musics[ musicId ], volume );
|
||||||
lua_pushboolean( L, true );
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> success = RL.SetMusicPitch( float pitch )
|
> success = RL.SetMusicPitch( Music music, float pitch )
|
||||||
|
|
||||||
Set pitch for a music ( 1.0 is base level )
|
Set pitch for a music ( 1.0 is base level )
|
||||||
|
|
||||||
@@ -735,21 +881,26 @@ Set pitch for a music ( 1.0 is base level )
|
|||||||
- Success return true
|
- Success return true
|
||||||
*/
|
*/
|
||||||
int laudioSetMusicPitch( lua_State *L ) {
|
int laudioSetMusicPitch( lua_State *L ) {
|
||||||
if ( !lua_isnumber( L, 1 ) ) {
|
if ( !lua_isnumber( L, 1 ) || !lua_isnumber( L, 2 ) ) {
|
||||||
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.SetMusicPitch( float pitch )" );
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.SetMusicPitch( Music music, float pitch )" );
|
||||||
lua_pushboolean( L, false );
|
lua_pushboolean( L, false );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
float pitch = lua_tonumber( L, 1 );
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
float pitch = lua_tonumber( L, 2 );
|
||||||
|
|
||||||
SetMusicPitch( state->music, pitch );
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
SetMusicPitch( *state->musics[ musicId ], pitch );
|
||||||
lua_pushboolean( L, true );
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> success = RL.SetMusicPan( float pan )
|
> success = RL.SetMusicPan( Music music, float pan )
|
||||||
|
|
||||||
Set pan for a music ( 0.5 is center )
|
Set pan for a music ( 0.5 is center )
|
||||||
|
|
||||||
@@ -757,41 +908,122 @@ Set pan for a music ( 0.5 is center )
|
|||||||
- Success return true
|
- Success return true
|
||||||
*/
|
*/
|
||||||
int laudioSetMusicPan( lua_State *L ) {
|
int laudioSetMusicPan( lua_State *L ) {
|
||||||
if ( !lua_isnumber( L, 1 ) ) {
|
if ( !lua_isnumber( L, 1 ) || !lua_isnumber( L, 2 ) ) {
|
||||||
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.SetMusicPan( float pan )" );
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.SetMusicPan( Music music, float pan )" );
|
||||||
lua_pushboolean( L, false );
|
lua_pushboolean( L, false );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
float pan = lua_tonumber( L, 1 );
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
float pan = lua_tonumber( L, 2 );
|
||||||
|
|
||||||
SetMusicPitch( state->music, pan );
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
SetMusicPitch( *state->musics[ musicId ], pan );
|
||||||
lua_pushboolean( L, true );
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> length = RL.GetMusicTimeLength()
|
> success = RL.SetMusicLooping( Music music, bool looping )
|
||||||
|
|
||||||
Get music time length ( in seconds )
|
Set looping for a music
|
||||||
|
|
||||||
- Success return float
|
- Failure return false
|
||||||
|
- Success return true
|
||||||
*/
|
*/
|
||||||
int laudioGetMusicTimeLength( lua_State *L ) {
|
int laudioSetMusicLooping( lua_State *L ) {
|
||||||
lua_pushnumber( L, GetMusicTimeLength( state->music ) );
|
if ( !lua_isnumber( L, 1 ) || !lua_isboolean( L, 2 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.SetMusicLooping( Music music, bool looping )" );
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
bool looping = lua_toboolean( L, 2 );
|
||||||
|
|
||||||
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
state->musics[ musicId ]->looping = looping;
|
||||||
|
lua_pushboolean( L, true );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
> played = RL.GetMusicTimePlayed()
|
> looping = RL.GetMusicLooping( Music music )
|
||||||
|
|
||||||
Get current music time played ( in seconds )
|
Get looping of a music
|
||||||
|
|
||||||
- Success return float
|
- Failure return nil
|
||||||
|
- Success return bool
|
||||||
*/
|
*/
|
||||||
int laudioGetMusicTimePlayed( lua_State *L ) {
|
int laudioGetMusicLooping( lua_State *L ) {
|
||||||
lua_pushnumber( L, GetMusicTimePlayed( state->music ) );
|
if ( !lua_isnumber( L, 1 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.GetMusicLooping( Music music )" );
|
||||||
|
lua_pushnil( L );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
|
||||||
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushnil( L );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
lua_pushboolean( L, state->musics[ musicId ]->looping );
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
> length = RL.GetMusicTimeLength( Music music )
|
||||||
|
|
||||||
|
Get music time length ( in seconds )
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return float
|
||||||
|
*/
|
||||||
|
int laudioGetMusicTimeLength( lua_State *L ) {
|
||||||
|
if ( !lua_isnumber( L, 1 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.GetMusicTimeLength( Music music )" );
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
|
||||||
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
lua_pushnumber( L, GetMusicTimeLength( *state->musics[ musicId ] ) );
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
> played = RL.GetMusicTimePlayed( Music music )
|
||||||
|
|
||||||
|
Get current music time played ( in seconds )
|
||||||
|
|
||||||
|
- Failure return false
|
||||||
|
- Success return float
|
||||||
|
*/
|
||||||
|
int laudioGetMusicTimePlayed( lua_State *L ) {
|
||||||
|
if ( !lua_isnumber( L, 1 ) ) {
|
||||||
|
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.GetMusicTimePlayed( Music music )" );
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
size_t musicId = lua_tointeger( L, 1 );
|
||||||
|
|
||||||
|
if ( !validMusic( musicId ) ) {
|
||||||
|
lua_pushboolean( L, false );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
lua_pushnumber( L, GetMusicTimePlayed( *state->musics[ musicId ] ) );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1153,12 +1153,15 @@ void luaRegister() {
|
|||||||
assingGlobalFunction( "LoadMusicStream", laudioLoadMusicStream );
|
assingGlobalFunction( "LoadMusicStream", laudioLoadMusicStream );
|
||||||
assingGlobalFunction( "PlayMusicStream", laudioPlayMusicStream );
|
assingGlobalFunction( "PlayMusicStream", laudioPlayMusicStream );
|
||||||
assingGlobalFunction( "IsMusicStreamPlaying", laudioIsMusicStreamPlaying );
|
assingGlobalFunction( "IsMusicStreamPlaying", laudioIsMusicStreamPlaying );
|
||||||
|
assingGlobalFunction( "UpdateMusicStream", laudioUpdateMusicStream );
|
||||||
assingGlobalFunction( "StopMusicStream", laudioStopMusicStream );
|
assingGlobalFunction( "StopMusicStream", laudioStopMusicStream );
|
||||||
assingGlobalFunction( "PauseMusicStream", laudioPauseMusicStream );
|
assingGlobalFunction( "PauseMusicStream", laudioPauseMusicStream );
|
||||||
assingGlobalFunction( "ResumeMusicStream", laudioResumeMusicStream );
|
assingGlobalFunction( "ResumeMusicStream", laudioResumeMusicStream );
|
||||||
assingGlobalFunction( "SetMusicVolume", laudioSetMusicVolume );
|
assingGlobalFunction( "SetMusicVolume", laudioSetMusicVolume );
|
||||||
assingGlobalFunction( "SetMusicPitch", laudioSetMusicPitch );
|
assingGlobalFunction( "SetMusicPitch", laudioSetMusicPitch );
|
||||||
assingGlobalFunction( "SetMusicPan", laudioSetMusicPan );
|
assingGlobalFunction( "SetMusicPan", laudioSetMusicPan );
|
||||||
|
assingGlobalFunction( "SetMusicLooping", laudioSetMusicLooping );
|
||||||
|
assingGlobalFunction( "GetMusicLooping", laudioGetMusicLooping );
|
||||||
assingGlobalFunction( "GetMusicTimeLength", laudioGetMusicTimeLength );
|
assingGlobalFunction( "GetMusicTimeLength", laudioGetMusicTimeLength );
|
||||||
assingGlobalFunction( "GetMusicTimePlayed", laudioGetMusicTimePlayed );
|
assingGlobalFunction( "GetMusicTimePlayed", laudioGetMusicTimePlayed );
|
||||||
|
|
||||||
|
|||||||
@@ -65,15 +65,11 @@ int main( int argn, const char **argc ) {
|
|||||||
if ( WindowShouldClose() ) {
|
if ( WindowShouldClose() ) {
|
||||||
state->run = false;
|
state->run = false;
|
||||||
}
|
}
|
||||||
if ( IsAudioDeviceReady() ) {
|
|
||||||
UpdateMusicStream( state->music );
|
|
||||||
}
|
|
||||||
luaCallProcess();
|
luaCallProcess();
|
||||||
luaCallDraw();
|
luaCallDraw();
|
||||||
}
|
}
|
||||||
luaCallExit();
|
luaCallExit();
|
||||||
}
|
}
|
||||||
|
|
||||||
stateFree();
|
stateFree();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
12
src/state.c
12
src/state.c
@@ -42,6 +42,10 @@ bool stateInit( const char *exePath ) {
|
|||||||
state->soundAlloc = ALLOC_PAGE_SIZE;
|
state->soundAlloc = ALLOC_PAGE_SIZE;
|
||||||
state->soundCount = 0;
|
state->soundCount = 0;
|
||||||
state->sounds = malloc( state->soundAlloc * sizeof( Sound* ) );
|
state->sounds = malloc( state->soundAlloc * sizeof( Sound* ) );
|
||||||
|
/* Musics. */
|
||||||
|
state->musicAlloc = ALLOC_PAGE_SIZE;
|
||||||
|
state->musicCount = 0;
|
||||||
|
state->musics = malloc( state->musicAlloc * sizeof( Music* ) );
|
||||||
/* Camera2D's. */
|
/* Camera2D's. */
|
||||||
state->camera2DAlloc = ALLOC_PAGE_SIZE;
|
state->camera2DAlloc = ALLOC_PAGE_SIZE;
|
||||||
state->camera2DCount = 0;
|
state->camera2DCount = 0;
|
||||||
@@ -157,6 +161,12 @@ void stateFree() {
|
|||||||
free( state->sounds[i] );
|
free( state->sounds[i] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for ( int i = 0; i < state->musicCount; ++i ) {
|
||||||
|
if ( state->musics[i] != NULL ) {
|
||||||
|
UnloadMusicStream( *state->musics[i] );
|
||||||
|
free( state->musics[i] );
|
||||||
|
}
|
||||||
|
}
|
||||||
for ( int i = 0; i < state->camera2DCount; ++i ) {
|
for ( int i = 0; i < state->camera2DCount; ++i ) {
|
||||||
if ( state->camera2Ds[i] != NULL ) {
|
if ( state->camera2Ds[i] != NULL ) {
|
||||||
free( state->camera2Ds[i] );
|
free( state->camera2Ds[i] );
|
||||||
@@ -213,7 +223,6 @@ void stateFree() {
|
|||||||
|
|
||||||
if ( IsAudioDeviceReady() ) {
|
if ( IsAudioDeviceReady() ) {
|
||||||
CloseAudioDevice();
|
CloseAudioDevice();
|
||||||
UnloadMusicStream( state->music );
|
|
||||||
}
|
}
|
||||||
if ( state->hasWindow ) {
|
if ( state->hasWindow ) {
|
||||||
CloseWindow();
|
CloseWindow();
|
||||||
@@ -227,6 +236,7 @@ void stateFree() {
|
|||||||
free( state->fonts );
|
free( state->fonts );
|
||||||
free( state->waves );
|
free( state->waves );
|
||||||
free( state->sounds );
|
free( state->sounds );
|
||||||
|
free( state->musics );
|
||||||
free( state->camera2Ds );
|
free( state->camera2Ds );
|
||||||
free( state->camera3Ds );
|
free( state->camera3Ds );
|
||||||
free( state->meshes );
|
free( state->meshes );
|
||||||
|
|||||||
Reference in New Issue
Block a user