bsp
eclass.h
00001 #ifndef _ECLASS_H_
00002 #define _ECLASS_H_
00003 
00004 typedef enum
00005 {
00006     esize_model, esize_fixed
00007 } esize_t;
00008 
00009 typedef struct dskindata_s
00010 {
00011     int skinwidth;
00012     int skinheight;
00013     unsigned char *data;
00014 } dskindata_t;
00015 
00016 #define MAX_FLAGS       8
00017 class EntityClass
00018 {
00019 public:
00020 
00021     EntityClass();
00022     ~EntityClass();
00023 
00024     char         *name;
00025     esize_t      esize;
00026     vec3_t       mins, maxs;
00027     COLORREF color;
00028     char         *comments;
00029     char         flagnames[MAX_FLAGS][32];
00030 
00031     int      mdlType; // 0 = Quake, 1 = Quake2
00032     mdl_t    *mdl;
00033     dmdl_t   *mdlQ2;
00034 
00035     // Generalized MDL Stuff
00036     int      curframe;
00037     int      maxframe;
00038     int      curskin;
00039     int      maxskin;
00040     bool     showMdl;
00041 
00042     // Model loaders
00043     mdl_t    *LoadMDLFromPak(char *,char *);
00044 
00045     // Q2
00046     bool     read_from_pak;
00047     dskindata_t *skinTextureData;
00048     void     InitModelTexture(EntityClass *, dmdl_t *mdl,char *pakfile,int skin_num,char *skin_fname);
00049     void     mdl_loader(FILE *f, dmdl_t *mdl, int offset);
00050     dmdl_t   *LoadMDLFromQ2Pak(char *, char *);
00051     FILE     *FindInPath(char *path, char *filename, int *size, int *offset);
00052     FILE     *FindInPak(char *pakname, char *filename, int *size, int *offset);
00053     dmdl_t   *LoadMDLFromQ2MDL(char *fname);
00054 
00055     // Model Unloaders
00056     void     FreeModel(mdl_t *);
00057     void     FreeModelQ2(dmdl_t *);
00058 
00059     // Utility Functions...
00060     void     initFromText(char *text);
00061     char     *getclassname();
00062     esize_t  getesize();
00063     float    *getmins();                // only for esize_fixed
00064     float    *getmaxs();                // only for esize_fixed
00065     COLORREF drawColor();
00066     char     *getcomments();
00067     char     *getflagName(unsigned flagnum);
00068 };
00069 
00070 class EntityClassList
00071 {
00072 public:
00073     EntityClassList();
00074     ~EntityClassList();
00075 
00076     EntityClass   *nullclass;
00077     char                *source_path;
00078     int           numElements;
00079     EntityClass   **objects;
00080     unsigned char *pal;
00081 
00082     int            indexOf(EntityClass *e);
00083     EntityClass    *objectAt(int i);
00084     void           initForSourceDirectory(char *path);
00085     EntityClass    *classForName(char *name);
00086     void           scanDirectory();
00087     void           scanFile(char *filename);
00088     void           insertEC(EntityClass *ec);
00089 };
00090 
00091 
00092 #endif  //_ECLASS_H_
 All Classes Functions