/*
  MODULE : PRT (Particle system Library)
  AUTHOR : Frederic PHILIPPE
           UBI R&D
  FILE : PRT.h (Principal header file)
*/
#ifndef D_THROW_PRT
 
#ifndef PRT_SEGMTPRT_H
#define PRT_SEGMTPRT_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"
 
/*
-----------------------------------------------------------------------------
CONSTANT DECLARATION
-----------------------------------------------------------------------------
*/
 
/*
-----------------------------------------------------------------------------
TYPES DEFINITION
-----------------------------------------------------------------------------
*/
 
/* bubble structure */
typedef struct PRT_tdstSegmentParticle_
{
  MTH_tdxReal xDeathDate;
  GEO_tdstColor stPointColor;
  GEO_tdstColor stLastPointColor;
}
  PRT_tdstSegmentParticle;
 
typedef struct PRT_tdstSegmentCommonData_
{
  GMT_tdxHandleToGameMaterial hMaterial;
  GEO_tdstColor stPointColor;
  GEO_tdstColor stLastPointColor;
}
  PRT_tdstSegmentCommonData;
 
/*
-----------------------------------------------------------------------------
GLOBAL VARIABLE DECLARATION
-----------------------------------------------------------------------------
*/
 
/*
-----------------------------------------------------------------------------
FUNCTIONS DECLARATION
-----------------------------------------------------------------------------
*/
 
extern CPA_EXPORT void PRT_fn_vCreateSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
                                      GMT_tdxHandleToGameMaterial _hMaterial );
 
extern CPA_EXPORT void PRT_fn_vDestructSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem );
 
extern CPA_EXPORT void PRT_fn_vSetGameMaterialSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
                                               GMT_tdxHandleToGameMaterial _hGameMaterial );
 
extern CPA_EXPORT void PRT_fn_vSetPointColorSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
                                             GEO_tdstColor *_p_stColor );
 
extern CPA_EXPORT void PRT_fn_vSetLastPointColorSegmentParticles ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
                                                 GEO_tdstColor *_p_stColor );
 
extern CPA_EXPORT void PRT_fn_vGenerateSegmentParticle ( MTH3D_tdstVector *_p_stParticlePosition,
                                       MTH3D_tdstVector *_p_stParticleSpeed,
                                       PRT_tdstSegmentParticle *_p_stSegmentParticle,
                                       PRT_tdstSegmentCommonData *_p_stSegmentCommonData,
                                       PRT_tdstParticlesSource *_p_stParticlesSource,
                                       struct POS_stCompletePosition *_p_stSourceMatrix,
                                       MTH_tdxReal _xTimeT );
 
extern CPA_EXPORT void PRT_fn_vMecaSegmentParticlesSystem ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
                                         PRT_tdstParticlesEnvironment *_p_stParticlesEnvironment,
                                         MTH_tdxReal _xTimeT,
                                         MTH_tdxReal _xDeltaT );
 
extern CPA_EXPORT void PRT_fn_vSourceGenerateSegmentParticle ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
                                            PRT_tdstParticlesSource *_p_stParticlesSource,
                                            struct POS_stCompletePosition *_p_stSourceMatrix,
                                            MTH_tdxReal _xTimeT );
 
extern CPA_EXPORT void PRT_fn_vPreDrawSegmentParticlesSystem ( PRT_tdstParticlesSystem *_p_stParticlesSystem );
 
#ifdef __cplusplus
};
#endif /* __cplusplus */
 
#endif /* PRT_SEGMTPRT_H */
#endif /* D_THROW_PRT */
