From c06fb879906cee15b43fb2e6a90c4f164cde007f Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 7 Sep 2013 18:41:33 -0700 Subject: [PATCH] Add scene_add_object --- src/scene.c | 27 ++++++++++++++++++++++++++- src/scene.h | 4 ++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/scene.c b/src/scene.c index e75fd4b..38b979e 100644 --- a/src/scene.c +++ b/src/scene.c @@ -9,7 +9,6 @@ #include #include -#include "object.h" #include "scene.h" @@ -113,6 +112,32 @@ scene_render(Scene *scene) } +/* + * scene_add_object -- + * + * Add an Object to the Scene. + */ +void +scene_add_object(Scene *scene, Object *obj) +{ + ObjectList *ol = malloc(sizeof(ObjectList)); + if (ol == NULL) { + return; + } + + ol->object = obj; + ol->next = NULL; + + ObjectList *ptr = scene->objects; + while (ptr != NULL) { + if (ptr->next == NULL) { + ptr->next = ol; + } + ptr = ptr->next; + } +} + + Color _scene_trace(Scene *scene, const Ray ray, const int depth) { diff --git a/src/scene.h b/src/scene.h index cd65b0d..158a8ec 100644 --- a/src/scene.h +++ b/src/scene.h @@ -9,7 +9,10 @@ #define __SCENE_H__ #include + #include "camera.h" +#include "object.h" + typedef struct _ObjectList ObjectList; @@ -30,6 +33,7 @@ Scene *scene_init(); void scene_destroy(Scene *scene); void scene_load(Scene *scene, FILE *scene_file); void scene_render(Scene *scene); +void scene_add_object(Scene *scene, Object *object); #endif