From dc735cec54a148d848932c71e26cd9fbe445e173 Mon Sep 17 00:00:00 2001 From: rodri Date: Sun, 12 May 2024 20:32:05 +0000 Subject: add a name property to Material. --- graphics.h | 1 + scene.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/graphics.h b/graphics.h index 7d4006c..5d691b9 100644 --- a/graphics.h +++ b/graphics.h @@ -102,6 +102,7 @@ struct LightSource struct Material { + char *name; Color ambient; Color diffuse; Color specular; diff --git a/scene.c b/scene.c index 23a546a..15d3cc0 100644 --- a/scene.c +++ b/scene.c @@ -154,6 +154,11 @@ loadobjmodel(Model *m, OBJ *obj) mtl = &m->materials[m->nmaterials-1]; memset(mtl, 0, sizeof *mtl); + if(objmtl->name != nil){ + mtl->name = strdup(objmtl->name); + if(mtl->name == nil) + sysfatal("strdup: %r"); + } mtl->ambient.r = objmtl->Ka.r; mtl->ambient.g = objmtl->Ka.g; mtl->ambient.b = objmtl->Ka.b; @@ -306,8 +311,11 @@ delmodel(Model *m) freememimage(m->tex); if(m->nor != nil) freememimage(m->nor); - if(m->nmaterials > 0) + if(m->nmaterials > 0){ + while(m->nmaterials--) + free(m->materials[m->nmaterials].name); free(m->materials); + } if(m->nprims > 0) free(m->prims); free(m); -- cgit v1.2.3