/* (c) Ubi R&D 1996*/
/* See Alain Robin for any comment or question*/
 
#ifndef __GAMEMAT_H__
#define __GAMEMAT_H__
 
#ifdef  __cplusplus
extern "C" {
#endif
 
 
/****************************************************************************/
/* STRUCTURES															*/
/****************************************************************************/
/*
typedef	struct GMT_tdstCollideMaterial_
{
	short			wTypeOfZone; // GMT_C_wZDM or GMT_C_wZDR or GMT_C_wZDE or GMT_C_ZDD
	GMT_tdxMask		xIdentifier;
} GMT_tdstCollideMaterial;
 
typedef struct GMT_tdstGameMaterial_
{
	ACP_tdxHandleOfMaterial					hVisualMaterial ;
	DNM_tdxHandleToMecMatCharacteristics	hMechanicsMaterial ;
	SND_tdxHandleToSoundMaterial			hSoundMaterial;
	GMT_tdxHandleToCollideMaterial			hCollideMaterial ;
	struct GMT_tdstGameMaterial_*			p_stInitialValues; // To be filled with the loaded values
#ifdef SECTOR_IN_GMT
	HIE_tdxHandleToSuperObject				hSectorMaterial ;
#endif
} GMT_tdstGameMaterial ;
*/
/****************************************************************************/
/* MACROS																	*/
/****************************************************************************/
/* Definition of the accessor macros for the friend modules*/
/* Rem: handles are pointers*/
 
#define GMT_M_hGetVisualMaterial(_handle) \
((_handle)->hVisualMaterial)
 
#define GMT_M_vSetVisualMaterial(_hGameMat,_hVisualMat) \
{ (_hGameMat)->hVisualMaterial=(_hVisualMat); }
 
#define GMT_M_hGetMechanicsMaterial(_handle) \
((_handle)->hMechanicsMaterial)
 
#define	GMT_M_vSetMechanicsMaterial(_hGameMat,_hMechanicsMat) \
{ (_hGameMat)->hMechanicsMaterial=(_hMechanicsMat); }
 
#define GMT_M_hGetSoundMaterial(_handle) \
((_handle)->hSoundMaterial)
 
#define	GMT_M_vSetSoundMaterial(_hGameMat,_hSoundMat) \
{ (_hGameMat)->hSoundMaterial=(_hSoundMat); }
 
#define GMT_M_hGetCollideMaterial(_handle) \
((_handle)->hCollideMaterial)
 
#define	GMT_M_vSetCollideMaterial(_hGameMat,_hCollideMat) \
{ (_hGameMat)->hCollideMaterial=(_hCollideMat); }
 
#ifdef SECTOR_IN_GMT
 
#define GMT_M_hGetSectorMaterial(_handle) \
((_handle)->hSectorMaterial)
 
#define	GMT_M_vSetSectorMaterial(_hGameMat,_hSectorMat) \
{ (_hGameMat)->hSectorMaterial=(_hSectorMat); }
 
#endif /* SECTOR_IN_GMT*/
 
#define GMT_M_wGetTypeOfCollideMaterial(_handle) \
((_handle)->wTypeOfZone)
 
#define GMT_M_vSetTypeOfCollideMaterial(_hCollideMat,_wType) \
{ (_hCollideMat)->wTypeOfZone=(_wType); }
 
#define GMT_M_wGetCollideMaterialIdentifier(_hCollideMat) \
((_hCollideMat)->xIdentifier)
 
#define	GMT_M_vSetCollideMaterialIdentifier(_hCollideMat,_wIdentifier) \
{ (_hCollideMat)->xIdentifier=(_wIdentifier); }
 
 
/****************************************************************************/
/* FUNCTION POINTERS														*/
/****************************************************************************/
 
#undef __GMTFUNCTIONPOINTERS_EXTERN
#ifndef __DeclareGlobalFunctionPointersVariableGmt_h__
#define __GMTFUNCTIONPOINTERS_EXTERN extern /*external declaration*/
#else /*__DeclareGlobalFunctionPointersVariableGmt_h__*/
#define __GMTFUNCTIONPOINTERS_EXTERN /*replace by nothing : we have to declare*/
#endif /*__DeclareGlobalFunctionPointersVariableGmt_h__*/
 
__GMTFUNCTIONPOINTERS_EXTERN GMT_tdxHandleToGameMaterial (* GMT_p_fn_hVirtualCreate)(void)
#ifdef __DeclareGlobalFunctionPointersVariableGmt_h__
=NULL
#endif
;
 
/*XB 22/06/99*/
#ifndef U64
__GMTFUNCTIONPOINTERS_EXTERN void (* GMT_p_fn_vVirtualDestroy)(GMT_tdxHandleToGameMaterial _hOld)
#ifdef __DeclareGlobalFunctionPointersVariableGmt_h__
=NULL
#endif
;
#endif /* U64 */
/*End XB 22/06/99*/
 
__GMTFUNCTIONPOINTERS_EXTERN void (* GMT_p_fn_vVirtualCopy)(GMT_tdxHandleToGameMaterial _hDst,
															GMT_tdxHandleToGameMaterial _hSrc)
#ifdef __DeclareGlobalFunctionPointersVariableGmt_h__
=NULL
#endif
;
 
__GMTFUNCTIONPOINTERS_EXTERN void (* GMT_p_fn_vVirtualInitLoadGameMaterial)(void)
#ifdef __DeclareGlobalFunctionPointersVariableGmt_h__
=NULL
#endif
;
 
#ifdef  __cplusplus
}/* extern "C" */
#endif
 
#endif /* __GAMEMAT_H__*/
