summaryrefslogtreecommitdiff
path: root/src/core.c
diff options
context:
space:
mode:
authorjussi2023-10-30 22:40:20 +0200
committerjussi2023-10-30 22:40:20 +0200
commitc3295e014d979c0213b3fb7e4837b5356bc8fdb4 (patch)
tree66ee22c7140761a17bf174d71fecfb94c1378b1d /src/core.c
parent6e0d577d63b221797cdc7f392718dd1c4fb384b4 (diff)
downloadreilua-enhanced-c3295e014d979c0213b3fb7e4837b5356bc8fdb4.tar.gz
reilua-enhanced-c3295e014d979c0213b3fb7e4837b5356bc8fdb4.tar.bz2
reilua-enhanced-c3295e014d979c0213b3fb7e4837b5356bc8fdb4.zip
Reintroducing Unload functions. Is*Ready functions. GC_UNLOAD setting and check function.
Diffstat (limited to 'src/core.c')
-rw-r--r--src/core.c77
1 files changed, 66 insertions, 11 deletions
diff --git a/src/core.c b/src/core.c
index 5304b23..92eb5bd 100644
--- a/src/core.c
+++ b/src/core.c
@@ -552,33 +552,34 @@ int lcoreLoadBuffer( lua_State *L ) {
luaL_checktype( L, 1, LUA_TTABLE );
int type = luaL_checkinteger( L, 2 );
- Buffer *buffer = lua_newuserdata( L, sizeof( Buffer ) );
+ Buffer buffer = { 0 };
+ // Buffer *buffer = lua_newuserdata( L, sizeof( Buffer ) );
int len = uluaGetTableLenIndex( L, 1 );
switch ( type ) {
case BUFFER_UNSIGNED_CHAR:
- buffer->size = len * sizeof( unsigned char );
+ buffer.size = len * sizeof( unsigned char );
break;
case BUFFER_UNSIGNED_SHORT:
- buffer->size = len * sizeof( unsigned short );
+ buffer.size = len * sizeof( unsigned short );
break;
case BUFFER_UNSIGNED_INT:
- buffer->size = len * sizeof( unsigned int );
+ buffer.size = len * sizeof( unsigned int );
break;
case BUFFER_FLOAT:
- buffer->size = len * sizeof( float );
+ buffer.size = len * sizeof( float );
break;
default:
break;
}
- buffer->data = malloc( buffer->size );
+ buffer.data = malloc( buffer.size );
int t = 1;
int i = 0;
- unsigned char *up = buffer->data;
- unsigned short *sp = buffer->data;
- unsigned int *ip = buffer->data;
- float *fp = buffer->data;
+ unsigned char *up = buffer.data;
+ unsigned short *sp = buffer.data;
+ unsigned int *ip = buffer.data;
+ float *fp = buffer.data;
lua_pushnil( L );
@@ -606,7 +607,33 @@ int lcoreLoadBuffer( lua_State *L ) {
lua_pop( L, 1 );
i++;
}
- luaL_setmetatable( L, "Buffer" );
+ uluaPushBuffer( L, buffer );
+
+ return 1;
+}
+
+/*
+> RL.UnloadBuffer( Buffer buffer )
+
+Unload buffer data
+*/
+int lcoreUnloadBuffer( lua_State *L ) {
+ Buffer *buffer = uluaGetBuffer( L, 1 );
+
+ free( buffer->data );
+
+ return 0;
+}
+
+/*
+> enabled = RL.IsGCUnloadEnabled()
+
+Check if Lua garbage collection is set to unload object data
+
+- Success return bool
+*/
+int lcoreIsGCUnloadEnabled( lua_State *L ) {
+ lua_pushboolean( L, state->gcUnload );
return 1;
}
@@ -862,6 +889,21 @@ int lcoreLoadShaderFromMemory( lua_State *L ) {
}
/*
+> isReady = RL.IsShaderReady( Shader shader )
+
+Check if a shader is ready
+
+- Success return bool
+*/
+int lcoreIsShaderReady( lua_State *L ) {
+ Shader *shader = uluaGetShader( L, 1 );
+
+ lua_pushboolean( L, IsShaderReady( *shader ) );
+
+ return 1;
+}
+
+/*
> RL.BeginShaderMode( Shader shader )
Begin custom shader drawing
@@ -1062,6 +1104,19 @@ int lcoreSetShaderValueV( lua_State *L ) {
}
/*
+> RL.UnloadShader( Shader shader )
+
+Unload shader from GPU memory (VRAM)
+*/
+int lcoreUnloadShader( lua_State *L ) {
+ Shader *shader = uluaGetShader( L, 1 );
+
+ UnloadShader( *shader );
+
+ return 0;
+}
+
+/*
## Core - Input-related Keyboard
*/