/*
  MODULE : PRT (Particle system Library)
  AUTHOR : Frederic PHILIPPE
           UBI R&D
  FILE : PRT.h (Principal header file)
*/
#ifndef D_THROW_PRT
 
#ifndef PRT_PRTSYST_H
#define PRT_PRTSYST_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
-----------------------------------------------------------------------------
*/
 
/*
-----------------------------------------------------------------------------
CONSTANT DECLARATION
-----------------------------------------------------------------------------
*/
 
#define PRT_C_xNullParticles      0
#define PRT_C_xBubbleParticles    1
#define PRT_C_xPointParticles     2
#define PRT_C_xSegmentParticles   3
#define PRT_C_xSpriteParticles    4
#define PRT_C_xTriangleParticles  5
#define PRT_C_xRectangleParticles 6
 
/*
-----------------------------------------------------------------------------
TYPES DEFINITION
-----------------------------------------------------------------------------
*/
 
/* element particules structure */
typedef struct PRT_tdstParticlesSystem_
{
  ACP_tdxIndex xNbParticles;
  ACP_tdxIndex xNbActiveParticles;
  MTH3D_tdstVector *d_stSpeed;
 
  ACP_tdxHandleOfObject hParticlesSystemObject;
 
  ACP_tdxIndex xParticlesType;
  void *d_stListOfParticles;
  void *p_stCommonData;
}
  PRT_tdstParticlesSystem;
 
/*
-----------------------------------------------------------------------------
GLOBAL VARIABLE DECLARATION
-----------------------------------------------------------------------------
*/
 
/*
-----------------------------------------------------------------------------
FUNCTIONS DECLARATION
-----------------------------------------------------------------------------
*/
 
#define PRT_M_vCopyParticlesSystem( _p_stDstParticlesSystem, _p_stSrcParticlesSystem )\
  memcpy ( _p_stDstParticlesSystem, _p_stSrcParticlesSystem, sizeof ( PRT_tdstParticlesSystem ) )
 
extern CPA_EXPORT void PRT_fn_vCreateParticlesSystem ( PRT_tdstParticlesSystem **_p_pstParticlesSystem,
                                     ACP_tdxIndex _xNbParticles );
 
extern CPA_EXPORT void PRT_fn_vInitParticlesSystem ( PRT_tdstParticlesSystem *_p_stParticlesSystem );
 
extern CPA_EXPORT void PRT_fn_vSetObjectParticlesSystem ( PRT_tdstParticlesSystem *_p_stParticlesSystem,
                                        ACP_tdxHandleOfObject _hParticlesSystemObject );
 
#ifdef __cplusplus
};
#endif /* __cplusplus */
 
#endif /* PRT_PRTSYST_H */
#endif /* D_THROW_PRT */
