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


#ifndef	__SIMPLE_LIST_RENDERABLE__
#define	__SIMPLE_LIST_RENDERABLE__


		#include "core/renderable.h"
		#include "container/narray_list.h"


namespace GS {
	namespace Core {

/*
	@short	Simple list renderable.
	@author	Emmanuel Julien (ejulien@nworks.fr)
*/
class	SimpleCullingSystem : public Renderable
{
protected:

		ArrayList <Renderable *> renderable_list;

public:

		/// Add a renderable to the provider.
		void			AddRenderable(Renderable *);
		/// Delete a renderable from the provider.
		void			DeleteRenderable(Renderable *);

		/// Compute renderable min-max.
virtual	void			ComputeRenderableMinMax(MinMax &);
		/// Get primitive list.
virtual	uint			GetRenderablePrimitiveList(const Camera &view, const Camera &default_view, Stack <Render::Primitive *> &, Context = Context_Default, bool cull = true);
};

	} // Core
} // GS


#endif	// __SIMPLE_LIST_RENDERABLE__
