1 /* 2 * File: fmt_md2.h 3 * 4 * Description: defines some structs etc for fmt_md2.c 5 * 6 * 7 * This source code is part of kludge3d, and is released under the 8 * GNU General Public License. 9 * 10 * 11 */ 12 13 14 #ifndef MD2_OBJECT_H 15 #define MD2_OBJECT_H 16 17 18 #ifndef byte 19 typedef unsigned char byte; 20 #endif /* byte */ 21 22 #define MD2_MAX_TRIANGLES 4096 23 #define MD2_MAX_VERTICES 2048 24 #define MD2_MAX_TEXCOORDS 2048 25 #define MD2_MAX_FRAMES 512 26 #define MD2_MAX_SKINS 32 27 #define MD2_MAX_FRAMESIZE (MD2_MAX_VERTICES * 4 + 128) 28 29 #define NUMVERTEXNORMALS 162 30 31 32 typedef struct { 33 int magic; 34 int version; 35 int skinWidth; 36 int skinHeight; 37 int frameSize; 38 int numSkins; 39 int numVertices; 40 int numTexCoords; 41 int numTriangles; 42 int numGlCommands; 43 int numFrames; 44 int offsetSkins; 45 int offsetTexCoords; 46 int offsetTriangles; 47 int offsetFrames; 48 int offsetGlCommands; 49 int offsetEnd; 50 } 51 md2_header_t; 52 53 typedef struct { 54 byte vertex[ 3 ]; 55 byte lightNormalIndex; 56 } 57 md2_alias_triangleVertex_t; 58 59 typedef struct { 60 float vertex[ 3 ]; 61 float normal[ 3 ]; 62 //byte lightNormalIndex; 63 } 64 md2_triangleVertex_t; 65 66 typedef struct { 67 short vertexIndices[ 3 ]; 68 short textureIndices[ 3 ]; 69 } 70 md2_triangle_t; 71 72 typedef struct { 73 short s, t; 74 } 75 md2_textureCoordinate_t; 76 77 typedef struct { 78 float scale[ 3 ]; 79 float translate[ 3 ]; 80 char name[ 16 ]; 81 md2_alias_triangleVertex_t alias_vertices[ 1 ]; 82 } 83 md2_alias_frame_t; 84 85 typedef struct { 86 char name[ 16 ]; 87 md2_triangleVertex_t *vertices; 88 } 89 md2_frame_t; 90 91 typedef char md2_skin_t[ 64 ]; 92 93 typedef struct { 94 float s, t; 95 int vertexIndex; 96 } 97 md2_glCommandVertex_t; 98 99 /* md2_model_t class by Mete Cerrigan, containing normals, 100 meshes, etc. of model.*/ 101 typedef struct { 102 md2_header_t header; 103 md2_skin_t *skins; 104 md2_textureCoordinate_t *texCoords; 105 md2_triangle_t *triangles; 106 md2_frame_t *frames; 107 int *glCommandBuffer; 108 } 109 md2_model_t; 110 111 112 113 114 #endif 115