summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjussi2022-05-22 14:47:06 +0300
committerjussi2022-05-22 14:47:06 +0300
commit44e8b06603d91d398c0955f34da33d0242b7551a (patch)
treea14e70cc7bff7673ccc5b8a04750ed7aed56b701 /src
parent85fc6cd6a3865f19ceac448dcb33b0c19b8e6b77 (diff)
downloadreilua-enhanced-44e8b06603d91d398c0955f34da33d0242b7551a.tar.gz
reilua-enhanced-44e8b06603d91d398c0955f34da33d0242b7551a.tar.bz2
reilua-enhanced-44e8b06603d91d398c0955f34da33d0242b7551a.zip
Pong example, type named fields and vector lib changes.
Diffstat (limited to 'src')
-rw-r--r--src/lua_core.c434
-rw-r--r--src/main.c14
-rw-r--r--src/models.c6
3 files changed, 296 insertions, 158 deletions
diff --git a/src/lua_core.c b/src/lua_core.c
index 9169e74..9a61120 100644
--- a/src/lua_core.c
+++ b/src/lua_core.c
@@ -1022,27 +1022,43 @@ Color uluaGetColor( lua_State *L ) {
int t = lua_gettop( L ), i = 0;
lua_pushnil( L );
- while ( lua_next( L, t ) != 0 ) {
- if ( lua_isnumber( L, -1 ) ) {
- switch ( i ) {
- case 0:
- color.r = (uint8_t)lua_tointeger( L, -1 );
- break;
- case 1:
- color.g = (uint8_t)lua_tointeger( L, -1 );
- break;
- case 2:
- color.b = (uint8_t)lua_tointeger( L, -1 );
- break;
- case 3:
- color.a = (uint8_t)lua_tointeger( L, -1 );
- break;
- default:
- break;
- }
- }
- i++;
- lua_pop( L, 1 );
+ while ( lua_next( L, t ) != 0 ) {
+ if ( lua_isnumber( L, -1 ) ) {
+ if ( lua_isnumber( L, -2 ) ) {
+ switch ( i ) {
+ case 0:
+ color.r = (uint8_t)lua_tointeger( L, -1 );
+ break;
+ case 1:
+ color.g = (uint8_t)lua_tointeger( L, -1 );
+ break;
+ case 2:
+ color.b = (uint8_t)lua_tointeger( L, -1 );
+ break;
+ case 3:
+ color.a = (uint8_t)lua_tointeger( L, -1 );
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( lua_isstring( L, -2 ) ) {
+ if ( strcmp( "r", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ color.r = (uint8_t)lua_tointeger( L, -1 );
+ }
+ else if ( strcmp( "g", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ color.g = (uint8_t)lua_tointeger( L, -1 );
+ }
+ else if ( strcmp( "b", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ color.b = (uint8_t)lua_tointeger( L, -1 );
+ }
+ else if ( strcmp( "a", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ color.a = (uint8_t)lua_tointeger( L, -1 );
+ }
+ }
+ i++;
+ lua_pop( L, 1 );
+ }
}
return color;
}
@@ -1058,20 +1074,30 @@ Vector2 uluaGetVector2( lua_State *L ) {
lua_pushnil( L );
while ( lua_next( L, t ) != 0 ) {
- if ( lua_isnumber( L, -1 ) ) {
- switch ( i ) {
- case 0:
- vector.x = lua_tonumber( L, -1 );
- break;
- case 1:
- vector.y = lua_tonumber( L, -1 );
- break;
- default:
- break;
- }
- }
- i++;
- lua_pop( L, 1 );
+ if ( lua_isnumber( L, -1 ) ) {
+ if ( lua_isnumber( L, -2 ) ) {
+ switch ( i ) {
+ case 0:
+ vector.x = lua_tonumber( L, -1 );
+ break;
+ case 1:
+ vector.y = lua_tonumber( L, -1 );
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( lua_isstring( L, -2 ) ) {
+ if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ vector.x = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ vector.y = lua_tonumber( L, -1 );
+ }
+ }
+ i++;
+ lua_pop( L, 1 );
+ }
}
return vector;
}
@@ -1088,19 +1114,32 @@ Vector3 uluaGetVector3( lua_State *L ) {
while ( lua_next( L, t ) != 0 ) {
if ( lua_isnumber( L, -1 ) ) {
- switch ( i ) {
- case 0:
- vector.x = lua_tonumber( L, -1 );
- break;
- case 1:
- vector.y = lua_tonumber( L, -1 );
- break;
- case 2:
- vector.z = lua_tonumber( L, -1 );
- break;
- default:
- break;
- }
+ if ( lua_isnumber( L, -2 ) ) {
+ switch ( i ) {
+ case 0:
+ vector.x = lua_tonumber( L, -1 );
+ break;
+ case 1:
+ vector.y = lua_tonumber( L, -1 );
+ break;
+ case 2:
+ vector.z = lua_tonumber( L, -1 );
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( lua_isstring( L, -2 ) ) {
+ if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ vector.x = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ vector.y = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "z", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ vector.z = lua_tonumber( L, -1 );
+ }
+ }
}
i++;
lua_pop( L, 1 );
@@ -1120,22 +1159,38 @@ Vector4 uluaGetVector4( lua_State *L ) {
while ( lua_next( L, t ) != 0 ) {
if ( lua_isnumber( L, -1 ) ) {
- switch ( i ) {
- case 0:
- vector.x = lua_tonumber( L, -1 );
- break;
- case 1:
- vector.y = lua_tonumber( L, -1 );
- break;
- case 2:
- vector.z = lua_tonumber( L, -1 );
- break;
- case 3:
- vector.w = lua_tonumber( L, -1 );
- break;
- default:
- break;
- }
+ if ( lua_isnumber( L, -2 ) ) {
+ switch ( i ) {
+ case 0:
+ vector.x = lua_tonumber( L, -1 );
+ break;
+ case 1:
+ vector.y = lua_tonumber( L, -1 );
+ break;
+ case 2:
+ vector.z = lua_tonumber( L, -1 );
+ break;
+ case 3:
+ vector.w = lua_tonumber( L, -1 );
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( lua_isstring( L, -2 ) ) {
+ if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ vector.x = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ vector.y = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "z", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ vector.z = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "w", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ vector.w = lua_tonumber( L, -1 );
+ }
+ }
}
i++;
lua_pop( L, 1 );
@@ -1153,24 +1208,40 @@ Rectangle uluaGetRectangle( lua_State *L ) {
int t = lua_gettop( L ), i = 0;
lua_pushnil( L );
- while ( lua_next( L, t ) != 0 ) {
+ while ( lua_next( L, t ) != 0 ) {
if ( lua_isnumber( L, -1 ) ) {
- switch ( i ) {
- case 0:
- rect.x = lua_tonumber( L, -1 );
- break;
- case 1:
- rect.y = lua_tonumber( L, -1 );
- break;
- case 2:
- rect.width = lua_tonumber( L, -1 );
- break;
- case 3:
- rect.height = lua_tonumber( L, -1 );
- break;
- default:
- break;
- }
+ if ( lua_isnumber( L, -2 ) ) {
+ switch ( i ) {
+ case 0:
+ rect.x = lua_tonumber( L, -1 );
+ break;
+ case 1:
+ rect.y = lua_tonumber( L, -1 );
+ break;
+ case 2:
+ rect.width = lua_tonumber( L, -1 );
+ break;
+ case 3:
+ rect.height = lua_tonumber( L, -1 );
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( lua_isstring( L, -2 ) ) {
+ if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ rect.x = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ rect.y = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "width", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ rect.width = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "height", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ rect.height = lua_tonumber( L, -1 );
+ }
+ }
}
i++;
lua_pop( L, 1 );
@@ -1190,22 +1261,38 @@ Quaternion uluaGetQuaternion( lua_State *L ) {
while ( lua_next( L, t ) != 0 ) {
if ( lua_isnumber( L, -1 ) ) {
- switch ( i ) {
- case 0:
- quaternion.x = lua_tonumber( L, -1 );
- break;
- case 1:
- quaternion.y = lua_tonumber( L, -1 );
- break;
- case 2:
- quaternion.z = lua_tonumber( L, -1 );
- break;
- case 3:
- quaternion.w = lua_tonumber( L, -1 );
- break;
- default:
- break;
- }
+ if ( lua_isnumber( L, -2 ) ) {
+ switch ( i ) {
+ case 0:
+ quaternion.x = lua_tonumber( L, -1 );
+ break;
+ case 1:
+ quaternion.y = lua_tonumber( L, -1 );
+ break;
+ case 2:
+ quaternion.z = lua_tonumber( L, -1 );
+ break;
+ case 3:
+ quaternion.w = lua_tonumber( L, -1 );
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( lua_isstring( L, -2 ) ) {
+ if ( strcmp( "x", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ quaternion.x = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "y", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ quaternion.y = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "z", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ quaternion.z = lua_tonumber( L, -1 );
+ }
+ else if ( strcmp( "w", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ quaternion.w = lua_tonumber( L, -1 );
+ }
+ }
}
i++;
lua_pop( L, 1 );
@@ -1258,21 +1345,31 @@ BoundingBox uluaGetBoundingBox( lua_State *L ) {
int t = lua_gettop( L ), i = 0;
lua_pushnil( L );
- while ( lua_next( L, t ) != 0 ) {
- if ( lua_istable( L, -1 ) ) {
- switch ( i ) {
- case 0:
- box.min = uluaGetVector3( L );
- break;
- case 1:
- box.max = uluaGetVector3( L );
- break;
- default:
- break;
- }
- }
- i++;
- lua_pop( L, 1 );
+ while ( lua_next( L, t ) != 0 ) {
+ if ( lua_isnumber( L, -1 ) ) {
+ if ( lua_isnumber( L, -2 ) ) {
+ switch ( i ) {
+ case 0:
+ box.min = uluaGetVector3( L );
+ break;
+ case 1:
+ box.max = uluaGetVector3( L );
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( lua_isstring( L, -2 ) ) {
+ if ( strcmp( "min", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ box.min = uluaGetVector3( L );
+ }
+ else if ( strcmp( "max", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ box.max = uluaGetVector3( L );
+ }
+ }
+ i++;
+ lua_pop( L, 1 );
+ }
}
return box;
@@ -1288,21 +1385,31 @@ Ray uluaGetRay( lua_State *L ) {
int t = lua_gettop( L ), i = 0;
lua_pushnil( L );
- while ( lua_next( L, t ) != 0 ) {
- if ( lua_istable( L, -1 ) ) {
- switch ( i ) {
- case 0:
- ray.position = uluaGetVector3( L );
- break;
- case 1:
- ray.direction = uluaGetVector3( L );
- break;
- default:
- break;
- }
- }
- i++;
- lua_pop( L, 1 );
+ while ( lua_next( L, t ) != 0 ) {
+ if ( lua_isnumber( L, -1 ) ) {
+ if ( lua_isnumber( L, -2 ) ) {
+ switch ( i ) {
+ case 0:
+ ray.position = uluaGetVector3( L );
+ break;
+ case 1:
+ ray.direction = uluaGetVector3( L );
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( lua_isstring( L, -2 ) ) {
+ if ( strcmp( "position", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ ray.position = uluaGetVector3( L );
+ }
+ else if ( strcmp( "direction", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ ray.direction = uluaGetVector3( L );
+ }
+ }
+ i++;
+ lua_pop( L, 1 );
+ }
}
return ray;
@@ -1318,33 +1425,56 @@ NPatchInfo uluaGetNPatchInfo( lua_State *L ) {
int t = lua_gettop( L ), i = 0;
lua_pushnil( L );
- while ( lua_next( L, t ) != 0 ) {
- switch ( i ) {
- case 0:
- npatch.source = uluaGetRectangle( L );
- break;
- case 1:
- npatch.left = lua_tointeger( L, -1 );
- break;
- case 2:
- npatch.top = lua_tointeger( L, -1 );
- break;
- case 3:
- npatch.right = lua_tointeger( L, -1 );
- break;
- case 4:
- npatch.bottom = lua_tointeger( L, -1 );
- break;
- case 5:
- npatch.layout = lua_tointeger( L, -1 );
- break;
- default:
- break;
+ while ( lua_next( L, t ) != 0 ) {
+ if ( lua_isnumber( L, -1 ) ) {
+ if ( lua_isnumber( L, -2 ) ) {
+ switch ( i ) {
+ case 0:
+ npatch.source = uluaGetRectangle( L );
+ break;
+ case 1:
+ npatch.left = lua_tointeger( L, -1 );
+ break;
+ case 2:
+ npatch.top = lua_tointeger( L, -1 );
+ break;
+ case 3:
+ npatch.right = lua_tointeger( L, -1 );
+ break;
+ case 4:
+ npatch.bottom = lua_tointeger( L, -1 );
+ break;
+ case 5:
+ npatch.layout = lua_tointeger( L, -1 );
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( lua_isstring( L, -2 ) ) {
+ if ( strcmp( "source", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ npatch.source = uluaGetRectangle( L );
+ }
+ else if ( strcmp( "left", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ npatch.left = lua_tointeger( L, -1 );
+ }
+ else if ( strcmp( "top", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ npatch.top = lua_tointeger( L, -1 );
+ }
+ else if ( strcmp( "right", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ npatch.right = lua_tointeger( L, -1 );
+ }
+ else if ( strcmp( "bottom", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ npatch.bottom = lua_tointeger( L, -1 );
+ }
+ else if ( strcmp( "layout", (char*)lua_tostring( L, -2 ) ) == 0 ) {
+ npatch.layout = lua_tointeger( L, -1 );
+ }
+ }
+ i++;
+ lua_pop( L, 1 );
}
- i++;
- lua_pop( L, 1 );
}
-
return npatch;
}
diff --git a/src/main.c b/src/main.c
index 9bb5d2e..9155cd7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2,13 +2,21 @@
#include "state.h"
#include "lua_core.h"
+inline static void printVersion() {
+ if ( VERSION_DEV ) {
+ TraceLog( LOG_INFO, "ReiLua %d.%d.%d-Dev", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH );
+ }
+ else {
+ TraceLog( LOG_INFO, "ReiLua %d.%d.%d", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH );
+ }
+}
+
int main( int argn, const char **argc ) {
char exePath[ STRING_LEN ] = { '\0' };
if ( 1 < argn ) {
if ( strcmp( argc[1], "--version" ) == 0 || strcmp( argc[1], "-v" ) == 0 ) {
- printf( "ReiLua %d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH );
-
+ printVersion();
return 1;
}
else{
@@ -18,7 +26,7 @@ int main( int argn, const char **argc ) {
else {
sprintf( exePath, "%s/", GetWorkingDirectory() );
}
- TraceLog( LOG_INFO, "ReiLua %d.%d.%d", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH );
+ printVersion();
stateInit( exePath );
while ( state->run ) {
diff --git a/src/models.c b/src/models.c
index 8ad2f2c..0ae7805 100644
--- a/src/models.c
+++ b/src/models.c
@@ -1202,7 +1202,7 @@ int lmodelsUpdateMesh( lua_State *L ) {
i++;
lua_pop( L, 1 );
}
- UpdateMeshBuffer( *mesh, 3, (void*)data, len * 4 * sizeof(unsigned char), 0 );
+ UpdateMeshBuffer( *mesh, 3, (void*)data, len * 4 * sizeof( unsigned char ), 0 );
}
else if ( strcmp( "indices", (char*)lua_tostring( L, -2 ) ) == 0 && lua_istable( L, -1 ) ) {
size_t len = uluaGetTableLen( L );
@@ -1217,7 +1217,7 @@ int lmodelsUpdateMesh( lua_State *L ) {
i++;
lua_pop( L, 1 );
}
- UpdateMeshBuffer( *mesh, 6, (void*)data, len * sizeof(unsigned short), 0 );
+ UpdateMeshBuffer( *mesh, 6, (void*)data, len * sizeof( unsigned short ), 0 );
}
lua_pop( L, 1 );
}
@@ -2245,7 +2245,7 @@ int lmodelsGetRayCollisionModel( lua_State *L ) {
lua_pushnil( L );
return 1;
}
- // uluaPushRayCollision( L, GetRayCollisionModel( ray, *state->models[ modelId ] ) );
+ uluaPushRayCollision( L, GetRayCollisionModel( ray, *state->models[ modelId ] ) );
return 1;
}