diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/audio.c | 6 | ||||
| -rw-r--r-- | src/lua_core.c | 2 | ||||
| -rw-r--r-- | src/models.c | 53 | ||||
| -rw-r--r-- | src/rmath.c | 59 |
4 files changed, 87 insertions, 33 deletions
diff --git a/src/audio.c b/src/audio.c index 45ee6c9..48f3718 100644 --- a/src/audio.c +++ b/src/audio.c @@ -60,8 +60,10 @@ int laudioLoadSound( lua_State *L ) { lua_pushinteger( L, i ); checkSoundRealloc( i ); } - - return 1; + else { + lua_pushinteger( L, -1 ); + return 1; + } } /* diff --git a/src/lua_core.c b/src/lua_core.c index 5ac1aec..25cce86 100644 --- a/src/lua_core.c +++ b/src/lua_core.c @@ -727,6 +727,8 @@ void luaRegister() { lua_register( L, "RL_SetModelMeshMaterial", lmodelsSetModelMeshMaterial ); lua_register( L, "RL_DrawBillboard", lmodelsDrawBillboard ); lua_register( L, "RL_DrawBillboardRec", lmodelsDrawBillboardRec ); + lua_register( L, "RL_SetModelTransform", lmodelsSetModelTransform ); + lua_register( L, "RL_GetModelTransform", lmodelsGetModelTransform ); /* Animations. */ lua_register( L, "RL_LoadModelAnimations", lmodelsLoadModelAnimations ); lua_register( L, "RL_UpdateModelAnimation", lmodelsUpdateModelAnimation ); diff --git a/src/models.c b/src/models.c index f105991..483d0f8 100644 --- a/src/models.c +++ b/src/models.c @@ -1765,6 +1765,59 @@ int lmodelsDrawBillboardRec( lua_State *L ) { } /* +> success = RL_SetModelTransform( Model model, Matrix transform ) + +Set model transform matrix + +- Failure return false +- Success return true +*/ +int lmodelsSetModelTransform( lua_State *L ) { + if ( !lua_isnumber( L, -2 ) || !lua_istable( L, -1 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_SetModelTransform( Model model, Matrix transform )" ); + lua_pushboolean( L, false ); + return 1; + } + Matrix transform = uluaGetMatrix( L ); + lua_pop( L, 1 ); + size_t modelId = lua_tointeger( L, -1 ); + + if ( !validModel( modelId ) ) { + lua_pushboolean( L, false ); + return 1; + } + state->models[ modelId ]->transform = transform; + lua_pushboolean( L, true ); + + return 1; +} + +/* +> transform = RL_GetModelTransform( Model model ) + +Get model transform matrix + +- Failure return false +- Success return Matrix +*/ +int lmodelsGetModelTransform( lua_State *L ) { + if ( !lua_isnumber( L, -1 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GetModelTransform( Model model )" ); + lua_pushboolean( L, false ); + return 1; + } + size_t modelId = lua_tointeger( L, -1 ); + + if ( !validModel( modelId ) ) { + lua_pushboolean( L, false ); + return 1; + } + uluaPushMatrix( L, state->models[ modelId ]->transform ); + + return 1; +} + +/* ## Model - Animations */ diff --git a/src/rmath.c b/src/rmath.c index 4027aa8..b003b65 100644 --- a/src/rmath.c +++ b/src/rmath.c @@ -342,7 +342,7 @@ int lmathVector3Subtract( lua_State *L ) { } /* -> result = RL_Vector3Subtract( Vector3 v1, Vector3 v2 ) +> result = RL_Vector3Multiply( Vector3 v1, Vector3 v2 ) Multiply vector by vector @@ -411,7 +411,7 @@ int lmathVector3Perpendicular( lua_State *L ) { /* > result = RL_Vector3Length( Vector3 v ) -Calculate one vector perpendicular vector +Calculate vector length - Failure return false - Success return float @@ -559,11 +559,11 @@ int lmathVector3Transform( lua_State *L ) { lua_pushboolean( L, false ); return 1; } - Vector3 v1 = uluaGetVector3( L ); - lua_pop( L, 1 ); Matrix mat = uluaGetMatrix( L ); + lua_pop( L, 1 ); + Vector3 v = uluaGetVector3( L ); - uluaPushVector3( L, Vector3Transform( v1, mat ) ); + uluaPushVector3( L, Vector3Transform( v, mat ) ); return 1; } @@ -582,11 +582,11 @@ int lmathVector3RotateByQuaternion( lua_State *L ) { lua_pushboolean( L, false ); return 1; } - Vector3 v1 = uluaGetVector3( L ); - lua_pop( L, 1 ); Quaternion q = uluaGetQuaternion( L ); + lua_pop( L, 1 ); + Vector3 v = uluaGetVector3( L ); - uluaPushVector3( L, Vector3RotateByQuaternion( v1, q ) ); + uluaPushVector3( L, Vector3RotateByQuaternion( v, q ) ); return 1; } @@ -764,7 +764,7 @@ int lmathMatrixAdd( lua_State *L ) { } /* -> result = RL_MatrixAdd( Matrix left, Matrix right ) +> result = RL_MatrixSubtract( Matrix left, Matrix right ) Subtract two matrices (left - right) @@ -889,15 +889,14 @@ int lmathMatrixFrustum( lua_State *L ) { lua_pushboolean( L, false ); return 1; } - // float far = lua_tonumber( L, -1 ); - // float near = lua_tonumber( L, -2 ); - // float top = lua_tonumber( L, -3 ); - // float bottom = lua_tonumber( L, -4 ); - // float right = lua_tonumber( L, -5 ); - // float left = lua_tonumber( L, -6 ); + float far = lua_tonumber( L, -1 ); + float near = lua_tonumber( L, -2 ); + float top = lua_tonumber( L, -3 ); + float bottom = lua_tonumber( L, -4 ); + float right = lua_tonumber( L, -5 ); + float left = lua_tonumber( L, -6 ); - // uluaPushMatrix( L, MatrixFrustum( left, right, bottom, top, near, far ) ); - uluaPushMatrix( L, MatrixFrustum( lua_tonumber( L, -6 ), lua_tonumber( L, -5 ), lua_tonumber( L, -4 ), lua_tonumber( L, -3 ), lua_tonumber( L, -2 ), lua_tonumber( L, -1 ) ) ); + uluaPushMatrix( L, MatrixFrustum( left, right, bottom, top, near, far ) ); return 1; } @@ -916,13 +915,12 @@ int lmathMatrixPerspective( lua_State *L ) { lua_pushboolean( L, false ); return 1; } - // float far = lua_tonumber( L, -1 ); - // float near = lua_tonumber( L, -2 ); - // float aspect = lua_tonumber( L, -3 ); - // float fovy = lua_tonumber( L, -4 ); + float far = lua_tonumber( L, -1 ); + float near = lua_tonumber( L, -2 ); + float aspect = lua_tonumber( L, -3 ); + float fovy = lua_tonumber( L, -4 ); - // uluaPushMatrix( L, MatrixPerspective( fovy, aspect, near, far ) ); - uluaPushMatrix( L, MatrixPerspective( lua_tonumber( L, -4 ), lua_tonumber( L, -3 ), lua_tonumber( L, -2 ), lua_tonumber( L, -1 ) ) ); + uluaPushMatrix( L, MatrixPerspective( fovy, aspect, near, far ) ); return 1; } @@ -942,15 +940,14 @@ int lmathMatrixOrtho( lua_State *L ) { lua_pushboolean( L, false ); return 1; } - // float far = lua_tonumber( L, -1 ); - // float near = lua_tonumber( L, -2 ); - // float top = lua_tonumber( L, -3 ); - // float bottom = lua_tonumber( L, -4 ); - // float right = lua_tonumber( L, -5 ); - // float left = lua_tonumber( L, -6 ); + float far = lua_tonumber( L, -1 ); + float near = lua_tonumber( L, -2 ); + float top = lua_tonumber( L, -3 ); + float bottom = lua_tonumber( L, -4 ); + float right = lua_tonumber( L, -5 ); + float left = lua_tonumber( L, -6 ); - // uluaPushMatrix( L, MatrixOrtho( left, right, bottom, top, near, far ) ); - uluaPushMatrix( L, MatrixOrtho( lua_tonumber( L, -6 ), lua_tonumber( L, -5 ), lua_tonumber( L, -4 ), lua_tonumber( L, -3 ), lua_tonumber( L, -2 ), lua_tonumber( L, -1 ) ) ); + uluaPushMatrix( L, MatrixOrtho( left, right, bottom, top, near, far ) ); return 1; } |
