summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjussi2022-04-03 19:23:26 +0300
committerjussi2022-04-03 19:23:26 +0300
commit5eadd7d1d85879541f304737178eee2bd671bb5f (patch)
tree58e3f31cc39fa20dbc72e702f03429713bbd8ed0 /src
parent7665cf4bc16a423d4cd98174853dcc36de08787e (diff)
downloadreilua-enhanced-5eadd7d1d85879541f304737178eee2bd671bb5f.tar.gz
reilua-enhanced-5eadd7d1d85879541f304737178eee2bd671bb5f.tar.bz2
reilua-enhanced-5eadd7d1d85879541f304737178eee2bd671bb5f.zip
Model set/get transform and bug fixes.
Diffstat (limited to 'src')
-rw-r--r--src/audio.c6
-rw-r--r--src/lua_core.c2
-rw-r--r--src/models.c53
-rw-r--r--src/rmath.c59
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;
}