#ifndef __EFFECTPARAMETER__
#define __EFFECTPARAMETER__


/////////////////////////////////////////////////////////////////////////////
// EffectParam represents a parameter
/////////////////////////////////////////////////////////////////////////////
class EffectParam
{
	private:

		D3DXHANDLE m_hParam;		// Handle on the parameter

		LPWSTR m_wszParamName;		// Parameter name
		LPWSTR m_wszParamDesc;		// Description (type of the parameter)
		int m_nParamSize;			// Size (the number of components used from m_vParamDef)
		FLOAT * m_vParamDefault;	// A pointer to the parameter default value(s)


	public:

		// Construction / destruction
		EffectParam(const int nNewSize);
		~EffectParam();

		// Setters
		void SetParamHandle(D3DXHANDLE hNewHandle) { m_hParam = hNewHandle; }
		void SetParamName(LPWSTR wszNewName) { m_wszParamName = wszNewName; }
		void SetParamDesc(LPWSTR wszNewDesc) { m_wszParamDesc = wszNewDesc; }
		void SetParamDefault(FLOAT * vParamValues){ if(!vParamValues || !m_vParamDefault) return; memcpy(m_vParamDefault, vParamValues, m_nParamSize*sizeof(FLOAT)); }


		// Getters
		D3DXHANDLE GetParamHandle() { return m_hParam; }
		LPWSTR GetParamName(){ return m_wszParamName; }
		LPWSTR GetParamDesc(){ return m_wszParamDesc; }
		int GetParamSize(){ return m_nParamSize; }
		FLOAT * GetParamDefault(){ return m_vParamDefault; }
};


#endif