//////////////////////////////////////////////////////////////////////////////
//
// Asura_Weather_System.cpp
//
// Copyright (c) 2002-2005 Rebellion. All rights reserved.
//
//////////////////////////////////////////////////////////////////////////////

// I N C L U D E S ///////////////////////////////////////////////////////////

#include "Core/Asura.h"

// This file's header.
#include "SpecialFX/Asura_Weather_System.h"

// Engine independent.
#include "Rendering/Asura_Fog.h"

#ifdef ASURA_TOOLS
#include "Tools_System.h"
#endif

// C L A S S   I M P L E M E N T A T I O N S /////////////////////////////////

u_int          Asura_Weather_System::s_uSunFlags;
Asura_Vector_3 Asura_Weather_System::s_xSunPos;
float          Asura_Weather_System::s_fSunColourR;
float          Asura_Weather_System::s_fSunColourG;
float          Asura_Weather_System::s_fSunColourB;
float          Asura_Weather_System::s_fHorizonGlareSizeDown;
float          Asura_Weather_System::s_fHorizonGlareSizeUp;
#ifdef ASURA_TOOLS
bool           Asura_Weather_System::s_bToolsDisableSunGlare = false;
#endif

void Asura_Weather_System::Initialise( void )
{
    s_uSunFlags = 0;
    Reset();

    Asura_Fog::Initialise();

    Platform_Initialise();
}

void Asura_Weather_System::Reset( void )
{
    Asura_Fog::Reset();

    Platform_Reset();
}

void Asura_Weather_System::Shutdown( void )
{
    Platform_Shutdown();

    Asura_Fog::Shutdown();
}

void Asura_Weather_System::Update( void )
{
}

void Asura_Weather_System::Render( void )   
{
    if( IsHorizonGlareEnabled() ) { Platform_RenderHorizonGlare(); }

    #ifdef ASURA_TOOLS
	if(!s_bToolsDisableSunGlare)
	#endif
	{
    	if( IsSunGlareEnabled() ) { Platform_RenderSunGlare(); }
	}

    // AW - 10/06/03 - Lens flare must be done immediately after sun glare (on PS2 at least).
    if( IsLensFlareEnabled() ) { Platform_RenderLensFlare(); } 
}

