InVoxel() for all Primitives, including fix for Triangle::CalcBounds()
[MicroTrace.git] / Scene.hxx
index b92e9e5..baafce6 100644 (file)
--- a/Scene.hxx
+++ b/Scene.hxx
@@ -2,6 +2,9 @@
 #define SCENE_HXX
 
 #include <vector>
+#include <string>
+#include <fstream>
+
 
 #include "Ray.hxx"
 #include "Camera.hxx"
@@ -27,11 +30,28 @@ public:
   // trace the given ray and shade it, returnt the color of the shaded ray
   Vec3f RayTrace(Ray& ray);
     
+  // acces to camera and light sources
   const Camera* camera() const; 
+  std::vector<Light*> lights() const;
+
+  // set new camera
+  void setCamera(const Camera* camera);
+
+  // reads in a scene description
+  void ParseOBJ(const std::string& file, float factor);
+  // calculate scene bounding box
+  void CalcBounds();
+
+  const Box& GetSceneBox() const;
 private:
   Scene(const Scene& );
   Scene& operator=(const Scene& );
 
+  void parseOBJLine(const std::string& line);
+  void parseVertex(std::istringstream& iss);
+  void parseFace(std::istringstream& iss);
+  void buildTriangleList(float scale);
+
   Camera* m_camera;
   // background color
   Vec3f m_bgColor;
@@ -40,5 +60,15 @@ private:
   std::vector<Primitive*> m_primitives;
   // lights
   std::vector<Light*> m_lights;
+
+  // shader used by loading routine
+  Shader* m_shader;
+
+  // storage for vertices and face indices
+  std::vector<Vec3f> m_vertices, m_faces;
+  Vec3f m_centroid;
+
+  // scene bounding box
+  Box m_scene_box;
 };
 #endif
This page took 0.02547 seconds and 4 git commands to generate.