diff options
Diffstat (limited to 'src/scene/scene.rs')
-rw-r--r-- | src/scene/scene.rs | 47 |
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 - } -} - |