#ifndef LIGHT_H
#define LIGHT_H

#include "Material.h"

/**
@class Light
Класс, описывающий переменные, при помощи которых задается источник света, содержит конструктор,
деструктор, 2 члена данных типа - трехмерный вектор, 3 члена данных вещественного типа и 10 методов.
*/
class Light
{
public:
        /// этот член отвечает за позицию источника света
        Vector3D Position;
        /// этот член отвечает за цвет источника света
        Vector3D Colour;
        /// этот член отвечает за константное уменьшение интенсивности луча источника света
        float ConstAttenuation;
        /// этот член отвечает за линейное уменьшение интенсивности луча источника света
        float LinearAttenuation;
        /// этот член отвечает за квадратичное уменьшение интенсивности луча источника света
        float QuadricAttenuation;

        /// Конструктор
        Light();
        /// Деструктор
        ~Light();

        /// Метод, устанавливающий позицию источника из параметра.
        /// @param  Pos – параметр типа трехмерный вектор(может быть константным)
        void SetPos(const Vector3D &Pos);
        /// Метод, устанавливающий цвет источника из параметра.
        /// @param  Col – параметр типа трехмерный вектор(может быть константным)
        void SetColor(const Vector3D &Col);
        /// Метод, устанавливающий константное уменьшение интенсивности луча источника из параметра.
        /// @param  c – параметр вещественного типа(может быть константным)
        void SetConst(const float c);
        /// Метод, устанавливающий линейное уменьшение интенсивности луча источника из параметра.
        /// @param  l – параметр вещественного типа(может быть константным)
        void SetLinear(const float l);
        /// Метод, устанавливающий квадратичное уменьшение интенсивности луча источника из параметра.
        /// @param  q – параметр вещественного типа(может быть константным)
        void SetQuadric(const float q);

        /// Метод, позволяющий получить позицию источника из объекта.
        /// @return Позиция источника типа трехмерный вектор
        Vector3D GetPos();
        /// Метод, позволяющий получить позицию источника из объекта.
        /// @return Цвет источника типа трехмерный вектор
        Vector3D GetColor();
        /// Метод, позволяющий получить константное уменьшение интенсивности луча источника из объекта.
        /// @return Константное уменьшение интенсивности источника вещественного типа
        float GetConst();
        /// Метод, позволяющий получить линейное уменьшение интенсивности луча источника из объекта.
        /// @return Линейное уменьшение интенсивности источника вещественного типа
        float GetLinear();
        /// Метод, позволяющий получить квадратичное уменьшение интенсивности луча источника из объекта.
        /// @return Квадратичное уменьшение интенсивности источника вещественного типа
        float GetQuadric();
};


#endif // LIGHT_H
