/*
  MODULE : PRT (Particle system Library)
  AUTHOR : Frederic PHILIPPE
           UBI R&D
  FILE : PRT.h (Principal header file)
*/
#ifndef D_THROW_PRT
 
#ifndef PRT_SPRTPRT_H
#define PRT_SPRTPRT_H
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
#include "cpa_expt.h"
 
/* For Global declaration in C files : */
#ifdef PRT_GLOBALS
 #define PRT_EXTERN extern
#else /* !PRT_GLOBALS */
 #define PRT_EXTERN
#endif /* !PRT_GLOBALS */
 
/*
-----------------------------------------------------------------------------
INCLUDES FILES
-----------------------------------------------------------------------------
*/
 
#include "PrtSyst.h"
#include "PrtSrc.h"
#include "PrtEnv.h"
 
#define D_MSPrtSrc_StructureDefine
#include "Gam\Actions\MsPrtSrc.h"
 
/*
-----------------------------------------------------------------------------
CONSTANT DECLARATION
-----------------------------------------------------------------------------
*/
 
/*
-----------------------------------------------------------------------------
TYPES DEFINITION
-----------------------------------------------------------------------------
*/
 
/* bubble structure */
typedef struct PRT_tdstSpriteParticle_
{
	MTH_tdxReal			xDeathDate;
	MTH_tdxReal			xChangeSpriteDate;
	char				cNextSpriteIndex;
	MTH2D_tdstVector	stSize;
	char				a2_cRotateSpeed[2];
	unsigned char		a2_ucRotateAngle[2];
} PRT_tdstSpriteParticle;
 
typedef struct PRT_tdstSpriteData_
{
	ACP_tdxHandleOfSprite	hSprite;
	MTH_tdxReal				xTime;
	char					cProba;
	char					cNextSprite;
} PRT_tdstSpriteData;
 
typedef struct PRT_tdstSpriteCommonData_
{
	ACP_tdxIndex				xNumberOfSprites;
	/*ACP_tdxHandleOfSprite		*d_hSprite;*/
	PRT_tdstSpriteData			*d_stSpriteData;			
 
	ACP_tdxHandleOfSprite		hSprite;
	GMT_tdxHandleToGameMaterial hMaterial;
}
  PRT_tdstSpriteCommonData;
 
/*
-----------------------------------------------------------------------------
GLOBAL VARIABLE DECLARATION
-----------------------------------------------------------------------------
*/
 
/*
-----------------------------------------------------------------------------
FUNCTIONS DECLARATION
-----------------------------------------------------------------------------
*/
 
extern CPA_EXPORT void PRT_fn_vCreateSpriteParticles( PRT_tdstParticlesSystem *_p_stParticlesSystem, ACP_tdxHandleOfSprite _hSprite );
extern CPA_EXPORT void PRT_fn_vDestructSpriteParticles( PRT_tdstParticlesSystem *_p_stParticlesSystem );
extern CPA_EXPORT void PRT_fn_vSetGameMaterialSpriteParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem, GMT_tdxHandleToGameMaterial _hGameMaterial );
 
extern CPA_EXPORT void PRT_fn_vGenerateSpriteParticle 
						( 
							MTH3D_tdstVector *_p_stParticlePosition,
                            MTH3D_tdstVector *_p_stParticleSpeed,
                            PRT_tdstSpriteParticle *_p_stSpriteParticle,
                            PRT_tdstSpriteCommonData *_p_stSpriteCommonData,
                            PRT_tdstParticlesSource *_p_stParticlesSource,
                            struct POS_stCompletePosition *_p_stSourceMatrix,
                            MTH_tdxReal _xTimeT 
						);
 
extern CPA_EXPORT void PRT_fn_vMecaSpriteParticlesSystem ( tdstParticleGenerator *_p_stPrtGen,MTH_tdxReal _xTimeT,MTH_tdxReal _xDeltaT );
extern CPA_EXPORT void PRT_fn_vSourceGenerateSpriteParticle 
						( 
							PRT_tdstParticlesSystem *_p_stParticlesSystem,
                            PRT_tdstParticlesSource *_p_stParticlesSource,
                            struct POS_stCompletePosition *_p_stSourceMatrix,
                            MTH_tdxReal _xTimeT 
						);
 
extern CPA_EXPORT void PRT_fn_vPreDrawSpriteParticlesSystem ( PRT_tdstParticlesSystem *_p_stParticlesSystem );
 
/*ANNECY VL PRT 30/03/98{*/
extern CPA_EXPORT void PRT_fn_vCreateMultipleSpritesParticles( PRT_tdstParticlesSystem *_p_stPrtSys, ACP_tdxIndex _xNbSprites );
extern CPA_EXPORT void PRT_fn_vEndCreateMultipleSpritesParticles( PRT_tdstParticlesSystem *_p_stPrtSys );
extern CPA_EXPORT char PRT_fn_cSystemIsMultipleSprites( PRT_tdstParticlesSystem *_p_stPrtSys );
extern CPA_EXPORT void PRT_fn_vAddSprite( PRT_tdstParticlesSystem *_p_stPrtSys, ACP_tdxHandleOfSprite _hSprite );
/*ENDANNECY VL}*/
 
#ifdef __cplusplus
};
#endif /* __cplusplus */
 
#endif /* PRT_SPRTPRT_H */
#endif /* D_THROW_PRT */
