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

#include <Darkstar/Graphic System/Effect/eccSetter.hpp>

using gs::Effect;
using gs::Camera;
using math::Matr4;
using gs::ECCSetter;

ECCSetter::ECCSetter()
{

};

ECCSetter::~ECCSetter()
{

};

void ECCSetter::set(const shared_ptr<Effect>& effect, const math::Matr4& world_matrix, const shared_ptr<Camera>& camera)
{
	if(effect->getIsConstantExist("world_view_projection"))
	{
		Matr4 world_view_projection = camera->getViewProjection() * world_matrix;
		effect->setMatrix4x4("world_view_projection", &world_view_projection);
	};
	effect->setMatrix4x4("world", &world_matrix);
	effect->setMatrix4x4("view_projection", &camera->getViewProjection());
	effect->setMatrix4x4("view", &camera->getViewMatrix());
	effect->setVect3("view_position", &camera->getPosition());
};