#if !defined( IEFX_H )
#define IEFX_H
#ifdef _WIN32
#pragma once
#endif

#include "interface.h"
#include "vector.h"
#include "dlight.h" 

struct model_t;
struct dlight_t;
class IMaterial;

#define	MAX_DLIGHTS		32

abstract_class IVEfx
{
public:
	virtual	int				Draw_DecalIndexFromName(char* name) = 0;

	virtual	void			DecalShoot(int textureIndex, int entity,
		const model_t* model, const Vector& model_origin, const QAngle& model_angles,
		const Vector& position, const Vector* saxis, int flags) = 0;

	virtual	void			DecalColorShoot(int textureIndex, int entity,
		const model_t* model, const Vector& model_origin, const QAngle& model_angles,
		const Vector& position, const Vector* saxis, int flags, const color32& rgbaColor) = 0;

	virtual void			PlayerDecalShoot(IMaterial* material, void* userdata, int entity, const model_t* model,
		const Vector& model_origin, const Vector& model_angles,
		const Vector& position, const Vector* saxis, int flags, const color32& rgbaColor) = 0;

	virtual	dlight_t* CL_AllocDlight(int key) = 0;

	virtual	dlight_t* CL_AllocElight(int key) = 0;

	virtual int CL_GetActiveDLights(dlight_t* pList[MAX_DLIGHTS]) = 0;

	virtual	const char* Draw_DecalNameFromIndex(int nIndex) = 0;

	virtual dlight_t* GetElightByKey(int key) = 0;
};

#define VENGINE_EFFECTS_INTERFACE_VERSION "VEngineEffects001"

extern IVEfx* effects;

#endif  