diff options
| author | jussi | 2023-10-30 22:40:20 +0200 |
|---|---|---|
| committer | jussi | 2023-10-30 22:40:20 +0200 |
| commit | c3295e014d979c0213b3fb7e4837b5356bc8fdb4 (patch) | |
| tree | 66ee22c7140761a17bf174d71fecfb94c1378b1d /src/models.c | |
| parent | 6e0d577d63b221797cdc7f392718dd1c4fb384b4 (diff) | |
| download | reilua-enhanced-c3295e014d979c0213b3fb7e4837b5356bc8fdb4.tar.gz reilua-enhanced-c3295e014d979c0213b3fb7e4837b5356bc8fdb4.tar.bz2 reilua-enhanced-c3295e014d979c0213b3fb7e4837b5356bc8fdb4.zip | |
Reintroducing Unload functions. Is*Ready functions. GC_UNLOAD setting and check function.
Diffstat (limited to 'src/models.c')
| -rw-r--r-- | src/models.c | 91 |
1 files changed, 89 insertions, 2 deletions
diff --git a/src/models.c b/src/models.c index 75f07fd..330346f 100644 --- a/src/models.c +++ b/src/models.c @@ -924,6 +924,19 @@ int lmodelsUpdateMesh( lua_State *L ) { } /* +> RL.UnloadMesh( Mesh mesh ) + +Unload mesh data from CPU and GPU +*/ +int lmodelsUnloadMesh( lua_State *L ) { + Mesh *mesh = uluaGetMesh( L, 1 ); + + UnloadMesh( *mesh ); + + return 0; +} + +/* > RL.DrawMesh( Mesh mesh, Material material, Matrix transform ) Draw a 3d mesh with material and transform @@ -1047,9 +1060,22 @@ int lmodelsGenMeshTangents( lua_State *L ) { */ /* +> material = RL.GetMaterialDefault() + +Default material for reference. Return as lightuserdata + +- Success return Material +*/ +int lmodelsGetMaterialDefault( lua_State *L ) { + lua_pushlightuserdata( L, &state->defaultMaterial ); + + return 1; +} + +/* > material = RL.LoadMaterialDefault() -Load default material +Load default material as new object - Success return Material */ @@ -1145,6 +1171,37 @@ int lmodelsCreateMaterial( lua_State *L ) { } /* +> isReady = RL.IsMaterialReady( Material material ) + +Check if a material is ready + +- Success return bool +*/ +int lmodelsIsMaterialReady( lua_State *L ) { + Material *material = uluaGetMaterial( L, 1 ); + + lua_pushboolean( L, IsMaterialReady( *material ) ); + + return 1; +} + +/* +> RL.UnloadMaterial( Material material ) + +Unload material from GPU memory (VRAM) +*/ +int lmodelsUnloadMaterial( lua_State *L ) { + Material *material = uluaGetMaterial( L, 1 ); + + /* Custom UnloadMaterial since we don't want to free Shaders or Textures. */ + RL_FREE( material->maps ); + + // UnloadMaterial( *material ); + + return 0; +} + +/* > RL.SetMaterialTexture( Material material, int mapType, Texture texture ) Set texture for a material map type (MATERIAL_MAP_ALBEDO, MATERIAL_MAP_METALNESS...) @@ -1286,7 +1343,7 @@ int lmodelsGetMaterialValue( lua_State *L ) { Get material shader -- Success return Shader. Returns as lightuserdata +- Success return Shader. Return as lightuserdata */ int lmodelsGetMaterialShader( lua_State *L ) { Material *material = uluaGetMaterial( L, 1 ); @@ -1357,6 +1414,34 @@ int lmodelsLoadModelFromMesh( lua_State *L ) { } /* +> isReady = RL.IsModelReady( Model model ) + +Check if a model is ready + +- Success return bool +*/ +int lmodelsIsModelReady( lua_State *L ) { + Model *model = uluaGetModel( L, 1 ); + + lua_pushboolean( L, IsModelReady( *model ) ); + + return 1; +} + +/* +> RL.UnloadModel( Model model ) + +Unload model (including meshes) from memory (RAM and/or VRAM) +*/ +int lmodelsUnloadModel( lua_State *L ) { + Model *model = uluaGetModel( L, 1 ); + + UnloadModel( *model ); + + return 0; +} + +/* > RL.DrawModel( Model model, Vector3 position, float scale, Color tint ) Draw a model (With texture if set) @@ -1400,6 +1485,8 @@ int lmodelsSetModelMaterial( lua_State *L ) { int modelMaterialId = luaL_checkinteger( L, 2 ); Material *material = uluaGetMaterial( L, 3 ); + //TODO Could maybe return old shader and textures for storage or get garbage collected? + /* Copy material data instead of using pointer. Pointer would result in double free error. */ model->materials[ modelMaterialId ].shader = material->shader; model->materials[ modelMaterialId ].maps[ MATERIAL_MAP_ALBEDO ] = material->maps[ MATERIAL_MAP_ALBEDO ]; |
