home *** CD-ROM | disk | FTP | other *** search
/ The Party 1994: Try This At Home / disk_image.bin / source / vexsrc / vect.h < prev    next >
C/C++ Source or Header  |  1994-07-15  |  2KB  |  151 lines

  1. #ifndef __VECT_H
  2. #define __VECT_H
  3.  
  4. #define MAXVERT 14
  5.  
  6. struct lightspot
  7. {
  8.   short n;
  9.   unsigned char c0;
  10.   unsigned char cn;
  11. };
  12.  
  13. struct texturespot
  14. {
  15.   unsigned short x;
  16.   unsigned short y;
  17. };
  18.  
  19. struct plane
  20. {
  21.   plane *next;
  22.   plane *b;
  23.   plane *m;
  24.   plane *f;
  25.  
  26.   unsigned char opt;
  27.   unsigned char disp;
  28.   short textnum;
  29.   short num;
  30.   short mid;
  31.   short v[MAXVERT+1];
  32.   lightspot nr;
  33.   union
  34.   {
  35.     lightspot col[MAXVERT+1];
  36.     texturespot tex[MAXVERT+1];
  37.     unsigned long ct[MAXVERT+1];
  38.   };
  39. };
  40.  
  41. #define OPT_DISPLAY 0x01
  42.  
  43. #define DISP_NORM 0
  44. #define DISP_SHADED 1
  45. #define DISP_MIRROR 3
  46. #define DISP_ORPUT 4
  47. #define DISP_TEXT 5
  48. #define DISP_TEXTX 6
  49.  
  50. extern unsigned scrpage;
  51. extern long curtime;
  52.  
  53. class transform
  54. {
  55. private:
  56.   char* events;
  57.   char* evptr;
  58.  
  59.   vector rmd;
  60.   long at0;
  61.   char alev;
  62.   vector ang[3];
  63.   long pt0;
  64.   char plev;
  65.   vector pos[4];
  66.  
  67. public:
  68.   transform(int file);
  69.   virtual ~transform();
  70.   virtual void parse();
  71.   virtual void makexform(matrix& m);
  72. };
  73.  
  74. struct objdata
  75. {
  76.   short id;
  77.   objdata *next;
  78.   objdata *sub;
  79.   vector mid;
  80.   long rad;
  81.   vector *verts;
  82.   vector *norms;
  83.   plane *planes;
  84.   short vertnum;
  85.   short normnum;
  86.   short planenum;
  87.   matrix xform;
  88. };
  89.  
  90. struct lightdata
  91. {
  92.   vector pos;
  93.   long intens;
  94. };
  95.  
  96. class object
  97. {
  98. public:
  99.   virtual ~object() {}
  100.   virtual void getobject(const matrix &m)=0;
  101. };
  102.  
  103. class stdobject : public object
  104. {
  105. private:
  106.   objdata o;
  107.   transform *t;
  108.  
  109.   char* events;
  110.   char* evptr;
  111.   short active;
  112.  
  113. public:
  114.   stdobject(int file);
  115.   virtual ~stdobject();
  116.   virtual void getobject(const matrix &m);
  117. };
  118.  
  119. class lightobject : public object
  120. {
  121. private:
  122.   long intens;
  123.   transform *t;
  124.  
  125. public:
  126.   lightobject(int file);
  127.   virtual ~lightobject();
  128.   virtual void getobject(const matrix &m);
  129. };
  130.  
  131. class objectnode : public object
  132. {
  133. private:
  134.   char objnum;
  135.   object **o;
  136.   transform *t;
  137.  
  138. public:
  139.   objectnode(int file);
  140.   virtual ~objectnode();
  141.   virtual void getobject(const matrix &m);
  142. };
  143.  
  144. void addobject(objdata &o);
  145. void addlight(const vector &pos, long intens);
  146. object *readobject(int file);
  147.  
  148. void gettexture(short num, const texturespot *text, short n, long (*vert)[2], char *&bmp, unsigned short &wid);
  149.  
  150. #endif
  151.