diff options
author | rodri <rgl@antares-labs.eu> | 2024-04-03 15:43:46 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2024-04-03 15:43:46 +0000 |
commit | 930e09a2ea12275cf2e04577a170a2be342db045 (patch) | |
tree | ea2933cbadbf8cb8725a42a9dd0dfbf55424e7ab | |
parent | 0aa5a5517703a7dcbcf0ef2ef29fa37f8f1da6ed (diff) | |
download | libgraphics-930e09a2ea12275cf2e04577a170a2be342db045.tar.gz libgraphics-930e09a2ea12275cf2e04577a170a2be342db045.tar.bz2 libgraphics-930e09a2ea12275cf2e04577a170a2be342db045.zip |
scene: implement full cleanup procedures.
-rw-r--r-- | graphics.h | 1 | ||||
-rw-r--r-- | scene.c | 23 |
2 files changed, 22 insertions, 2 deletions
@@ -266,6 +266,7 @@ Entity *newentity(Model*); void delentity(Entity*); Scene *newscene(char*); void delscene(Scene*); +void clearscene(Scene*); /* vertex */ void addvattr(Vertex*, char*, int, void*); @@ -117,6 +117,14 @@ newmodel(void) void delmodel(Model *m) { + if(m->obj != nil) + objfree(m->obj); + if(m->tex != nil) + freememimage(m->tex); + if(m->nor != nil) + freememimage(m->nor); + if(m->nelems > 0) + free(m->elems); free(m); } @@ -138,7 +146,7 @@ newentity(Model *m) void delentity(Entity *e) { - /* TODO free model */ + delmodel(e->mdl); free(e); } @@ -168,7 +176,18 @@ newscene(char *name) void delscene(Scene *s) { - /* TODO free ents */ + clearscene(s); free(s->name); free(s); } + +void +clearscene(Scene *s) +{ + Entity *e; + + for(e = s->ents.next; e != &s->ents; e = e->next){ + delentity(e); + s->nents--; + } +} |