/******************************************************************/ /* 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. */ /******************************************************************/ #ifndef _SCENE_H_ #define _SCENE_H_ #include #include #include #include "ray.h" #include "image.h" #include "camera.h" #include "render_base.h" #include "environmentMap.h" #include "boundedCompound.h" #include "lightsource_base.h" #include "intersectionPoint.h" class scene { friend void importScene(const std::string&, scene&); public: ////////////////// // Constructors // ////////////////// scene(void) {} scene(const scene&) = delete; /////////////// // Operators // /////////////// camera& operator=(const camera&) = delete; //////////////// // Inspectors // //////////////// const camera& getCamera(void) const; const lightsource_base& getLightsource(size_t idx) const; size_t numberOfLightsources(void) const; bool hasEnvironmentMap(void) const; color evaluateEnvironmentMap(const vec3d& direction) const; ///////////// // Methods // ///////////// intersectionPoint intersect(const ray& r) const; image render(void) const; private: ////////////////// // Data Members // ////////////////// camera _camera; std::unique_ptr _sceneGraphRoot; std::vector> _lightsources; std::unique_ptr _renderEngine; std::unique_ptr _environmentMap; }; #endif /* _SCENE_H_ */