diff options
Diffstat (limited to 'hw6/src/scene.cpp')
-rw-r--r-- | hw6/src/scene.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/hw6/src/scene.cpp b/hw6/src/scene.cpp new file mode 100644 index 0000000..35e0fe4 --- /dev/null +++ b/hw6/src/scene.cpp @@ -0,0 +1,60 @@ +/******************************************************************/ +/* This file is part of the homework assignments for CSCI-427/527 */ +/* at The College of William & Mary and authored by Pieter Peers. */ +/* No part of this file, whether altered or in original form, can */ +/* be distributed or used outside the context of CSCI-427/527 */ +/* without consent of either the College of William & Mary or */ +/* Pieter Peers. */ +/******************************************************************/ +#include <cassert> +#include "scene.h" +#include "render_base.h" + +//////////////// +// Inspectors // +//////////////// +const camera& scene::getCamera(void) const +{ + return _camera; +} + + +const lightsource_base& scene::getLightsource(size_t idx) const +{ + assert(idx < _lightsources.size()); + return *(_lightsources[idx]); +} + + +size_t scene::numberOfLightsources(void) const +{ + return _lightsources.size(); +} + + +bool scene::hasEnvironmentMap(void) const +{ + return (_environmentMap != nullptr); +} + + +color scene::evaluateEnvironmentMap(const vec3d& direction) const +{ + assert(_environmentMap); + return (*_environmentMap)(direction); +} + + +///////////// +// Methods // +///////////// +intersectionPoint scene::intersect(const ray& r) const +{ + return _sceneGraphRoot->intersect(r); +} + + +image scene::render(void) const +{ + return _renderEngine->render(*this); +} |