use crate::tuples::{Color, Tuple};

#[derive(Clone, Debug, PartialEq)]
pub struct PointLight {
    pub position: Tuple,
    pub intensity: Color,
}

impl PointLight {
    /// Creates a new `PositionLight` at the given `position` and with the given
    /// `intensity`.
    ///
    /// # Examples
    /// ```
    /// use rtchallenge::{
    ///     lights::PointLight,
    ///     tuples::{Color, Tuple},
    ///     WHITE,
    /// };
    ///
    /// let intensity = WHITE;
    /// let position = Tuple::point(0., 0., 0.);
    /// let light = PointLight::new(position, intensity);
    /// assert_eq!(light.position, position);
    /// assert_eq!(light.intensity, intensity);
    /// ```
    pub fn new(position: Tuple, intensity: Color) -> PointLight {
        PointLight {
            position,
            intensity,
        }
    }
}
