//
// Tools_FSFX_System.h
//
// Created by JGP 02/02/06
// 
// Copyright (C) 2006 Rebellion (Derby), All Rights Reserved.
//

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifdef ASURA_USE_FSFX

#ifndef __TOOLS_FSFX_SYSTEM_H__
#define __TOOLS_FSFX_SYSTEM_H__

#include "Core/Asura_LinkList.h"
#include "Core/Asura_String.h"
#include "Core/Asura_Hash.h"

class Asura_Chunk_Stream;
class Asura_FSFX_Template;
typedef Asura_ListElt<Asura_FSFX_Template*> Asura_FSFX_TemplateList;

#include "FSFX/Asura_FSFX_System.h"

class Tools_FSFX_System
{
public:

	// singleton access

	static void Initialise();
	static void Shutdown();

	// render

	static void Render();

	static void ResetHandler();


	// template functions

	static void AddTemplate( Asura_FSFX_Template* const pxTemplate );

	// get / set

	static void SetOverrideFSFX( Asura_FSFX_Template* const pxTemplate, const float fIntensity = 1.0f );
	static const bool IsLoadingAllTemplates() { return s_bLoadingAllTemplates; }

	// load a block

	static void LoadAllTemplates();
	static const Asura_String MakeFilenameForTemplate( const Asura_FSFX_Template* const pxTemplate );
	static const Asura_String MakeFilenameForTemplate( const char* const szTemplateName );
	static const char* const GetTemplateDirectory();
	static const char* const GetTemplateExtension();

private:

	// variables

	static Asura_FSFX_Template* s_pxCurrentTemplate;
	static float s_fCurrentIntensity;
	static bool s_bLoadingAllTemplates;

	static Asura_FSFX_Handler* s_pxFSFXHandler;
};




#endif // __TOOLS_FSFX_SYSTEM_H__

#endif // ASURA_USE_FSFX