 
/*///////////////////////////////////////////////////*/
/**/
/* AGO : Animations Graphiques Optimisées pour Ray2*/
/* ------------------------------------------------*/
/**/
/* A ultra-simple multi-purpose particle system*/
/* for animation optimizations */
/* (to reduce PlayAnim & IA use)*/
/**/
/*///////////////////////////////////////////////////*/
/**/
/* Version 1.0 : Francois "Rollie Tyler" Queinnec*/
/**/
/*////////////////////////////////////////////////*/
#ifndef __AGO__H
#define __AGO__H
 
/* LOL portage #include <stdlib.h>*/
 
#ifdef U64
#include <ultra.h>
#include <gbi.h>
#endif /* U64*/
 
#include "GLD.h"
#include "GMT.h"
 
#ifdef __cplusplus
extern "C"
{
#endif
 
 
extern void		*AGO_g_LastMaterialUsed;
extern unsigned char	AGO_SkipMaterial;
extern unsigned short	g_uwGlobalAlpha;
extern float	g_ffFrameTime;
extern float	g_ffLastFrameTime;
extern float	g_fTimeDifference;
extern unsigned long g_ulVBLTime;
extern float	g_AGO_AnimTimeScale;
extern int		g_iCurrentPlanarSprite;
 
 
float	AGO_fGetTimeInSeconds(void);
int		GLI_vDrawWorldSprite(float *a3_fPosition,void *pVisualMaterial,float fscaleX,float fscaleY, GLD_tdstViewportAttributes *_p_stViewport, unsigned long AnimTime);
int		GLI_vDrawWorldPlanarSprite(float *a3_fPosition,void *pVisualMaterial,float fscaleX,float fscaleY, GLD_tdstViewportAttributes *_p_stViewport, unsigned long AnimTime);
 
 
 
#ifdef U64
 
void	GLI_vPrepareViewPort(void);
#endif
 
 
void AGO_vInit(void);
void AGO_vDestroyPart(unsigned long ulPartNumber);
void AGO_vProcessAllParts(GLD_tdstViewportAttributes *_p_stViewport);
void AGO_vProcessPart(unsigned long ulPartNumber, GLD_tdstViewportAttributes *_p_stViewport);
void AGO_vAddParticle(unsigned long PartType,
					  MTH3D_tdstVector *p_stPosition,
					  MTH3D_tdstVector *p_stDirection,
					  void *hVisualMaterial,
					  float parameter);
 
 
 
#ifdef __cplusplus
}
#endif
 
 
#endif /* __AGO__H*/
 
 
 
 
 
 
 
 
 
 
