aboutsummaryrefslogtreecommitdiff
path: root/src/scene/scene.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/scene/scene.rs')
-rw-r--r--src/scene/scene.rs47
1 files changed, 0 insertions, 47 deletions
diff --git a/src/scene/scene.rs b/src/scene/scene.rs
deleted file mode 100644
index 83a43c7..0000000
--- a/src/scene/scene.rs
+++ /dev/null
@@ -1,47 +0,0 @@
-use crate::core::{Ray, Intersection};
-use crate::material::Material;
-
-use super::Object;
-
-pub struct Scene {
- objs: Vec<Object>,
-}
-
-pub struct SceneIntersect<'a> {
- pub mat: &'a dyn Material,
- pub i: Intersection,
-}
-
-impl Scene {
- pub fn new() -> Self {
- Self {
- objs: Vec::new(),
- }
- }
-
- pub fn add_object(&mut self, obj: Object) {
- self.objs.push(obj);
- }
-
- pub fn add_objects(&mut self, objs: Vec<Object>) {
- for obj in objs {
- self.add_object(obj);
- }
- }
-
- pub fn intersect(&self, ray: &Ray) -> Option<SceneIntersect> {
- let mut min: Option<SceneIntersect> = None;
-
- for obj in self.objs.iter() {
- if let Some(i) = obj.shape.intersect(&ray) {
- match min {
- Some(ref si) if si.i.t < i.t => (),
- _ => min = Some(SceneIntersect {i, mat: obj.mat.as_ref() }),
- }
- }
- }
-
- min
- }
-}
-