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