Shader load functions argument fix. File drop and change directory.

This commit is contained in:
jussi
2022-05-18 18:10:45 +03:00
parent 59ea29d8ff
commit f293e25dd8
7 changed files with 144 additions and 48 deletions

34
API.md
View File

@@ -1120,7 +1120,8 @@ End scissor mode
> shader = RL_LoadShader( string vsFileName, string fsFileName ) > shader = RL_LoadShader( string vsFileName, string fsFileName )
Load shader from files and bind default locations Load shader from files and bind default locations.
NOTE: Set nil if no shader
- Failure return -1 - Failure return -1
- Success return int - Success return int
@@ -1130,6 +1131,7 @@ Load shader from files and bind default locations
> shader = RL_LoadShaderFromMemory( string vsCode, string fsCode ) > shader = RL_LoadShaderFromMemory( string vsCode, string fsCode )
Load shader from code strings and bind default locations Load shader from code strings and bind default locations
NOTE: Set nil if no shader
- Failure return -1 - Failure return -1
- Success return int - Success return int
@@ -1577,7 +1579,7 @@ Get full path for a given fileName with path ( Uses static string )
--- ---
> filePath = RL_GetPrevDirectoryPath( string dirPath ) > directory = RL_GetPrevDirectoryPath( string dirPath )
Get previous directory path for a given path ( Uses static string ) Get previous directory path for a given path ( Uses static string )
@@ -1586,11 +1588,10 @@ Get previous directory path for a given path ( Uses static string )
--- ---
> filePath = RL_GetWorkingDirectory() > directory = RL_GetWorkingDirectory()
Get current working directory ( Uses static string ) Get current working directory ( Uses static string )
- Failure return false
- Success return string - Success return string
--- ---
@@ -1604,6 +1605,31 @@ Get filenames in a directory path
--- ---
> success = RL_ChangeDirectory( string directory )
Change working directory, return true on success
- Failure return false
- Success return true
---
> fileDropped = RL_IsFileDropped()
Check if a file has been dropped into window
- Success return bool
---
> files = RL_GetDroppedFiles()
Get dropped files names
- Success return string{}
---
> time = RL_GetFileModTime( string fileName ) > time = RL_GetFileModTime( string fileName )
Get file modification time ( Last write time ) Get file modification time ( Last write time )

View File

@@ -15,7 +15,6 @@ ReiLua is currently in arbitrary version 0.1 and some planned raylib functionali
List of some MISSING features that are planned to be included. For specific function, check API. List of some MISSING features that are planned to be included. For specific function, check API.
* Core * Core
* Files drop
* VR stereo config functions for VR simulator * VR stereo config functions for VR simulator
* Textures * Textures
* Texture update functions * Texture update functions

View File

@@ -2,11 +2,8 @@ Current {
} }
Backlog { Backlog {
* Set reguirement for two arguments in Shader load functions. * More and better examples.
* More and better examples
* Core
* Files drop
* Text * Text
* More Font loading/unloading functions * More Font loading/unloading functions
* Codepoints * Codepoints

View File

@@ -13,7 +13,9 @@ function init()
RL_SetWindowState( FLAG_WINDOW_RESIZABLE ) RL_SetWindowState( FLAG_WINDOW_RESIZABLE )
RL_SetWindowPosition( { mPos[1] + mSize[1] / 2 - winSize[1] / 2, mPos[2] + mSize[2] / 2 - winSize[2] / 2 } ) RL_SetWindowPosition( { mPos[1] + mSize[1] / 2 - winSize[1] / 2, mPos[2] + mSize[2] / 2 - winSize[2] / 2 } )
image = RL_GenImageColor( winSize[1], winSize[2], WHITE ) image = RL_GenImageColor( winSize[1], winSize[2], WHITE )
catImage = RL_LoadImage( RL_GetBasePath().."../resources/images/cat.png" ) -- Test changing working directory.
RL_ChangeDirectory( RL_GetBasePath().."../resources" )
catImage = RL_LoadImage( RL_GetWorkingDirectory().."/images/cat.png" )
RL_ImageClearBackground( image, { 150, 60, 100 } ) RL_ImageClearBackground( image, { 150, 60, 100 } )
RL_ImageDrawPixel( image, { 32, 32 }, WHITE ) RL_ImageDrawPixel( image, { 32, 32 }, WHITE )
RL_ImageDrawLine( image, { 32, 45 }, { 100, 60 }, GREEN ) RL_ImageDrawLine( image, { 32, 45 }, { 100, 60 }, GREEN )
@@ -23,12 +25,10 @@ function init()
RL_ImageDraw( image, catImage, { 143, 25, 230, 250 }, { 200, 200, 230, 250 }, WHITE ) RL_ImageDraw( image, catImage, { 143, 25, 230, 250 }, { 200, 200, 230, 250 }, WHITE )
RL_ImageDrawTextEx( image, 0, "Hello", { 300, 32 }, 48.0, 1.0, WHITE ) RL_ImageDrawTextEx( image, 0, "Hello", { 300, 32 }, 48.0, 1.0, WHITE )
-- catCopy = RL_ImageCopy( catImage )
local src = { 80, 70, 96, 96 } local src = { 80, 70, 96, 96 }
catCopy = RL_ImageFromImage( catImage, src ) catCopy = RL_ImageFromImage( catImage, src )
RL_ImageDraw( image, catCopy, src, { 600, 200, src[3], src[4] }, WHITE ) RL_ImageDraw( image, catCopy, src, { 600, 200, src[3], src[4] }, WHITE )
-- RL_ImageDraw( image, catCopy, src, src, WHITE )
textImage = RL_ImageText( 0, "Cat", 10, 4, WHITE ) textImage = RL_ImageText( 0, "Cat", 10, 4, WHITE )
local imageSize = RL_GetImageSize( textImage ) local imageSize = RL_GetImageSize( textImage )

View File

@@ -81,6 +81,9 @@ int lcoreGetDirectoryPath( lua_State *L );
int lcoreGetPrevDirectoryPath( lua_State *L ); int lcoreGetPrevDirectoryPath( lua_State *L );
int lcoreGetWorkingDirectory( lua_State *L ); int lcoreGetWorkingDirectory( lua_State *L );
int lcoreGetDirectoryFiles( lua_State *L ); int lcoreGetDirectoryFiles( lua_State *L );
int lcoreChangeDirectory( lua_State *L );
int lcoreIsFileDropped( lua_State *L );
int lcoreGetDroppedFiles( lua_State *L );
int lcoreGetFileModTime( lua_State *L ); int lcoreGetFileModTime( lua_State *L );
/* Camera2D. */ /* Camera2D. */
int lcoreCreateCamera2D( lua_State *L ); int lcoreCreateCamera2D( lua_State *L );

View File

@@ -849,31 +849,34 @@ int lcoreEndScissorMode( lua_State *L ) {
/* /*
> shader = RL_LoadShader( string vsFileName, string fsFileName ) > shader = RL_LoadShader( string vsFileName, string fsFileName )
Load shader from files and bind default locations Load shader from files and bind default locations.
NOTE: Set nil if no shader
- Failure return -1 - Failure return -1
- Success return int - Success return int
*/ */
int lcoreLoadShader( lua_State *L ) { int lcoreLoadShader( lua_State *L ) {
// if ( !lua_isstring( L, -2 ) || !lua_isstring( L, -1 ) ) { if ( !( lua_isstring( L, -2 ) || lua_isnil( L, -2 ) ) || !( lua_isstring( L, -1 ) || lua_isnil( L, -1 ) ) ) {
// TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_LoadShader( string vsFileName, string fsFileName )" ); TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_LoadShader( string vsFileName, string fsFileName )" );
// lua_pushinteger( L, -1 ); lua_pushinteger( L, -1 );
// return 1; return 1;
// }
char fsFileName[ STRING_LEN ] = { '\0' };
char vsFileName[ STRING_LEN ] = { '\0' };
if ( lua_isstring( L, -1 ) ) {
if ( FileExists( lua_tostring( L, -1 ) ) ) {
strcpy( fsFileName, lua_tostring( L, -1 ) );
}
} }
char *vsFileName = NULL;
char *fsFileName = NULL;
if ( lua_isstring( L, -2 ) ) { if ( lua_isstring( L, -2 ) ) {
if ( FileExists( lua_tostring( L, -2 ) ) ) { if ( FileExists( lua_tostring( L, -2 ) ) ) {
vsFileName = malloc( STRING_LEN * sizeof( char ) );
strcpy( vsFileName, lua_tostring( L, -2 ) ); strcpy( vsFileName, lua_tostring( L, -2 ) );
} }
} }
if ( lua_isstring( L, -1 ) ) {
if ( FileExists( lua_tostring( L, -1 ) ) ) {
fsFileName = malloc( STRING_LEN * sizeof( char ) );
strcpy( fsFileName, lua_tostring( L, -1 ) );
}
}
int i = 0; int i = 0;
@@ -883,12 +886,17 @@ int lcoreLoadShader( lua_State *L ) {
} }
} }
state->shaders[i] = malloc( sizeof( Shader ) ); state->shaders[i] = malloc( sizeof( Shader ) );
// *state->shaders[i] = LoadShader( lua_tostring( L, -2 ), lua_tostring( L, -1 ) );
*state->shaders[i] = LoadShader( vsFileName, fsFileName ); *state->shaders[i] = LoadShader( vsFileName, fsFileName );
// *state->shaders[i] = LoadShader( 0, fsFileName );
lua_pushinteger( L, i ); lua_pushinteger( L, i );
checkShaderRealloc( i ); checkShaderRealloc( i );
if ( vsFileName != NULL ) {
free( vsFileName );
}
if ( fsFileName != NULL ) {
free( fsFileName );
}
return 1; return 1;
} }
@@ -896,27 +904,34 @@ int lcoreLoadShader( lua_State *L ) {
> shader = RL_LoadShaderFromMemory( string vsCode, string fsCode ) > shader = RL_LoadShaderFromMemory( string vsCode, string fsCode )
Load shader from code strings and bind default locations Load shader from code strings and bind default locations
NOTE: Set nil if no shader
- Failure return -1 - Failure return -1
- Success return int - Success return int
*/ */
int lcoreLoadShaderFromMemory( lua_State *L ) { int lcoreLoadShaderFromMemory( lua_State *L ) {
// if ( !lua_isstring( L, -2 ) || !lua_isstring( L, -1 ) ) { if ( !( lua_isstring( L, -2 ) || lua_isnil( L, -2 ) ) || !( lua_isstring( L, -1 ) || lua_isnil( L, -1 ) ) ) {
// TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_LoadShaderFromMemory( string vsCode, string fsCode )" ); TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_LoadShaderFromMemory( string vsCode, string fsCode )" );
// lua_pushinteger( L, -1 ); lua_pushinteger( L, -1 );
// return 1; return 1;
// }
char fs[ STRING_LEN ] = { '\0' };
char vs[ STRING_LEN ] = { '\0' };
if ( lua_isstring( L, -1 ) ) {
strcpy( fs, lua_tostring( L, -1 ) );
} }
char *vs = NULL;
char *fs = NULL;
if ( lua_isstring( L, -2 ) ) { if ( lua_isstring( L, -2 ) ) {
size_t vsLen = lua_rawlen( L, -2 );
vs = malloc( vsLen * sizeof( char ) );
strcpy( vs, lua_tostring( L, -2 ) ); strcpy( vs, lua_tostring( L, -2 ) );
} }
if ( lua_isstring( L, -1 ) ) {
size_t fsLen = lua_rawlen( L, -1 );
fs = malloc( fsLen * sizeof( char ) );
strcpy( fs, lua_tostring( L, -1 ) );
}
int i = 0; int i = 0;
@@ -926,11 +941,17 @@ int lcoreLoadShaderFromMemory( lua_State *L ) {
} }
} }
state->shaders[i] = malloc( sizeof( Shader ) ); state->shaders[i] = malloc( sizeof( Shader ) );
// *state->shaders[i] = LoadShaderFromMemory( lua_tostring( L, -2 ), lua_tostring( L, -1 ) );
*state->shaders[i] = LoadShaderFromMemory( vs, fs ); *state->shaders[i] = LoadShaderFromMemory( vs, fs );
lua_pushinteger( L, i ); lua_pushinteger( L, i );
checkShaderRealloc( i ); checkShaderRealloc( i );
if ( vs != NULL ) {
free( vs );
}
if ( fs != NULL ) {
free( fs );
}
return 1; return 1;
} }
@@ -1932,7 +1953,7 @@ int lcoreGetDirectoryPath( lua_State *L ) {
} }
/* /*
> filePath = RL_GetPrevDirectoryPath( string dirPath ) > directory = RL_GetPrevDirectoryPath( string dirPath )
Get previous directory path for a given path ( Uses static string ) Get previous directory path for a given path ( Uses static string )
@@ -1950,19 +1971,13 @@ int lcoreGetPrevDirectoryPath( lua_State *L ) {
} }
/* /*
> filePath = RL_GetWorkingDirectory() > directory = RL_GetWorkingDirectory()
Get current working directory ( Uses static string ) Get current working directory ( Uses static string )
- Failure return false
- Success return string - Success return string
*/ */
int lcoreGetWorkingDirectory( lua_State *L ) { int lcoreGetWorkingDirectory( lua_State *L ) {
if ( !lua_isstring( L, -1 ) ) {
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GetWorkingDirectory()" );
lua_pushboolean( L, false );
return 1;
}
lua_pushstring( L, GetWorkingDirectory() ); lua_pushstring( L, GetWorkingDirectory() );
return 1; return 1;
} }
@@ -1995,6 +2010,59 @@ int lcoreGetDirectoryFiles( lua_State *L ) {
return 1; return 1;
} }
/*
> success = RL_ChangeDirectory( string directory )
Change working directory, return true on success
- Failure return false
- Success return true
*/
int lcoreChangeDirectory( lua_State *L ) {
if ( !lua_isstring( L, -1 ) ) {
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_ChangeDirectory( string directory )" );
lua_pushboolean( L, false );
return 1;
}
lua_pushboolean( L, ChangeDirectory( lua_tostring( L, -1 ) ) );
return 1;
}
/*
> fileDropped = RL_IsFileDropped()
Check if a file has been dropped into window
- Success return bool
*/
int lcoreIsFileDropped( lua_State *L ) {
lua_pushboolean( L, IsFileDropped() );
return 1;
}
/*
> files = RL_GetDroppedFiles()
Get dropped files names
- Success return string{}
*/
int lcoreGetDroppedFiles( lua_State *L ) {
int count = 0;
char **files = GetDroppedFiles( &count );
lua_createtable( L, count, 0 );
for ( int i = 0; i < count; ++i ) {
lua_pushstring( L, files[i] );
lua_rawseti( L, -2, i+1 );
}
ClearDroppedFiles();
return 1;
}
/* /*
> time = RL_GetFileModTime( string fileName ) > time = RL_GetFileModTime( string fileName )

View File

@@ -552,6 +552,9 @@ void luaRegister() {
lua_register( L, "RL_GetPrevDirectoryPath", lcoreGetPrevDirectoryPath ); lua_register( L, "RL_GetPrevDirectoryPath", lcoreGetPrevDirectoryPath );
lua_register( L, "RL_GetWorkingDirectory", lcoreGetWorkingDirectory ); lua_register( L, "RL_GetWorkingDirectory", lcoreGetWorkingDirectory );
lua_register( L, "RL_GetDirectoryFiles", lcoreGetDirectoryFiles ); lua_register( L, "RL_GetDirectoryFiles", lcoreGetDirectoryFiles );
lua_register( L, "RL_ChangeDirectory", lcoreChangeDirectory );
lua_register( L, "RL_IsFileDropped", lcoreIsFileDropped );
lua_register( L, "RL_GetDroppedFiles", lcoreGetDroppedFiles );
lua_register( L, "RL_GetFileModTime", lcoreGetFileModTime ); lua_register( L, "RL_GetFileModTime", lcoreGetFileModTime );
/* Camera3D. */ /* Camera3D. */
lua_register( L, "RL_CreateCamera2D", lcoreCreateCamera2D ); lua_register( L, "RL_CreateCamera2D", lcoreCreateCamera2D );