#pragma once

#include "BsCorePrerequisites.h"

namespace BansheeEngine
{
	/**
	 * @brief	Factory class for creating Renderer objects. Implement
	 * 			this class for any custom renderer classes you may have,
	 * 			and register it with renderer manager.
	 * 			
	 * @see		RendererManager
	 * 			
	 * @note	Internal class.
	 */
	class BS_CORE_EXPORT RendererFactory
	{
	public:
		virtual ~RendererFactory() { }

		/**
		 * @brief	Creates a new instance of the renderer.
		 */
		virtual CoreRendererPtr create() = 0;

		/**
		 * @brief	Returns the name of the renderer this factory creates.
		 */
		virtual const String& name() const = 0;
	};
}