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

#if GD_D3D10

#include <Darkstar/Graphic System/Effect/effect_manager.hpp>
#include <Darkstar/Kernel/logh.hpp>

using namespace gs;
using ker::Log;

bool _checkIsCompatible(const std::vector<ShaderInputParameter>& param1, const std::vector<ShaderInputParameter>& param2)
{
	unsigned int size = param1.size() > param2.size() ? static_cast<unsigned int>(param2.size()) : static_cast<unsigned int>(param1.size());
	for(unsigned int i = 0; i < size; ++i)
		if(!(param1[i] == param2[i]))
			return false;
	return true;
};

bool EffectManager::_checkInputSignature()
{
	if(tmp_input_signature.data == NULL)
	{
		lwar << "Input signature not correct in effect";
		compiled_effect_file->deleteFile();
		return false;
	};

	unsigned int size = static_cast<unsigned int>(tmp_vertex_shader_reflection.size());
	for(unsigned int i = 0; i < size; ++i)
		for(unsigned int j = i+1; j < size; ++j)
		{
			if(!_checkIsCompatible(tmp_vertex_shader_reflection[i]->getAllInputParameters(), tmp_vertex_shader_reflection[j]->getAllInputParameters()))
				return false;
		};
	return true;
};

#endif