/* -----------------------------------------------------------------------------
	GSFramework
	Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */


#ifndef	__NRENDERER_RESOURCE_FACTORY__
#define	__NRENDERER_RESOURCE_FACTORY__


		#include "core/render_resource_factory.h"


namespace GS {
	namespace Render {
		class Renderer;

//
struct	RendererResourceFactory : public ResourceFactory
{
		Renderer	&renderer;

virtual	Geometry	*NewGeometry();
virtual	Material	*NewMaterial();
virtual	Texture		*NewTexture();
virtual	Shader		*NewShader();

virtual	Geometry	*LoadGeometry(const char *, bool bypass_cache = false, Geometry * = 0);
virtual	Material	*LoadMaterial(const char *, bool bypass_cache = false, Material * = 0);
virtual	Texture		*LoadTexture(const char *, bool bypass_cache = false, Texture * = 0);
virtual	Shader		*LoadShader(const char *, bool bypass_cache = false, Shader * = 0);

		RendererResourceFactory(Renderer &r) : renderer(r) {}
};

	} // Render
} // GS


#endif	// __NRENDERER_RESOURCE_FACTORY__