/**
* FX Precache
* @version: 12-26-2004
* @author Joseph 'Pcjoe' Florencio
*/
#ifndef FXPRECACHE_H
#define FXPRECACHE_H

// FX precache types
#define FXPREC_NONE	0
#define FXPREC_SPR	1
#define FXPREC_WRL	2
#define FXPREC_SND	3

/*
* FX Precache
*/
class CFXPrecache
{
public:
	// Constructor
	CFXPrecache();
	
	CFXPrecache(std::string strPrecache);

	/*
	* Is Valid
	*/
	bool isValid( void );

	/*
	* Set type
	*/
	void setType( int iType );

	/*
	* Get type
	*/
	int getType( void );

	/*
	* Set WRL
	*/
	void setWRL( VRMLData VRMLData );

	/*
	* Get WRL
	*/
	VRMLData *getWRL( void );

	/*
	* Set SPR
	*/
	void setSPR( HSPRITE hsprSprite );

	/*
	* Get SPR
	*/
	HSPRITE *getSPR( void );

	/*
	* Set Sample
	*/
	void setSample( FSOUND_SAMPLE *pSample );

	/*
	* Get Sample
	*/
	FSOUND_SAMPLE *getSample( void );

	/*
	* Precache
	* @param std::string strPrecache: Path to element we're precaching
	*/
	bool precache( std::string strPrecache );
private:
	int m_iType;
	VRMLData m_VRMLData;
	HSPRITE m_hsprSprite;
	FSOUND_SAMPLE *m_pSoundSample;
};

#endif