//
// Asura_ReverbVolume.h
//
// Created by Richard Rice - 10/10/2007
// 
// Copyright (C) 2007 Rebellion, All Rights Reserved.
//


#ifdef ASURA_USE_PRAGMA_ONCE
    #pragma once
#endif

#ifndef _ASURA_REVERBVOLUME_H_
#define _ASURA_REVERBVOLUME_H_
#ifdef ASURA_USE_REVERBVOLUME_SYSTEM

#include "Zone/Asura_Zone_Controller.h"
#include "Zone/Asura_Zone.h"

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

//Class holding details of all the reverb volumes for a level/streaming zone
class Asura_ReverbVolume_Controller : public Asura_Zone_Controller
{
public :

protected :
	virtual Asura_Zone* AllocateZone( const bool bCreateFromLoad = false );

	virtual bool UseMostRecentZoneByDefault() const {return false;}
	virtual bool UsePriorityForOverlaps() const {return true;}

};

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

//Class holding details of a group of bounding boxes that share the same reverb settings
class Asura_ReverbVolume : public Asura_Zone
{
	friend class Tools_ReverbVolume_Editor;

public :
	Asura_ReverbVolume(const bool bCreateFromLoad);
	virtual ~Asura_ReverbVolume();

	u_int GetReverbType() const {return m_uReverbType;}
	float GetReverbAmount() const {return m_fReverbAmount;}

	virtual float GetPriority(int iVolumeIndex) const;


	//chunkstream functions
	virtual void ReadFromChunkStream(class Asura_Chunk_Stream& xStream);
#ifdef ASURA_TOOLS
	virtual void WriteToChunkStream(class Asura_Chunk_Stream& xStream);
#endif

private :
	u_int m_uReverbType;

	float m_fReverbAmount;
};



#endif //ASURA_USE_REVERBVOLUME_SYSTEM
#endif //_ASURA_REVERBVOLUME_H_
