From d287078c658d26d41a28f92b62b023048c5503ce Mon Sep 17 00:00:00 2001 From: jussi Date: Mon, 30 Oct 2023 00:04:11 +0200 Subject: Userdata objects can be referenced with lightuserdata. --- src/models.c | 98 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 49 insertions(+), 49 deletions(-) (limited to 'src/models.c') diff --git a/src/models.c b/src/models.c index 9889fa1..75f07fd 100644 --- a/src/models.c +++ b/src/models.c @@ -396,7 +396,7 @@ int lmodelsDrawPlane( lua_State *L ) { Draw 3D textured quad. (Texture coordinates opengl style 0.0 - 1.0). */ int lmodelDrawQuad3DTexture( lua_State *L ) { - Texture *texture = luaL_checkudata( L, 1, "Texture" ); + Texture *texture = uluaGetTexture( L, 1 ); /* Vertices. */ Vector3 vertices[4] = { 0 }; @@ -634,7 +634,7 @@ Generate heightmap mesh from image data - Success return Mesh */ int lmodelsGenMeshHeightmap( lua_State *L ) { - Image *heightmap = luaL_checkudata( L, 1, "Image" ); + Image *heightmap = uluaGetImage( L, 1 ); Vector3 size = uluaGetVector3Index( L, 2 ); uluaPushMesh( L, GenMeshHeightmap( *heightmap, size ) ); @@ -805,7 +805,7 @@ Update mesh vertex data in GPU. Note! Mainly intented to be used with custom meshes. */ int lmodelsUpdateMesh( lua_State *L ) { - Mesh *mesh = luaL_checkudata( L, 1, "Mesh" ); + Mesh *mesh = uluaGetMesh( L, 1 ); luaL_checktype( L, 2, LUA_TTABLE ); int t = 2; @@ -929,8 +929,8 @@ int lmodelsUpdateMesh( lua_State *L ) { Draw a 3d mesh with material and transform */ int lmodelsDrawMesh( lua_State *L ) { - Mesh *mesh = luaL_checkudata( L, 1, "Mesh" ); - Material *material = luaL_checkudata( L, 2, "Material" ); + Mesh *mesh = uluaGetMesh( L, 1 ); + Material *material = uluaGetMaterial( L, 2 ); Matrix matrix = uluaGetMatrixIndex( L, 3 ); DrawMesh( *mesh, *material, matrix ); @@ -944,8 +944,8 @@ int lmodelsDrawMesh( lua_State *L ) { Draw multiple mesh instances with material and different transforms */ int lmodelsDrawMeshInstanced( lua_State *L ) { - Mesh *mesh = luaL_checkudata( L, 1, "Mesh" ); - Material *material = luaL_checkudata( L, 2, "Material" ); + Mesh *mesh = uluaGetMesh( L, 1 ); + Material *material = uluaGetMaterial( L, 2 ); luaL_checktype( L, 3, LUA_TTABLE ); int instances = luaL_checkinteger( L, 4 ); @@ -976,7 +976,7 @@ NOTE: Currently only works on custom mesh - Success return true */ int lmodelsSetMeshColor( lua_State *L ) { - Mesh *mesh = luaL_checkudata( L, 1, "Mesh" ); + Mesh *mesh = uluaGetMesh( L, 1 ); Color color = uluaGetColorIndex( L, 2 ); if ( mesh->colors == NULL ) { @@ -1007,7 +1007,7 @@ Export mesh data to file, returns true on success - Success return bool */ int lmodelsExportMesh( lua_State *L ) { - Mesh *mesh = luaL_checkudata( L, 1, "Mesh" ); + Mesh *mesh = uluaGetMesh( L, 1 ); lua_pushboolean( L, ExportMesh( *mesh, luaL_checkstring( L, 2 ) ) ); @@ -1022,7 +1022,7 @@ Compute mesh bounding box limits - Success return BoundingBox */ int lmodelsGetMeshBoundingBox( lua_State *L ) { - Mesh *mesh = luaL_checkudata( L, 1, "Mesh" ); + Mesh *mesh = uluaGetMesh( L, 1 ); uluaPushBoundingBox( L, GetMeshBoundingBox( *mesh ) ); @@ -1035,7 +1035,7 @@ int lmodelsGetMeshBoundingBox( lua_State *L ) { Compute mesh tangents */ int lmodelsGenMeshTangents( lua_State *L ) { - Mesh *mesh = luaL_checkudata( L, 1, "Mesh" ); + Mesh *mesh = uluaGetMesh( L, 1 ); GenMeshTangents( mesh ); @@ -1097,7 +1097,7 @@ int lmodelsCreateMaterial( lua_State *L ) { while ( lua_next( L, t4 ) != 0 ) { if ( strcmp( "texture", (char*)lua_tostring( L, -2 ) ) == 0 ) { - Texture *texture = luaL_checkudata( L, lua_gettop( L ), "Texture" ); + Texture *texture = uluaGetTexture( L, lua_gettop( L ) ); material.maps[map].texture = *texture; printf( "Material Create material.maps[map].texture.id = %d\n", material.maps[map].texture.id ); } @@ -1134,7 +1134,7 @@ int lmodelsCreateMaterial( lua_State *L ) { } } else if ( strcmp( "shader", (char*)lua_tostring( L, -2 ) ) == 0 ) { - Shader *shader = luaL_checkudata( L, lua_gettop( L ), "Shader" ); + Shader *shader = uluaGetShader( L, lua_gettop( L ) ); material.shader = *shader; } lua_pop( L, 1 ); @@ -1145,14 +1145,14 @@ int lmodelsCreateMaterial( lua_State *L ) { } /* -> RL.SetMaterialTexture( Material material, int mapType, Texture2D texture ) +> RL.SetMaterialTexture( Material material, int mapType, Texture texture ) Set texture for a material map type (MATERIAL_MAP_ALBEDO, MATERIAL_MAP_METALNESS...) */ int lmodelsSetMaterialTexture( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); + Material *material = uluaGetMaterial( L, 1 ); int mapType = luaL_checkinteger( L, 2 ); - Texture *texture = luaL_checkudata( L, 3, "Texture" ); + Texture *texture = uluaGetTexture( L, 3 ); SetMaterialTexture( material, mapType, *texture ); @@ -1165,7 +1165,7 @@ int lmodelsSetMaterialTexture( lua_State *L ) { Set color for a material map type */ int lmodelsSetMaterialColor( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); + Material *material = uluaGetMaterial( L, 1 ); int mapType = luaL_checkinteger( L, 2 ); Color color = uluaGetColorIndex( L, 3 ); @@ -1180,7 +1180,7 @@ int lmodelsSetMaterialColor( lua_State *L ) { Set value for a material map type */ int lmodelsSetMaterialValue( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); + Material *material = uluaGetMaterial( L, 1 ); int mapType = luaL_checkinteger( L, 2 ); float value = luaL_checknumber( L, 3 ); @@ -1195,8 +1195,8 @@ int lmodelsSetMaterialValue( lua_State *L ) { Set shader for material */ int lmodelsSetMaterialShader( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); - Shader *shader = luaL_checkudata( L, 2, "Shader" ); + Material *material = uluaGetMaterial( L, 1 ); + Shader *shader = uluaGetShader( L, 2 ); material->shader = *shader; @@ -1209,7 +1209,7 @@ int lmodelsSetMaterialShader( lua_State *L ) { Set material generic parameters (if required) */ int lmodelsSetMaterialParams( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); + Material *material = uluaGetMaterial( L, 1 ); size_t len = uluaGetTableLenIndex( L, 2 ); @@ -1241,7 +1241,7 @@ Get texture from material map type. Returns -1 if no texture - Success return Texture */ int lmodelsGetMaterialTexture( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); + Material *material = uluaGetMaterial( L, 1 ); int mapType = luaL_checkinteger( L, 2 ); uluaPushTexture( L, material->maps[ mapType ].texture ); @@ -1257,7 +1257,7 @@ Get color from material map type - Success return Color */ int lmodelsGetMaterialColor( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); + Material *material = uluaGetMaterial( L, 1 ); int mapType = luaL_checkinteger( L, 2 ); uluaPushColor( L, material->maps[ mapType ].color ); @@ -1273,7 +1273,7 @@ Get color from material map type - Success return float */ int lmodelsGetMaterialValue( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); + Material *material = uluaGetMaterial( L, 1 ); int mapType = luaL_checkinteger( L, 2 ); lua_pushnumber( L, material->maps[ mapType ].value ); @@ -1286,12 +1286,12 @@ int lmodelsGetMaterialValue( lua_State *L ) { Get material shader -- Success return Shader +- Success return Shader. Returns as lightuserdata */ int lmodelsGetMaterialShader( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); + Material *material = uluaGetMaterial( L, 1 ); - uluaPushShader( L, material->shader ); + lua_pushlightuserdata( L, &material->shader ); return 1; } @@ -1304,7 +1304,7 @@ Get material parameters - Success return float{} */ int lmodelsGetMaterialParams( lua_State *L ) { - Material *material = luaL_checkudata( L, 1, "Material" ); + Material *material = uluaGetMaterial( L, 1 ); Vector4 params = { material->params[0], @@ -1349,7 +1349,7 @@ Load model from generated mesh (Default material) - Success return Model */ int lmodelsLoadModelFromMesh( lua_State *L ) { - Mesh *mesh = luaL_checkudata( L, 1, "Mesh" ); + Mesh *mesh = uluaGetMesh( L, 1 ); uluaPushModel( L, LoadModelFromMesh( *mesh ) ); @@ -1362,7 +1362,7 @@ int lmodelsLoadModelFromMesh( lua_State *L ) { Draw a model (With texture if set) */ int lmodelsDrawModel( lua_State *L ) { - Model *model = luaL_checkudata( L, 1, "Model" ); + Model *model = uluaGetModel( L, 1 ); Vector3 position = uluaGetVector3Index( L, 2 ); float scale = luaL_checknumber( L, 3 ); Color tint = uluaGetColorIndex( L, 4 ); @@ -1378,7 +1378,7 @@ int lmodelsDrawModel( lua_State *L ) { Draw a model with extended parameters */ int lmodelsDrawModelEx( lua_State *L ) { - Model *model = luaL_checkudata( L, 1, "Model" ); + Model *model = uluaGetModel( L, 1 ); Vector3 position = uluaGetVector3Index( L, 2 ); Vector3 rotationAxis = uluaGetVector3Index( L, 3 ); float rotationAngle = luaL_checknumber( L, 4 ); @@ -1396,9 +1396,9 @@ int lmodelsDrawModelEx( lua_State *L ) { Copies material to model material. (Model material is the material id in models.) */ int lmodelsSetModelMaterial( lua_State *L ) { - Model *model = luaL_checkudata( L, 1, "Model" ); + Model *model = uluaGetModel( L, 1 ); int modelMaterialId = luaL_checkinteger( L, 2 ); - Material *material = luaL_checkudata( L, 3, "Material" ); + Material *material = uluaGetMaterial( L, 3 ); /* Copy material data instead of using pointer. Pointer would result in double free error. */ model->materials[ modelMaterialId ].shader = material->shader; @@ -1427,7 +1427,7 @@ int lmodelsSetModelMaterial( lua_State *L ) { Set material for a mesh (Mesh and material on this model) */ int lmodelsSetModelMeshMaterial( lua_State *L ) { - Model *model = luaL_checkudata( L, 1, "Model" ); + Model *model = uluaGetModel( L, 1 ); int meshId = luaL_checkinteger( L, 2 ); int materialId = luaL_checkinteger( L, 3 ); @@ -1442,8 +1442,8 @@ int lmodelsSetModelMeshMaterial( lua_State *L ) { Draw a billboard texture */ int lmodelsDrawBillboard( lua_State *L ) { - Camera3D *camera = luaL_checkudata( L, 1, "Camera3D" ); - Texture *texture = luaL_checkudata( L, 2, "Texture" ); + Camera3D *camera = uluaGetCamera3D( L, 1 ); + Texture *texture = uluaGetTexture( L, 2 ); Vector3 position = uluaGetVector3Index( L, 3 ); float size = luaL_checknumber( L, 4 ); Color tint = uluaGetColorIndex( L, 5 ); @@ -1459,8 +1459,8 @@ int lmodelsDrawBillboard( lua_State *L ) { Draw a billboard texture defined by source */ int lmodelsDrawBillboardRec( lua_State *L ) { - Camera3D *camera = luaL_checkudata( L, 1, "Camera3D" ); - Texture *texture = luaL_checkudata( L, 2, "Texture" ); + Camera3D *camera = uluaGetCamera3D( L, 1 ); + Texture *texture = uluaGetTexture( L, 2 ); Rectangle source = uluaGetRectangleIndex( L, 3 ); Vector3 position = uluaGetVector3Index( L, 4 ); Vector2 size = uluaGetVector2Index( L, 5 ); @@ -1477,8 +1477,8 @@ int lmodelsDrawBillboardRec( lua_State *L ) { Draw a billboard texture defined by source and rotation */ int lmodelsDrawBillboardPro( lua_State *L ) { - Camera3D *camera = luaL_checkudata( L, 1, "Camera3D" ); - Texture *texture = luaL_checkudata( L, 2, "Texture" ); + Camera3D *camera = uluaGetCamera3D( L, 1 ); + Texture *texture = uluaGetTexture( L, 2 ); Rectangle source = uluaGetRectangleIndex( L, 3 ); Vector3 position = uluaGetVector3Index( L, 4 ); Vector3 up = uluaGetVector3Index( L, 5 ); @@ -1498,7 +1498,7 @@ int lmodelsDrawBillboardPro( lua_State *L ) { Set model transform matrix */ int lmodelsSetModelTransform( lua_State *L ) { - Model *model = luaL_checkudata( L, 1, "Model" ); + Model *model = uluaGetModel( L, 1 ); Matrix transform = uluaGetMatrixIndex( L, 2 ); model->transform = transform; @@ -1514,7 +1514,7 @@ Get model transform matrix - Success return Matrix */ int lmodelsGetModelTransform( lua_State *L ) { - Model *model = luaL_checkudata( L, 1, "Model" ); + Model *model = uluaGetModel( L, 1 ); uluaPushMatrix( L, model->transform ); @@ -1559,8 +1559,8 @@ int lmodelsLoadModelAnimations( lua_State *L ) { Update model animation pose */ int lmodelsUpdateModelAnimation( lua_State *L ) { - Model *model = luaL_checkudata( L, 1, "Model" ); - ModelAnimation *modelAnimation = luaL_checkudata( L, 2, "ModelAnimation" ); + Model *model = uluaGetModel( L, 1 ); + ModelAnimation *modelAnimation = uluaGetModelAnimation( L, 2 ); int frame = luaL_checkinteger( L, 3 ); UpdateModelAnimation( *model, *modelAnimation, frame ); @@ -1576,8 +1576,8 @@ Check model animation skeleton match - Success return bool */ int lmodelsIsModelAnimationValid( lua_State *L ) { - Model *model = luaL_checkudata( L, 1, "Model" ); - ModelAnimation *modelAnimation = luaL_checkudata( L, 2, "ModelAnimation" ); + Model *model = uluaGetModel( L, 1 ); + ModelAnimation *modelAnimation = uluaGetModelAnimation( L, 2 ); lua_pushboolean( L, IsModelAnimationValid( *model, *modelAnimation ) ); @@ -1592,7 +1592,7 @@ Return modelAnimation bone count - Success return int */ int lmodelsGetModelAnimationBoneCount( lua_State *L ) { - ModelAnimation *modelAnimation = luaL_checkudata( L, 1, "ModelAnimation" ); + ModelAnimation *modelAnimation = uluaGetModelAnimation( L, 1 ); lua_pushinteger( L, modelAnimation->boneCount ); @@ -1607,7 +1607,7 @@ Return modelAnimation frame count - Success return int */ int lmodelsGetModelAnimationFrameCount( lua_State *L ) { - ModelAnimation *modelAnimation = luaL_checkudata( L, 1, "ModelAnimation" ); + ModelAnimation *modelAnimation = uluaGetModelAnimation( L, 1 ); lua_pushinteger( L, modelAnimation->frameCount ); @@ -1711,7 +1711,7 @@ Get collision info between ray and mesh */ int lmodelsGetRayCollisionMesh( lua_State *L ) { Ray ray = uluaGetRayIndex( L, 1 ); - Mesh *mesh = luaL_checkudata( L, 2, "Mesh" ); + Mesh *mesh = uluaGetMesh( L, 2 ); Matrix transform = uluaGetMatrixIndex( L, 3 ); uluaPushRayCollision( L, GetRayCollisionMesh( ray, *mesh, transform ) ); -- cgit v1.2.3