X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fscene.c;h=fdde15c0883ab3761d1c9860adff79d76c4128b4;hb=HEAD;hp=36c9fba9aa0851eda4d5d903e7e62a00f9394dc7;hpb=81dffafe4b045c854d8a97f9c6c41877ee7669ca;p=retroray diff --git a/src/scene.c b/src/scene.c index 36c9fba..fdde15c 100644 --- a/src/scene.c +++ b/src/scene.c @@ -40,27 +40,35 @@ struct scene *create_scene(void) void free_scene(struct scene *scn) { - int i; - if(!scn) return; + scn_clear(scn); + + darr_free(scn->objects); + darr_free(scn->lights); + darr_free(scn->mtl); + free(scn); +} + +void scn_clear(struct scene *scn) +{ + int i; + for(i=0; iobjects); i++) { free_object(scn->objects[i]); } - darr_free(scn->objects); + darr_clear(scn->objects); for(i=0; ilights); i++) { free_light(scn->lights[i]); } - darr_free(scn->lights); + darr_clear(scn->lights); for(i=0; imtl); i++) { mtl_destroy(scn->mtl[i]); free(scn->mtl[i]); } - darr_free(scn->mtl); - - free(scn); + darr_clear(scn->mtl); } int scn_add_object(struct scene *scn, struct object *obj)