use super::*;
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct Light {
#[get(type(copy))]
pub(crate) kind: LightType,
#[get(type(copy))]
pub(crate) position: Vector3D,
#[get(type(copy))]
pub(crate) direction: Vector3D,
#[get(type(copy))]
pub(crate) color: Vector3D,
#[get(type(copy))]
pub(crate) intensity: f64,
#[get(type(copy))]
pub(crate) falloff: f64,
#[get(type(copy))]
pub(crate) spot_cos: f64,
}
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct Material {
#[get(type(copy))]
pub(crate) kind: MaterialKind,
#[get(type(copy))]
pub(crate) albedo: Vector3D,
#[get(type(copy))]
pub(crate) specular: f64,
#[get(type(copy))]
pub(crate) shininess: f64,
#[get(type(copy))]
pub(crate) emissive: Vector3D,
}
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct LightingUniforms {
#[get(pub(crate), type(clone))]
pub(crate) lights: Vec<Light>,
#[get(type(copy))]
pub(crate) ambient: Vector3D,
#[get(type(copy))]
pub(crate) eye: Vector3D,
}