summaryrefslogtreecommitdiff
path: root/hw6/src/scene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'hw6/src/scene.cpp')
-rw-r--r--hw6/src/scene.cpp60
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);
+}