//********************************************************************
// Ninfa3D Engine 
// copyright 2008-2009
// By Viz_Fuerte
// VC: 9.0
// CShaderSceneNode.h
//********************************************************************

/*--------------------------------------------------------------------
Includos*/

	#include "..\Header Files\Ninfa3D.h"

/* storage for information pertaining to a shader constant
 */
typedef struct tConstant tConstant;
struct tConstant
{
	tConstant *		next;
	const char *	name;
	int				address;
	int				preset;
	const float *	data;
	int				count;
};

class CShaderCallBack : public IShaderConstantSetCallBack
{
public:

	/*================================================================
	Atributos*/

	tConstant* VertexConstantList;
	tConstant* PixelConstantList;

	/*================================================================
	Operaciones*/

	CShaderCallBack();
	~CShaderCallBack();

	virtual void OnSetConstants(IMaterialRendererServices* services,s32 id);
};

/* returned structure containing shader information
 */
typedef struct tShaderReply tShaderReply;
struct tShaderReply
{
	s32						material_type;

	CShaderCallBack *	ShaderCallBack;
	tShaderReply *			next_shader;
};