// Efx.h: interface for the CEfx class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_EFX_H__2EE816EC_6D49_11D5_AD0F_C06E57C10000__INCLUDED_)
#define AFX_EFX_H__2EE816EC_6D49_11D5_AD0F_C06E57C10000__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/*class CSycnInfo
{
private:
	
	class CNode
	{
		FLOAT				m_fTime;
		DWORD				m_fSyncCode;
		CNode*				m_pNext;
	};

	CNode*					m_pRoot;

public:

	CSyncInfo();
	~CSyncInfo();
	VOID LoadSyncInfo( TCHAR name );
	BOOL GetSyncStatus( FLOAT fTime, DWORD dwCode );
};*/


//========================================================================================================
// class representing single demo efx, at before begininig to render it InitEfx should be called
// and after finishing render it FinishEfx shoud be caled (lots of effect are simply initialized by constructor)
// but some must set some lights or something and then clear it
// time passed to RenderEfx method should be floating point second value starting from begining of effect
// it's mean that first frame should be rendered with fTime equal 0.0f
//========================================================================================================
class CEfx  
{
protected:

	LPDIRECT3DDEVICE8		m_pDevice;

public:

	CEfx( LPDIRECT3DDEVICE8 pDevice );	
	virtual ~CEfx();

	virtual BOOL InitEfx() = 0;
	virtual BOOL UpdateFrame( FLOAT fTime ) = 0;
	virtual BOOL RenderEfx() = 0;
	virtual BOOL FinishEfx() = 0;
};

#endif // !defined(AFX_EFX_H__2EE816EC_6D49_11D5_AD0F_C06E57C10000__INCLUDED_)
