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

#ifndef DSE_GS_RENDER_STATE_DEPTH_HPP
#define DSE_GS_RENDER_STATE_DEPTH_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/Graphic System/Render State/common_render_state.hpp>

namespace gs
{
	class DepthRenderState
	{
	private:
		bool depth_enable;
		DEDEPTHWRITEMASK depth_write_enable;
		DRSCMPFUNC depth_func;
	public:
		DepthRenderState();
		DepthRenderState(const DepthRenderState& ds);
		DepthRenderState(const bool depth_enable, const DEDEPTHWRITEMASK& depth_write_enable, const DRSCMPFUNC& depth_func);
		~DepthRenderState();

		bool operator==(const DepthRenderState& state) const;

		void setDepthEnable(const bool depth_enable);
		void setDepthWriteMask(const DEDEPTHWRITEMASK& depth_write_enable);
		void setDepthFunction(const DRSCMPFUNC& depth_func);

		bool getIsDepthEnable() const;
		const DEDEPTHWRITEMASK& getDepthWriteMask() const;
		const DRSCMPFUNC& getDepthFunction() const;

		void set();
	};
};

#endif