//
// Asura_ShadowDecal_System.h
//
// Created by KJFL - 15 March 2005
//
// Copyright (C) 2005 Rebellion, All Rights Reserved.
//

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef __ASURA_SHADOWDECAL_SYSTEM_H__
#define __ASURA_SHADOWDECAL_SYSTEM_H__

#include "Core/Asura_Maths.h"

class Asura_ShadowDecal_Cache;
class Asura_ShadowDecal_Vertex;
class Asura_Animation;

class Asura_ShadowDecal_System
{
	public:
		static void Initialise(void);
		static void Reset(void);
		static void Shutdown(void);

		static void Render(void);

		static void AddShadow( const Asura_Bounding_Box& xBB, const Asura_Animation* pxAnim );


	private: friend class Asura_ShadowDecal_Cache;

		static void Platform_Initialise(void);
		static void Platform_Reset(void);
		static void Platform_Shutdown(void);

		static void Platform_AddStrip( const Asura_ShadowDecal_Vertex* pxStrip, u_int uNumVertices );
		
		static void Platform_Render(void);

		static Asura_ShadowDecal_Cache* s_pxShadowCache;
				
};

#endif//__ASURA_SHADOWDECAL_SYSTEM_H__
