Pong example, type named fields and vector lib changes.
This commit is contained in:
434
src/lua_core.c
434
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;
|
||||
}
|
||||
|
||||
|
||||
14
src/main.c
14
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 ) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user