//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007-2008)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: directional_light.hpp
//      Краткое описание: directional light
//

#ifndef DSE_GS_LIGHTING_DIRECTIONAL_LIGHT_HPP
#define DSE_GS_LIGHTING_DIRECTIONAL_LIGHT_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/math.hpp>
#include <Darkstar/Graphic System/Light System/light_common.hpp>

namespace gs
{
	class DirectionalLight
	{
	private:
		DRSLIGHTSTATE light_state;
		math::Vect3 diffuse_color;
		math::Vect3 specular_color;
		math::Vect3 ambient_color;
		math::Vect3 direction;
	public:
		DirectionalLight();
		DirectionalLight(const DRSLIGHTSTATE& light_state, const math::Vect3& direction, const math::Vect3& diffuse_color = math::Vect3(1, 1, 1), const math::Vect3& specular_color = math::Vect3(1, 1, 1), const math::Vect3& ambient_color = math::Vect3(0, 0, 0));
		~DirectionalLight();

		const DRSLIGHTSTATE& getLightState() const;
		void setLightState(const DRSLIGHTSTATE& new_light_state);
		void toggleLightState();

		const math::Vect3& getDiffuseColor() const;
		void setDiffuseColor(const math::Vect3& new_color);
		const math::Vect3& getSpecularColor() const;
		void setSpecularColor(const math::Vect3& new_color);
		const math::Vect3& getAmbientColor() const;
		void setAmbientColor(const math::Vect3& new_color);

		const math::Vect3& getDirection() const;
		void setDirection(const math::Vect3& new_direction);
	};
};

#include <Darkstar/Graphic System/Light System/directional_light.inl>

#endif
		
