Release v0.5.

This commit is contained in:
jussi
2023-10-27 01:16:03 +03:00
parent 56c365c8cc
commit 6be8d71fac
11 changed files with 116 additions and 25 deletions

13
API.md
View File

@@ -7806,6 +7806,19 @@ Delete framebuffer from GPU
--- ---
## RLGL - Shaders management
---
> success = RL.rlLoadShaderCode( string vsCode, string fsCode )
Load shader from code strings
- Failure return nil
- Success return int
---
## RLGL - Matrix state management ## RLGL - Matrix state management
--- ---

View File

@@ -29,6 +29,14 @@ List of some MISSING features that are planned to be included. For specific func
* Audio * Audio
* AudioStream management functions * AudioStream management functions
## Roadmap
v0.6
* Switch from id based objects to Lua userdata(like most bindings). Resources won't be stored in State anymore.
* Change argument checking to use more luaL_checkx functions and remove the TraceLog messages.
v0.7
* Switch to Raylib v5.0?
## Usage ## Usage
Application needs 'main.lua' or 'main' file as entry point. ReiLua executable will first look it from same directory. Alternatively, path to the folder where "main.lua" is located can be given as argument. There are five Lua functions that the framework will call, 'RL.init', 'RL.process', 'RL.draw', 'RL.log' and 'RL.exit'. Application needs 'main.lua' or 'main' file as entry point. ReiLua executable will first look it from same directory. Alternatively, path to the folder where "main.lua" is located can be given as argument. There are five Lua functions that the framework will call, 'RL.init', 'RL.process', 'RL.draw', 'RL.log' and 'RL.exit'.

View File

@@ -6251,6 +6251,16 @@ function RL.rlFramebufferComplete( id ) end
---@return any success ---@return any success
function RL.rlUnloadFramebuffer( id ) end function RL.rlUnloadFramebuffer( id ) end
-- RLGL - Shaders management
---Load shader from code strings
---- Failure return nil
---- Success return int
---@param vsCode string
---@param fsCode string
---@return any success
function RL.rlLoadShaderCode( vsCode, fsCode ) end
-- RLGL - Matrix state management -- RLGL - Matrix state management
---Get internal modelview matrix ---Get internal modelview matrix

View File

@@ -1,6 +1,5 @@
local textColor = RL.BLACK local textColor = RL.BLACK
local textPos = { 192, 200 } local textPos = { 192, 200 }
local imageFont = -1
local text = "Congrats! You created your first window!" local text = "Congrats! You created your first window!"
function RL.init() function RL.init()

View File

@@ -28,6 +28,10 @@ typedef struct {
int y; int y;
} Buffer; } Buffer;
typedef struct {
int age;
} Kissa;
bool luaInit( int argn, const char **argc ); bool luaInit( int argn, const char **argc );
int luaTraceback( lua_State *L ); int luaTraceback( lua_State *L );
bool luaCallMain(); bool luaCallMain();

View File

@@ -5,7 +5,7 @@
#define VERSION_MAJOR 0 #define VERSION_MAJOR 0
#define VERSION_MINOR 5 #define VERSION_MINOR 5
#define VERSION_PATCH 0 #define VERSION_PATCH 0
#define VERSION_DEV 1 #define VERSION_DEV 0
#include "glad.h" #include "glad.h"
#include <stdio.h> #include <stdio.h>

View File

@@ -981,7 +981,6 @@ int lcoreLoadShader( lua_State *L ) {
lua_pushinteger( L, -1 ); lua_pushinteger( L, -1 );
return 1; return 1;
} }
char *vsFileName = NULL; char *vsFileName = NULL;
char *fsFileName = NULL; char *fsFileName = NULL;

View File

@@ -641,21 +641,39 @@ static void defineGlobals() {
lua_pop( L, -1 ); lua_pop( L, -1 );
} }
static int freeBuffer( lua_State *L ) { static int gcBuffer( lua_State *L ) {
Buffer *buffer = luaL_checkudata ( L, 1, "Buffer" ); Buffer *buffer = luaL_checkudata ( L, 1, "Buffer" );
free( buffer->data ); free( buffer->data );
} }
static void defineCBuffer() { static void defineBuffer() {
lua_State *L = state->luaState; lua_State *L = state->luaState;
luaL_newmetatable( L, "Buffer" ); luaL_newmetatable( L, "Buffer" );
lua_pushvalue( L, -1 ); lua_pushvalue( L, -1 );
lua_setfield( L, -2, "__index" ); lua_setfield( L, -2, "__index" );
lua_pushcfunction( L, freeBuffer ); lua_pushcfunction( L, gcBuffer );
lua_setfield( L, -2, "__gc" ); lua_setfield( L, -2, "__gc" );
} }
// static int gcTexture( lua_State *L ) {
// Texture *texture = luaL_checkudata ( L, 1, "Texture" );
// printf( "gcTexture\n" );
// printf( "\ttexture->id = %d\n", texture->id );
// UnloadTexture( *texture );
// }
// static void defineTexture() {
// lua_State *L = state->luaState;
// luaL_newmetatable( L, "Texture" );
// lua_pushvalue( L, -1 );
// lua_setfield( L, -2, "__index" );
// lua_pushcfunction( L, gcTexture );
// lua_setfield( L, -2, "__gc" );
// }
// Custom logging funtion. // Custom logging funtion.
static void logCustom( int logLevel, const char *text, va_list args ) { static void logCustom( int logLevel, const char *text, va_list args ) {
char string[ STRING_LEN ] = {'\0'}; char string[ STRING_LEN ] = {'\0'};
@@ -678,24 +696,27 @@ static void logCustom( int logLevel, const char *text, va_list args ) {
/* Call Lua log function if exists. */ /* Call Lua log function if exists. */
lua_State *L = state->luaState; lua_State *L = state->luaState;
lua_pushcfunction( L, luaTraceback ); /* Prevent calling lua log function when lua is already shutdown. */
int tracebackidx = lua_gettop( L ); if ( L != NULL ) {
lua_pushcfunction( L, luaTraceback );
int tracebackidx = lua_gettop( L );
lua_getglobal( L, "RL" ); lua_getglobal( L, "RL" );
lua_getfield( L, -1, "log" ); lua_getfield( L, -1, "log" );
if ( lua_isfunction( L, -1 ) ) { if ( lua_isfunction( L, -1 ) ) {
lua_pushinteger( L, logLevel ); lua_pushinteger( L, logLevel );
lua_pushstring( L, msg ); lua_pushstring( L, msg );
if ( lua_pcall( L, 2, 0, tracebackidx ) != 0 ) { if ( lua_pcall( L, 2, 0, tracebackidx ) != 0 ) {
TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) ); TraceLog( LOG_ERROR, "Lua error: %s", lua_tostring( L, -1 ) );
state->run = false; state->run = false;
lua_pop( L, -1 ); lua_pop( L, -1 );
return; return;
} }
} }
lua_pop( L, -1 ); lua_pop( L, -1 );
}
} }
/* Window events. */ /* Window events. */
@@ -1039,7 +1060,8 @@ bool luaInit( int argn, const char **argc ) {
return false; return false;
} }
defineGlobals(); defineGlobals();
defineCBuffer(); defineBuffer();
// defineTexture();
/* Set arguments. */ /* Set arguments. */
lua_getglobal( L, "RL" ); lua_getglobal( L, "RL" );
@@ -2166,6 +2188,7 @@ Vector2 uluaGetVector2( lua_State *L ) {
} }
Vector2 uluaGetVector2Index( lua_State *L, int index ) { Vector2 uluaGetVector2Index( lua_State *L, int index ) {
// luaL_checktype( L, index, LUA_TTABLE );
Vector2 vector = { 0.0f, 0.0f }; Vector2 vector = { 0.0f, 0.0f };
if ( !lua_istable( L, index ) ) { if ( !lua_istable( L, index ) ) {

View File

@@ -1732,6 +1732,29 @@ int lrlglUnloadFramebuffer( lua_State *L ) {
return 1; return 1;
} }
/*
## RLGL - Shaders management
*/
/*
> success = RL.rlLoadShaderCode( string vsCode, string fsCode )
Load shader from code strings
- Failure return nil
- Success return int
*/
// int lrlglUnloadFramebuffer( lua_State *L ) {
// if ( !lua_isstring( L, 1 ) || !lua_isstring( L, 2 ) ) {
// TraceLog( state->logLevelInvalid, "%s", "Bad call of function. RL.rlLoadShaderCode( string vsCode, string fsCode )" );
// lua_pushnil( L );
// return 1;
// }
// lua_pushinteger( L, rlLoadShaderCode( luaL_checkstring( L, 1 ), luaL_checkstring( L, 2 ) ) );
// return 1;
// }
/* /*
## RLGL - Matrix state management ## RLGL - Matrix state management
*/ */

View File

@@ -211,11 +211,12 @@ void stateFree() {
if ( IsAudioDeviceReady() ) { if ( IsAudioDeviceReady() ) {
CloseAudioDevice(); CloseAudioDevice();
} }
if ( state->hasWindow ) {
CloseWindow();
}
if ( state->luaState != NULL ) { if ( state->luaState != NULL ) {
lua_close( state->luaState ); lua_close( state->luaState );
state->luaState = NULL;
}
if ( state->hasWindow ) {
CloseWindow();
} }
free( state->images ); free( state->images );
free( state->textures ); free( state->textures );

View File

@@ -1673,6 +1673,12 @@ int ltexturesLoadTexture( lua_State *L ) {
int i = newTexture( TEXTURE_TYPE_TEXTURE ); int i = newTexture( TEXTURE_TYPE_TEXTURE );
state->textures[i]->texture = LoadTexture( lua_tostring( L, 1 ) ); state->textures[i]->texture = LoadTexture( lua_tostring( L, 1 ) );
lua_pushinteger( L, i ); lua_pushinteger( L, i );
// Texture loadedTex = LoadTexture( lua_tostring( L, 1 ) );
// Texture *texture = lua_newuserdata( L, sizeof( Texture ) );
// *texture = loadedTex;
// luaL_setmetatable( L, "Texture" );
return 1; return 1;
} }
else { else {
@@ -1921,10 +1927,12 @@ int ltexturesDrawTexture( lua_State *L ) {
return 1; return 1;
} }
Texture texture = uluaGetTexture( L, 1 ); Texture texture = uluaGetTexture( L, 1 );
// Texture *texture = luaL_checkudata( L, 1, "Texture" );
Vector2 pos = uluaGetVector2Index( L, 2 ); Vector2 pos = uluaGetVector2Index( L, 2 );
Color color = uluaGetColorIndex( L, 3 ); Color color = uluaGetColorIndex( L, 3 );
DrawTexture( texture, pos.x, pos.y, color ); DrawTexture( texture, pos.x, pos.y, color );
// DrawTexture( *texture, pos.x, pos.y, color );
lua_pushboolean( L, true ); lua_pushboolean( L, true );
return 1; return 1;
@@ -2174,6 +2182,9 @@ int ltexturesGetTextureSize( lua_State *L ) {
Texture texture = uluaGetTexture( L, 1 ); Texture texture = uluaGetTexture( L, 1 );
uluaPushVector2( L, (Vector2){ texture.width, texture.height } ); uluaPushVector2( L, (Vector2){ texture.width, texture.height } );
// Texture *texture = luaL_checkudata( L, 1, "Texture" );
// uluaPushVector2( L, (Vector2){ texture->width, texture->height } );
return 1; return 1;
} }