home *** CD-ROM | disk | FTP | other *** search
/ Phenomenon / Phenomenon.iso / quake / utils / mdl / meddle16 / mdl14src / mdl.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-06  |  3.2 KB  |  145 lines

  1. //
  2. // this file by brian martin 1996
  3. // brian@phyast.pitt.edu
  4. //
  5. // this is part of the source for the MedDLe quake model viewer/editor
  6. //
  7.  
  8. #include<stdio.h>
  9. #include<stdlib.h>
  10. #include<conio.h>
  11. #include<dos.h>
  12. #include<string.h>
  13. #include<limits.h>
  14. #include"bg_grx.h"
  15. #include"bg_mouse.h"
  16. #include<grx20.h>
  17.  
  18. #define VERSION  1.4      //meddle version
  19. #define ONSEEM 0x0020
  20.  
  21. //  new struuctures
  22. typedef struct situation {
  23.     BG_3pt pos;
  24.     BG_Matrix pos_matrix;
  25.     BG_Matrix dir_matrix;
  26.     unsigned int ix, iy;
  27.     };
  28.  
  29.  
  30. struct MDL_model{
  31.     char filetype[4];
  32.     int version;
  33.     float xscale,yscale,zscale;        // scale model
  34.     float xoffset,yoffset,zoffset;     // scale origin
  35.     float radius;                      // bounding radius
  36.     float eyex,eyey,eyez;              // eye position
  37.     unsigned num_skins;                // num skins
  38.     unsigned skinw;                    // skin width
  39.     unsigned skinh;                    // skin height
  40.     unsigned num_vertices;
  41.     unsigned num_triangles;
  42.     unsigned num_frames;
  43.     unsigned sync_type;
  44.     unsigned flags;
  45.     float ave_size;
  46.  
  47.     struct MDL_model_skin *skin;
  48.     unsigned int *vertex;
  49.     unsigned int *triangle;
  50.     struct MDL_frame *frame;
  51. //    unsigned int  frame_type;
  52. //    struct MDL_model_frame_group *frame_group;
  53.     char filename[128];
  54.     unsigned cur_skin;
  55.     unsigned blocks;
  56.     BG_Block *block;
  57.     situation sit;
  58.     int tcolor;
  59.     int bcolor;
  60. };
  61.  
  62.  
  63. struct trivertex {
  64.     unsigned char    v[3];
  65.     unsigned char vnormal;
  66. };
  67.  
  68. struct MDL_group_skin{
  69.     unsigned char *bitmap;
  70. };
  71.  
  72. struct MDL_model_skin{
  73.     unsigned type;
  74.     unsigned char *bitmap;
  75.     unsigned num_gskins;
  76.     float *gskin_interval;
  77.     struct MDL_group_skin *gskin;
  78.  
  79. };
  80.  
  81. struct MDL_model_frame {
  82.     trivertex    bboxmin;    // lightnormal isn't used
  83.     trivertex    bboxmax;    // lightnormal isn't used
  84.     char        name[16];    // frame name from grabbing
  85.     trivertex   *tv;
  86. };
  87. struct MDL_model_frame_group{
  88.     unsigned num_gsframes;
  89.     trivertex    bboxmin;    // lightnormal isn't used
  90.     trivertex    bboxmax;    // lightnormal isn't used
  91.     float *gsframe_interval;
  92.     struct MDL_model_frame *gsframe;
  93.  
  94. };
  95.  
  96. struct MDL_frame{
  97.     unsigned type;
  98.     struct  MDL_model_frame_group gframe;
  99.     struct  MDL_model_frame  sframe;
  100.  
  101. };
  102.  
  103. extern unsigned char pal[256*3];
  104. extern unsigned char cmap[256*32];
  105.  
  106. struct MDL_window {
  107.     int windowed;
  108.     int x,y,w,h;
  109.     GrContext *gcontext;
  110. };
  111.  
  112. extern MDL_window win2d;
  113. extern MDL_window win3d;
  114.  
  115. extern int mdl_3d(MDL_model *, MDL_window *);
  116. extern int mdl_2d(MDL_model *, MDL_window *);
  117. extern void write_mdl(FILE *out, MDL_model *);
  118. extern void read_mdl(FILE *, MDL_model *);
  119. extern void setup_3d_data( MDL_model *);
  120. extern void delete_3d_data(MDL_model *m);
  121.  
  122.  
  123. #define win_width 3.20
  124. #define win_height 2.40
  125. #define focus 2.00
  126.  
  127.  
  128. #define FLAT_SHADING    0x1     // constant colour polygon
  129. #define GOURAUD_SHADED  0x2     // Gouraud shaded polygon
  130. #define TEXTURED        0x3     // texture mapped polygon
  131. #define ARROW_LEFT  75
  132. #define ARROW_RIGHT 77
  133. #define ARROW_UP    72
  134. #define ARROW_DOWN  80
  135. #define KEY_ENTER       13
  136. #define KEY_SPACE       32
  137. #define KEY_TAB          9               /* all i can think of */
  138.  
  139. //extern BG_Block *block;
  140. //extern BG_Object *object;
  141.  
  142.  
  143.  
  144.  
  145.