#pragma once
#include "structures.h"

namespace M3D
{
class OpenGLState;
/**
 * Хранит информацию об источнике света
 * @author Denis A. Biryukov <denis.birukov@gmail.com>
 */
class Light
{
	public:
		Light();
		~Light();
		/**
		 * Установка положения источника света
		 * @param location координаты источника света
		 */
		void set_location(const Coords &location);
		/**
		 * Установка цвета источника света. Альфа компонента игнорируется
		 * @param color цвет источника света
		 */
		void set_color(const Color4f &color);
		/**
		 * Получение положения источника света
		 * @return координаты источника света
		 */
		const Coords& get_location() const { return _location_;}
		/**
		 * Получени цвета источника света.
		 * @param цвет источника света
		 */
		const Color4f& get_color() const { return _light_color_;}
		/**
		 * Передает параметры источника света в шейдер
		 * @param frame_num номер кадра
		 * @param gl_state указатель на состояние OpenGL контекста
		 */
		void set_light(uint32_t frame_num, OpenGLState *gl_state);
	private:
		Color4f _light_color_;
		Coords _location_;
		float _angle_;
};

}
