#pragma once #include "PointLight.hpp" #include "SquareLight.hpp" #include "Material.hpp" #include "WoodMaterial.hpp" #include "BoundingBox.hpp" #include "Triangle.hpp" #include "Sphere.hpp" #include "Cylinder.h" #include "PlaneAxisAligned.hpp" #include "TriangleMesh.h" #include "Transformed.h" #include "KDTree.hpp" #include class Renderer; class World{ // friend class Renderer; public: KDTree* kdtree; Vector eyePosition; Vector lookPosition; Vector upwards; Intersectable** virtualWorldObjects; Vector* virtualWorldVertices; Light** virtualWorldLights; Material** virtualWorldMaterials; int nVirtualWorldObjects; int nVirtualWorldVertices; int nVirtualWorldLights; int nVirtualWorldMaterials; float virtualWorldSummedLightLuminance; int materialArraySize; int objectArraySize; int lightArraySize; public: World(); ~World(); void createScene(); void createScene(Intersectable* obj); void createScene(std::istream& isc); void obliterate(); void createEnvironmentMap(std::istream& isc); };