home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 February / Chip_2001-02_cd1.bin / bonus / demos / CS / exp / SOURCES / DEMO / tunel.h < prev    next >
C/C++ Source or Header  |  2000-08-14  |  2KB  |  84 lines

  1. #ifndef _TUNEL_H
  2. #define _TUNEL_H
  3.  
  4. #include "turtle.h"
  5. #include "objgl2.h"
  6.  
  7. #define TRLEN 20 //najvacsi pocet obruci
  8. #define MAXEN 20  //najvacsi mozny n-uholnik, ktory je prierezom tunela 
  9. #define MAXEN1 (MAXEN+1)
  10.  
  11. struct INFO3D
  12.   {
  13.   Vector3f pos,u,v,n;
  14.   };
  15. /*
  16. typedef struct
  17. {
  18.     GLfloat s, t;
  19.     GLfloat r, g, b, a;
  20.     GLfloat i, j, k;
  21.     GLfloat x, y, z;
  22. } vtx;
  23. */
  24. typedef Vertex3DS vtx;
  25.  
  26. struct OBRUCE
  27.   {
  28.   float polomerx[TRLEN];        //polomer obruce -> prenasobi sa nim sc
  29.   float polomery[TRLEN];        //polomer obruce -> prenasobi sa nim sc
  30.   int en[TRLEN];               //kolkouholnikom je kazda obruc
  31.   float sc[TRLEN];             //scale
  32.  
  33.   Vector3f u[TRLEN];           //info potrebne na rebuild (to iste co v tracku)
  34.   Vector3f v[TRLEN];           //info potrebne na rebuild (to iste co v tracku)
  35.   Vector3f n[TRLEN];           //info potrebne na rebuild (to iste co v tracku)
  36.   Vector3f pos[TRLEN];         //info potrebne na rebuild (to iste co v tracku)
  37.  
  38.   int to_use;                  //ktora sa najblizsie prepise
  39.   vtx vx[MAXEN1*TRLEN];        //vertexy
  40.   int quads[TRLEN*MAXEN*4];    //indexy na robenie quadov
  41.   int triangle[TRLEN*3];       //pre triangle
  42.   int q_array[TRLEN*MAXEN*4];  
  43.   int q_a;
  44.   int t_array[TRLEN*MAXEN*3];
  45.   int t_a;
  46.   };
  47.  
  48. class TUNEL
  49. {
  50.     public:
  51.         TUNEL(int n,float sc);
  52.         TUNEL(); //tunel()+reset(x,y)=tunel(x,y);
  53.         ~TUNEL();
  54.  
  55.         void reset(int n,float sc);
  56.         void render();
  57.  
  58.         void posun_t(float how_much);
  59.         void pridaj_obruc();             
  60.         void pridaj_obruc(float how_much);             
  61.         void konvert_quads();
  62.         void rebuild();
  63.         void rgb(float er,float ge,float be )
  64.           {
  65.           r=er;
  66.           g=ge;
  67.           b=be;
  68.           };
  69.     INFO3D getinfo(float p);
  70.         INFO3D track[TRLEN]; //ulozena draha pre kameru
  71.         int tr_pos;
  72.  
  73.         OBRUCE *data;
  74.         TURTLE t;
  75.         int en;
  76.         int inverse;   //ak je jedna je to tube, inac tunel
  77.  
  78.         float r,g,b;
  79.         float tex_x;   //suradnica na texture
  80.         float scale; 
  81.         float step;
  82. };
  83.  
  84. #endif