use crate::camera::Camera; use crate::light::Light; use crate::primitive::Primitive; use nalgebra::Vector3; use std::sync::Arc; pub struct Scene { pub primitives: Vec>, pub lights: Vec>, pub cameras: Vec>, pub ambient_light: Arc>, } impl Scene { // Creates a new Scene with given parameters pub fn new( primitives: Vec>, lights: Vec>, cameras: Vec>, ambient_light: Arc>, ) -> Self { Scene { primitives, lights, cameras, ambient_light, } } // Creates an empty Scene with default values pub fn empty() -> Self { Scene { primitives: Vec::new(), lights: Vec::new(), cameras: Vec::new(), ambient_light: Arc::new(Vector3::new(0.0, 0.0, 0.0)), } } }