ref: dc735cec54a148d848932c71e26cd9fbe445e173
parent: 0cd80fe628fc0d8a3672f1fd1d3cfa96c0b0ea2e
author: rodri <rgl@antares-labs.eu>
date: Sun May 12 16:32:05 EDT 2024
add a name property to Material.
--- a/graphics.h
+++ b/graphics.h
@@ -102,6 +102,7 @@
struct Material
{
+ char *name;
Color ambient;
Color diffuse;
Color specular;
--- a/scene.c
+++ b/scene.c
@@ -154,6 +154,11 @@
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 @@
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);