Model set/get transform and bug fixes.
This commit is contained in:
@@ -60,8 +60,10 @@ int laudioLoadSound( lua_State *L ) {
|
||||
lua_pushinteger( L, i );
|
||||
checkSoundRealloc( i );
|
||||
}
|
||||
|
||||
return 1;
|
||||
else {
|
||||
lua_pushinteger( L, -1 );
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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 );
|
||||
|
||||
53
src/models.c
53
src/models.c
@@ -1764,6 +1764,59 @@ int lmodelsDrawBillboardRec( lua_State *L ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> 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
|
||||
*/
|
||||
|
||||
59
src/rmath.c
59
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user