
/*
	TEDDY - General graphics application library
	Copyright (C) 1999, 2000, 2001	Timo Suoranta
	tksuoran@cc.helsinki.fi

	This library is free software; you can redistribute it and/or
	modify it under the terms of the GNU Lesser General Public
	License as published by the Free Software Foundation; either
	version 2.1 of the License, or (at your option) any later version.

	This library is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public
	License along with this library; if not, write to the Free Software
	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/*!
	\class	 PostElement
	\ingroup g_scenes
	\author  Timo Suoranta
	\brief	 Postprocessing rendering element
	\date	 2001

	Baseclass for laser beams, engine glows, explosions etc. alpha blending effects.
	These need 2D processing through gluProject() like scheme.
*/


#ifndef TEDDY_SCENES_POST_ELEMENT_H
#define TEDDY_SCENES_POST_ELEMENT_H


#include "Maths/Vector4.h"
#include "Models/ModelInstance.h"
#include "SysSupport/StdList.h"
namespace Graphics           { class Texture; };
namespace PhysicalComponents { class Projection; };
using namespace Materials;
using namespace Graphics;
using namespace Maths;
using namespace Models;
using namespace PhysicalComponents;


namespace Scenes {


class PostElement : public ModelInstance {
public:
	PostElement( const char *name, float radius, float offset, float cycle );

	void          insert       ( Vector4 *v );
	virtual void  drawImmediate( Projection *p );

protected:
	list<Vector4*>  vertices;
	Texture        *txt;
	float           offset;
	float           cycle;
	float           min_radius;
	float           max_radius;
};


};	//	namespace Scenes


#endif	//	TEDDY_SCENES_POST_ELEMENT_H


