torcs - 1.2.2

src/modules/graphic/ssggraph.sav/grsmoke.h

Go to the documentation of this file.
00001 #ifndef _GRSMOKE_H_
00002 #define _GRSMOKE_H_
00003 
00004 #define SMOKE_INIT_SIZE 0.2f
00005 #define MAX_SMOKE_LIFE  120
00006 #define MAX_SMOKE_NUMBER  300
00007 #define DELTAT 0.1f
00008 #define VZ_INIT 0.05f
00009 #define VY_INIT 0.1f
00010 #define VX_INIT 0.1f
00011 #define V_EXPANSION 0.4f
00012 #define SMOKE_TYPE_TIRE   1
00013 #define SMOKE_TYPE_ENGINE 2
00014 
00015 class ssgVtxTableSmoke : public ssgVtxTable
00016 {
00017 protected:
00018   virtual void copy_from ( ssgVtxTableSmoke *src, int clone_flags ) ;
00019   
00020 public:
00021   double max_life;
00022   double step0_max_life;
00023   double step1_max_life;
00024   double step2_max_life;
00025   double cur_life;
00026   tdble vvx, vvy,vvz;
00027   tdble vexp;
00028   int smokeType;
00029   int smokeTypeStep;
00030   double dt;
00031   double lastTime;
00032   float sizex;
00033   float sizey;
00034   float sizez;
00035   int stype;
00036   virtual ssgBase *clone ( int clone_flags = 0 ) ;
00037   ssgVtxTableSmoke () ;
00038   ssgVtxTableSmoke (ssgVertexArray      *shd_vtx , float initsize, int type);
00039 
00040   void draw_geometry();
00041   virtual void drawHighlight ( sgVec4 colour ){ssgVtxTable::drawHighlight(colour);} 
00042   virtual void drawHighlight ( sgVec4 colour, int i ){ssgVtxTable::drawHighlight(colour,i);} 
00043 
00044   virtual void pick ( int baseName )  { ssgVtxTable::pick(baseName);}
00045   virtual void transform ( const sgMat4 m )  { ssgVtxTable::transform(m);}
00046 
00047   virtual void setVertices  ( ssgVertexArray   *vl ) {  ssgVtxTable::setVertices(vl);}
00048   virtual void setNormals   ( ssgNormalArray   *nl ) {  ssgVtxTable::setNormals(nl);}
00049   virtual void setTexCoords ( ssgTexCoordArray *tl ) {  ssgVtxTable::setTexCoords(tl);}
00050   virtual void setColours   ( ssgColourArray   *cl ) {  ssgVtxTable::setColours(cl);}
00051 
00052   int getNumVertices  () { return vertices  -> getNum () ; }
00053   int getNumNormals   () { return normals   -> getNum () ; }
00054   int getNumColours   () { return colours   -> getNum () ; }
00055   int getNumTexCoords () { return texcoords -> getNum () ; }
00056 
00057   int getNumTriangles ()  { return ssgVtxTable::getNumTriangles();}
00058   void getTriangle ( int n, short *v1, short *v2, short *v3 )  { ssgVtxTable::getTriangle(n,v1,v2,v3);}
00059   int  getNumLines ()  {return ssgVtxTable::getNumLines();}
00060   void getLine ( int n, short *v1, short *v2 )  { ssgVtxTable::getLine(n,v1,v2);}
00061 
00062 
00063   virtual ~ssgVtxTableSmoke (void);
00064 
00065   virtual const char *getTypeName(void)  { return ssgVtxTable::getTypeName();}
00066 
00067   virtual void print ( FILE *fd = stderr, char *indent = "", int how_much = 2) { ssgVtxTable::print(fd,indent,how_much);}
00068   virtual int load ( FILE *fd )  {return  ssgVtxTable::load(fd);}
00069   virtual int save ( FILE *fd )  {return  ssgVtxTable::save(fd);}
00070 };
00071 
00072 typedef struct tgrSmoke_st
00073 {
00074   ssgVtxTableSmoke * smoke;
00075   tgrSmoke_st * next ;
00076 }tgrSmoke;
00077 
00078 typedef struct 
00079 {
00080   tgrSmoke * smokeList;
00081   int number;
00082 }tgrSmokeManager;
00083 
00084 
00085 extern void grInitSmoke(int index);
00086 extern void grAddSmoke(tCarElt *car, double t);
00087 extern void grUpdateSmoke(double t);
00088 extern void grShutdownSmoke ();
00089 
00090 extern int grSmokeMaxNumber;
00091 extern double grSmokeDeltaT;
00092 extern double grSmokeLife;
00093 
00094 
00095 #endif /* _GRSMOKE_H_*/

Generated at Thu Feb 26 21:52:29 2004 for torcs by doxygen 1.3.3 written by Dimitri van Heesch, © 1997-1999
TORCS © Eric Espié 1999, 2002.