00001
00002 #ifndef SMOKE_H
00003 #define SMOKE_H
00004
00005 #ifdef _PC
00006 #include "draw.h"
00007 #endif
00008
00009
00010
00011 #define MAX_SMOKES 256
00012 #define RAND_SMOKE_SPINSTART ((REAL)rand() / RAND_MAX)
00013 #define RAND_SMOKE_SPINRATE ((REAL)(rand() - (RAND_MAX >> 1)) / (RAND_MAX * 96))
00014
00015 typedef struct _SMOKE {
00016 REAL AgeStart, Age;
00017 REAL Spin, SpinRate;
00018 REAL GrowRate;
00019 VEC Pos, Dir;
00020 long rgb;
00021 #ifdef _PC
00022 MAT Matrix;
00023 FACING_POLY Poly;
00024 #endif
00025 #ifdef _N64
00026 REAL Xsize;
00027 REAL Ysize;
00028 #endif
00029 struct _SMOKE *Prev;
00030 struct _SMOKE *Next;
00031 } SMOKE;
00032
00033
00034
00035 extern long InitSmoke(void);
00036 extern void KillSmoke(void);
00037 extern SMOKE *AllocSmoke(void);
00038 extern void FreeSmoke(SMOKE *smoke);
00039 extern long CreateSmoke(VEC *pos, VEC *dir, REAL size, REAL growrate, REAL age, REAL spinstart, REAL spinrate, long rgb);
00040 extern void ProcessSmoke(void);
00041 extern void DrawSmoke(void);
00042
00043
00044
00045 #endif