bsp
|
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_