use super::*;
#[derive(Clone, Data, Debug, PartialEq)]
pub struct Ray {
#[get(type(copy))]
pub(crate) origin: Vector3D,
#[get(type(copy))]
pub(crate) direction: Vector3D,
#[get(type(copy))]
pub(crate) t_min: f64,
#[get(type(copy))]
pub(crate) t_max: f64,
#[get(type(copy))]
pub(crate) depth: u32,
}
#[derive(Clone, Data, Debug, PartialEq)]
pub struct Hit {
#[get(type(copy))]
pub(crate) t: f64,
#[get(type(copy))]
pub(crate) position: Vector3D,
#[get(type(copy))]
pub(crate) normal: Vector3D,
pub(crate) material: Material,
}
#[derive(Clone, Data, Debug, PartialEq)]
pub struct Occluder {
#[get(type(copy))]
pub(crate) kind: OccluderKind,
#[get(type(copy))]
pub(crate) center: Vector3D,
#[get(type(copy))]
pub(crate) extent: Vector3D,
pub(crate) material: Material,
}
#[derive(Clone, Data, Debug, PartialEq)]
pub struct RayTraceScene {
#[get_mut(skip)]
#[set(skip)]
pub(crate) occluders: Vec<Occluder>,
#[get(skip)]
#[get_mut(skip)]
#[set(skip)]
pub(crate) shadow_points: Vec<(Vector3D, f64)>,
}