//////////////////////////////////////////////////////////////////////////////
//
// Tools_Chunk_MaterialResponse.h
//
// Copyright (c) 2006 Rebellion. All rights reserved.
//
//////////////////////////////////////////////////////////////////////////////

#if defined ASURA_USE_PRAGMA_ONCE
    #pragma once
#endif

#if !defined __TOOLS_CHUNK_MATERIALRESPONSE_H__
#define __TOOLS_CHUNK_MATERIALRESPONSE_H__

#if defined ASURA_USE_MATERIAL_RESPONSE_SYSTEM

/******************************************************************************/
/* Included Files                                                             */
/******************************************************************************/

#include "ChunkSystem/Asura_Chunk_Loaders.h"

/******************************************************************************/
/* Classes                                                                    */
/******************************************************************************/

template< typename T > class Asura_List;
template< typename T > class List;


class Tools_MaterialResponse;
class Asura_Chunk_Stream;

////////////////////////////////////////////////////////////////////////////////
//
// Tools_Chunk_MaterialResponse
//
// Chunk containing material response properties
//
////////////////////////////////////////////////////////////////////////////////

class Tools_Chunk_MaterialResponse : public Asura_Chunk_Header
{
public:

	bool Process( const Asura_Handle iFileHandle );
	static void Create( Asura_Chunk_Stream& xSaveBlock, Asura_List< Tools_MaterialResponse >& xMaterialList );

	static void SetLoadingFilename( const char* const szFilename );

	static const u_int uCURRENT_VERSION;

protected:

	static Asura_String s_xLoadingFilename;
};

////////////////////////////////////////////////////////////////////////////////
//
// Tools_Chunk_MaterialResponseNames
//
// Chunk containing names of materials used by a .asr file
//
////////////////////////////////////////////////////////////////////////////////

class Tools_Chunk_MaterialResponseNames : public Asura_Chunk_Header
{
public :
	bool Process(class Asura_Chunk_Stream& xStream) const;
	bool Process(Asura_Handle iFileHandle) const;

	static void Create(const List<const char*>& xMaterialList, Asura_Chunk_Stream& xStream);
	static void Create(const List<const char*>& xMaterialList,class Asura_SaveBlock* pxSaveBlock);
	static void Create(const Asura_HashTree& xMaterialTree,class Asura_SaveBlock* pxSaveBlock);
	static void Create(const Asura_HashTree& xMaterialTree, Asura_Chunk_Stream& xStream);
};


#endif // defined ASURA_USE_MATERIAL_RESPONSE_SYSTEM

#endif // !defined __Tools_Chunk_MaterialResponse_H__
