//
// Asura_EffectVolume_System.h
//
// Created by Emil Popovic - 19/12/2008
// 
// Copyright (C) 2008 Rebellion, All Rights Reserved.
//

#ifdef ASURA_USE_PRAGMA_ONCE
	#pragma once
#endif

#ifndef __ASURA_EFFECTVOLUME_SYSTEM_H__
#define __ASURA_EFFECTVOLUME_SYSTEM_H__

// F O R W A R D   D E C L A R A T I O N S ///////////////////////////////////


#include "SpecialFX/EffectVolume/Asura_EffectVolume_Camera.h"

class Asura_ClientEntity_EffectVolume;
class Asura_EffectVolume_Effect;


// C L A S S E S /////////////////////////////////////////////////////////////

class Asura_EffectVolume_System
{
	typedef Asura_TemplateHashTree<Asura_EffectVolume_Camera*> CameraContainer;
	typedef Asura_TemplateHashTree<Asura_ClientEntity_EffectVolume*> ClientEntityEffectVolumeContainer;

	public:

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

		static void Update();
		static void Render();


//		static CameraContainer						s_xCameraContainer;
//		static ClientEntityEffectVolumeContainer	s_xClientEntityEffectVolumeContainer;

		static Asura_EffectVolume_Effect* CreateEffect( Asura_Hash_ID uEffectType );


private:
//		static void Platform_Initialise(void);
//		static void Platform_Reset(void);
//		static void Platform_Shutdown(void);

		static Asura_EffectVolume_Camera s_xCamera;	// Temporary object, until I will figure out how to exactly handle different cameras.
};

#endif//__ASURA_EFFECTVOLUME_SYSTEM_H__
