Rest of mesh management functions.

This commit is contained in:
jussi
2022-05-25 21:52:36 +03:00
parent 44e8b06603
commit 06f9940682
12 changed files with 186 additions and 17 deletions

36
API.md
View File

@@ -3297,6 +3297,42 @@ NOTE: Currently only works on custom mesh
--- ---
> success = RL_ExportMesh( Mesh mesh, string fileName )
Export mesh data to file, returns true on success
- Failure return false
- Success return true
---
> boundingBox = RL_GetMeshBoundingBox( Mesh mesh )
Compute mesh bounding box limits
- Failure return false
- Success return BoundingBox
---
> success = RL_GenMeshTangents( Mesh mesh )
Compute mesh tangents
- Failure return false
- Success return true
---
> success = RL_GenMeshBinormals( Mesh mesh )
Compute mesh binormals
- Failure return false
- Success return true
---
## Models - Material ## Models - Material
--- ---

View File

@@ -12,24 +12,20 @@ Reilua means fair in finnish.
ReiLua is WIP and some planned raylib functionality is still missing but it already has over 400 functions and should include all functions to make most 2d and 3d games. Current Raylib version 4.0.0. ReiLua is WIP and some planned raylib functionality is still missing but it already has over 400 functions and should include all functions to make most 2d and 3d games. Current Raylib version 4.0.0.
Included submodules.
* Raygui
* Raymath
List of some MISSING features that are planned to be included. For specific function, check API. List of some MISSING features that are planned to be included. For specific function, check API.
* Core * Core
* VR stereo config functions for VR simulator * VR stereo config functions for VR simulator
* Textures * Textures
* Texture update functions * Texture update functions
* Text
* Some font loading/unloading functions
* Audio * Audio
* Wave * Wave
* AudioStream management functions * AudioStream management functions
* Mesh
* Some mesh management functions
Submodules.
* Raygui ( Done )
* Raymath ( Done )
## Usage ## Usage

View File

@@ -3,7 +3,6 @@ Current {
Backlog { Backlog {
* Text * Text
* More Font loading/unloading functions
* Codepoints * Codepoints
* String management. At least TextSplit. * String management. At least TextSplit.
* Audio * Audio

1
examples/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
platformer

View File

@@ -1,5 +1,6 @@
Resource Author Licence Source Resource Author Licence Source
tiles.png Chris Hamons (maintainer) CC0 https://opengameart.org/content/dungeon-crawl-32x32-tiles tiles.png Chris Hamons (maintainer) CC0 https://opengameart.org/content/dungeon-crawl-32x32-tiles
arcade_platformerV2.png GrafxKid CC0 https://opengameart.org/content/arcade-platformer-assets
apple.png Jussi Viitala CC0 apple.png Jussi Viitala CC0
grass.png Jussi Viitala CC0 grass.png Jussi Viitala CC0
snake.png Jussi Viitala CC0 snake.png Jussi Viitala CC0

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -45,6 +45,8 @@ Vector2.meta = {
function Vector2:new( x, y ) function Vector2:new( x, y )
if type( x ) == "table" then if type( x ) == "table" then
x, y = table.unpack( x ) x, y = table.unpack( x )
elseif type( x ) == "nil" then
x, y = 0, 0
end end
local o = { local o = {

View File

@@ -59,6 +59,8 @@ end
function Vector3:set( x, y, z ) function Vector3:set( x, y, z )
if type( x ) == "table" then if type( x ) == "table" then
x, y, z = table.unpack( x ) x, y, z = table.unpack( x )
elseif type( x ) == "nil" then
x, y, z = 0, 0, 0
end end
self.x = x self.x = x

View File

@@ -27,5 +27,6 @@ void uluaPushQuaternion( lua_State *L, Quaternion quaternion );
void uluaPushMatrix( lua_State *L, Matrix matrix ); void uluaPushMatrix( lua_State *L, Matrix matrix );
void uluaPushRay( lua_State *L, Ray ray ); void uluaPushRay( lua_State *L, Ray ray );
void uluaPushRayCollision( lua_State *L, RayCollision rayCol ); void uluaPushRayCollision( lua_State *L, RayCollision rayCol );
void uluaPushBoundingBox( lua_State *L, BoundingBox box );
int uluaGetTableLen( lua_State *L ); int uluaGetTableLen( lua_State *L );

View File

@@ -35,6 +35,10 @@ int lmodelsUnloadMesh( lua_State *L );
int lmodelsDrawMesh( lua_State *L ); int lmodelsDrawMesh( lua_State *L );
int lmodelsDrawMeshInstanced( lua_State *L ); int lmodelsDrawMeshInstanced( lua_State *L );
int lmodelsSetMeshColor( lua_State *L ); int lmodelsSetMeshColor( lua_State *L );
int lmodelsExportMesh( lua_State *L );
int lmodelsGetMeshBoundingBox( lua_State *L );
int lmodelsGenMeshTangents( lua_State *L );
int lmodelsGenMeshBinormals( lua_State *L );
/* Material. */ /* Material. */
int lmodelsLoadMaterialDefault( lua_State *L ); int lmodelsLoadMaterialDefault( lua_State *L );
int lmodelsCreateMaterial( lua_State *L ); int lmodelsCreateMaterial( lua_State *L );

View File

@@ -781,6 +781,10 @@ void luaRegister() {
lua_register( L, "RL_DrawMesh", lmodelsDrawMesh ); lua_register( L, "RL_DrawMesh", lmodelsDrawMesh );
lua_register( L, "RL_DrawMeshInstanced", lmodelsDrawMeshInstanced ); lua_register( L, "RL_DrawMeshInstanced", lmodelsDrawMeshInstanced );
lua_register( L, "RL_SetMeshColor", lmodelsSetMeshColor ); lua_register( L, "RL_SetMeshColor", lmodelsSetMeshColor );
lua_register( L, "RL_ExportMesh", lmodelsExportMesh );
lua_register( L, "RL_GetMeshBoundingBox", lmodelsGetMeshBoundingBox );
lua_register( L, "RL_GenMeshTangents", lmodelsGenMeshTangents );
lua_register( L, "RL_GenMeshBinormals", lmodelsGenMeshBinormals );
/* Material. */ /* Material. */
lua_register( L, "RL_LoadMaterialDefault", lmodelsLoadMaterialDefault ); lua_register( L, "RL_LoadMaterialDefault", lmodelsLoadMaterialDefault );
lua_register( L, "RL_CreateMaterial", lmodelsCreateMaterial ); lua_register( L, "RL_CreateMaterial", lmodelsCreateMaterial );
@@ -1626,6 +1630,28 @@ void uluaPushRayCollision( lua_State *L, RayCollision rayCol ) {
lua_setfield( L, -2, "normal" ); lua_setfield( L, -2, "normal" );
} }
void uluaPushBoundingBox( lua_State *L, BoundingBox box ) {
lua_createtable( L, 2, 0 );
lua_createtable( L, 3, 0 );
lua_pushnumber( L, box.min.x );
lua_rawseti( L, -2, 1 );
lua_pushnumber( L, box.min.y );
lua_rawseti( L, -2, 2 );
lua_pushnumber( L, box.min.z );
lua_rawseti( L, -2, 3 );
lua_rawseti( L, -2, 1 );
lua_createtable( L, 3, 0 );
lua_pushnumber( L, box.max.x );
lua_rawseti( L, -2, 1 );
lua_pushnumber( L, box.max.y );
lua_rawseti( L, -2, 2 );
lua_pushnumber( L, box.max.z );
lua_rawseti( L, -2, 3 );
lua_rawseti( L, -2, 2 );
}
int uluaGetTableLen( lua_State *L ) { int uluaGetTableLen( lua_State *L ) {
int t = lua_gettop( L ), i = 0; int t = lua_gettop( L ), i = 0;
lua_pushnil( L ); lua_pushnil( L );

View File

@@ -1374,6 +1374,108 @@ int lmodelsSetMeshColor( lua_State *L ) {
return 1; return 1;
} }
/*
> success = RL_ExportMesh( Mesh mesh, string fileName )
Export mesh data to file, returns true on success
- Failure return false
- Success return true
*/
int lmodelsExportMesh( lua_State *L ) {
if ( !lua_isnumber( L, -2 ) || !lua_isstring( L, -1 ) ) {
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_ExportMesh( Mesh mesh, string fileName )" );
lua_pushboolean( L, false );
return 1;
}
size_t meshId = lua_tointeger( L, -2 );
if ( !validMesh( meshId ) ) {
lua_pushboolean( L, false );
return 1;
}
lua_pushboolean( L, ExportMesh( *state->meshes[ meshId ], lua_tostring( L, -1 ) ) );
return 1;
}
/*
> boundingBox = RL_GetMeshBoundingBox( Mesh mesh )
Compute mesh bounding box limits
- Failure return false
- Success return BoundingBox
*/
int lmodelsGetMeshBoundingBox( lua_State *L ) {
if ( !lua_isnumber( L, -1 ) ) {
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GetMeshBoundingBox( Mesh mesh )" );
lua_pushboolean( L, false );
return 1;
}
size_t meshId = lua_tointeger( L, -1 );
if ( !validMesh( meshId ) ) {
lua_pushboolean( L, false );
return 1;
}
uluaPushBoundingBox( L, GetMeshBoundingBox( *state->meshes[ meshId ] ) );
return 1;
}
/*
> success = RL_GenMeshTangents( Mesh mesh )
Compute mesh tangents
- Failure return false
- Success return true
*/
int lmodelsGenMeshTangents( lua_State *L ) {
if ( !lua_isnumber( L, -1 ) ) {
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GenMeshTangents( Mesh mesh )" );
lua_pushboolean( L, false );
return 1;
}
size_t meshId = lua_tointeger( L, -1 );
if ( !validMesh( meshId ) ) {
lua_pushboolean( L, false );
return 1;
}
GenMeshTangents( state->meshes[ meshId ] );
lua_pushboolean( L, true );
return 1;
}
/*
> success = RL_GenMeshBinormals( Mesh mesh )
Compute mesh binormals
- Failure return false
- Success return true
*/
int lmodelsGenMeshBinormals( lua_State *L ) {
if ( !lua_isnumber( L, -1 ) ) {
TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GenMeshBinormals( Mesh mesh )" );
lua_pushboolean( L, false );
return 1;
}
size_t meshId = lua_tointeger( L, -1 );
if ( !validMesh( meshId ) ) {
lua_pushboolean( L, false );
return 1;
}
GenMeshBinormals( state->meshes[ meshId ] );
lua_pushboolean( L, true );
return 1;
}
/* /*
## Models - Material ## Models - Material
*/ */
@@ -1545,7 +1647,6 @@ int lmodelsSetMaterialTexture( lua_State *L ) {
return 1; return 1;
} }
// SetMaterialTexture( state->materials[ lua_tointeger( L, -3 ) ], lua_tointeger( L, -2 ), *state->textures[ lua_tointeger( L, -1 ) ] );
SetMaterialTexture( state->materials[ materialId ], lua_tointeger( L, -2 ), *texturesGetSourceTexture( texId ) ); SetMaterialTexture( state->materials[ materialId ], lua_tointeger( L, -2 ), *texturesGetSourceTexture( texId ) );
lua_pushboolean( L, true ); lua_pushboolean( L, true );