/*********************************************************************//**
*	\brief BaseFunction
*	Abstraktni trida definuje jeden typ entit->funkce, ktere maji polygonovy
*	model vykreslovany klasicky back-to-front.
*	
*	\author Michal Jirous
*	\date 23.04.2009
*	\file ent_basefunction.h
**********************************************************************/

#ifndef __BASE_FUNCTION_H__
#define __BASE_FUNCTION_H__

#include "ent_baseentity.h"

#include "level_structs.h"

class CBaseFunction : public CBaseEntity
{
protected:
	bool m_bRenderSelf;
	bool m_bSwitched;
	friend bool texturesPoolCreating( Face &face, CBaseFunction *initiator );
	TexturePool m_TexturesPool;
	void basicSolidRender( RenderData &renderData );
	void switchTextures();
	virtual void passStoredEvent( BackTimeData &backData );
public:
	CBaseFunction();
	virtual void compile();
	virtual void decompile();
	virtual void render( RenderData &renderData );
	virtual bool renderCullTest(  RenderData &renderData );
	virtual void onTarget( int target_type );
	virtual void restart();
	virtual void goBackInTime();
	//virtual void setParameters( parameters_t &parametersMap );
};


#endif /*__BASE_FUNCTION_H__*/

