//////////////////////////////////////////////////////////////////////////////
//
// Axon_Project_System.h
//
// Created by NJD - 24 August 2006
//
// Copyright (C) 2006 Rebellion, All Rights Reserved.
//
//////////////////////////////////////////////////////////////////////////////

// B E G I N   F I L E   W R A P P E R ///////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef __AXON_PROJECT_SYSTEM_H__
#define __AXON_PROJECT_SYSTEM_H__ 1

// E N D   F I L E   W R A P P E R ///////////////////////////////////////////

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

// asura
#include "Core/Asura_Handle.h"

// axon
#include "Core/Axon_System.h"

// AVP
#include "Knowledge/AVP_Knowledge_System.h"


//////////////////////////////////////////////////////////////////////////////
//
// Axon_Project_System
//
//////////////////////////////////////////////////////////////////////////////
class Axon_Project_System : public Axon_System
{
	typedef Axon_System PARENT;

public:
	static float GetFootstepSoundRangeLow()	 { return s_fFootstepSoundRangeLow; }
	static float GetFootstepSoundRangeMed()	 { return s_fFootstepSoundRangeMed; }
	static float GetFootstepSoundRangeHigh() { return s_fFootstepSoundRangeHigh; }
	static float GetHurtSoundRange()		 { return s_fHurtSoundRange; }

#ifndef ASURA_NO_DEBUG_OUTPUT
	static void RenderDebugInfo();
	static bool GetRenderingDebugInfo()			{ return s_bRenderDebugInfo; }
#endif

	static float GetLightCutOffValue()			{ return s_fLightCutOffValue; }
	static float GetAndroidLightCutOffValue()	{ return s_fAndroidLightCutOffValue; }
	static float GetLightCutOffTimerOut()	{ return s_fLightCutOffTimeOut; }

	static void RegisterSound( const Asura_Guid uSourceGuid, const Asura_Vector_3* pxPosition, const u_int uSoundType, const float fSoundRange );

protected:
	virtual void InitialiseThis();
    virtual void UpdateThis();
	virtual void ShutdownThis();
	virtual void ResetThis();
	virtual void PostLoadInitialiseThis();

private:
    static void UpdateWaypointLightingValues_ThreadFn( const void* pUserData );
	static void UpdateFromSettingsBlueprint();

private:
	static float s_fFootstepSoundRangeLow;
	static float s_fFootstepSoundRangeMed;
	static float s_fFootstepSoundRangeHigh;
	static float s_fHurtSoundRange;

#ifdef ASURA_TOOLS
	static const char*			s_aszSoundTypeNames[  ];
	static const Asura_Hash_ID	s_auSoundTypeHashIDs[  ];
#endif

#ifndef ASURA_NO_DEBUG_OUTPUT
    static bool s_bRenderDebugInfo;
	static bool s_bRenderSentryDebugInfo;
	static bool s_bRenderGS2DebugInfo;
	static bool s_bDisableAIUpdates;
	static bool s_bRenderNavData;
	static Asura_Guid s_uKnowledgeRenderGuid;

#endif

	static float s_fLightCutOffValue;
	static float s_fLightCutOffTimeOut;
	static float s_fAndroidLightCutOffValue;
};

//////////////////////////////////////////////////////////////////////////////
//
// 
//
//////////////////////////////////////////////////////////////////////////////

#endif //__AXON_PROJECT_SYSTEM_H__
