summaryrefslogtreecommitdiff
path: root/hw6/src/lightsourceGeometry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'hw6/src/lightsourceGeometry.cpp')
-rw-r--r--hw6/src/lightsourceGeometry.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/hw6/src/lightsourceGeometry.cpp b/hw6/src/lightsourceGeometry.cpp
new file mode 100644
index 0000000..3f028aa
--- /dev/null
+++ b/hw6/src/lightsourceGeometry.cpp
@@ -0,0 +1,54 @@
+/******************************************************************/
+/* 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 "lightsourceShader.h"
+#include "lightsourceGeometry.h"
+
+/////////////////
+// Constructor //
+/////////////////
+lightsourceGeometry::lightsourceGeometry(void)
+ : boundedCompound()
+{
+ // Nothing.
+}
+
+
+lightsourceGeometry::lightsourceGeometry(const std::shared_ptr<const boundedPrimitive>& geometry, const std::shared_ptr<const lightsource_base>& ls, const std::shared_ptr<const shader_base>& material)
+ : boundedCompound()
+{
+ assert(geometry && ls);
+ _geometry.push_back(geometry);
+ _shader = std::shared_ptr<const shader_base>(new lightsourceShader(ls, material));
+
+ // Done.
+ initializeBoundingBox();
+}
+
+
+/////////////
+// Methods //
+/////////////
+bool lightsourceGeometry::hasShader(void) const
+{
+ // always has a shader by construction
+ return true;
+}
+
+
+const std::vector<std::shared_ptr<const boundedPrimitive>>& lightsourceGeometry::compounds(void) const
+{
+ return _geometry;
+}
+
+
+void lightsourceGeometry::_print(std::ostream& s) const
+{
+ s << "lightsourceGeometry (" << _bb << ") -> [" << *_shader << "]";
+}