1 #ifndef __MODEL_IQM_H__ 2 #define __MODEL_IQM_H__ 3 4 typedef struct iqmheader_s 5 { 6 char id[16]; 7 unsigned int version; 8 unsigned int filesize; 9 unsigned int flags; 10 unsigned int num_text, ofs_text; 11 unsigned int num_meshes, ofs_meshes; 12 unsigned int num_vertexarrays, num_vertexes, ofs_vertexarrays; 13 unsigned int num_triangles, ofs_triangles, ofs_neighbors; 14 unsigned int num_joints, ofs_joints; 15 unsigned int num_poses, ofs_poses; 16 unsigned int num_anims, ofs_anims; 17 unsigned int num_frames, num_framechannels, ofs_frames, ofs_bounds; 18 unsigned int num_comment, ofs_comment; 19 unsigned int num_extensions, ofs_extensions; 20 } 21 iqmheader_t; 22 23 typedef struct iqmmesh_s 24 { 25 unsigned int name; 26 unsigned int material; 27 unsigned int first_vertex, num_vertexes; 28 unsigned int first_triangle, num_triangles; 29 } 30 iqmmesh_t; 31 32 #define IQM_POSITION 0 33 #define IQM_TEXCOORD 1 34 #define IQM_NORMAL 2 35 #define IQM_TANGENT 3 36 #define IQM_BLENDINDEXES 4 37 #define IQM_BLENDWEIGHTS 5 38 #define IQM_COLOR 6 39 #define IQM_CUSTOM 0x10 40 41 #define IQM_BYTE 0 42 #define IQM_UBYTE 1 43 #define IQM_SHORT 2 44 #define IQM_USHORT 3 45 #define IQM_INT 4 46 #define IQM_UINT 5 47 #define IQM_HALF 6 48 #define IQM_FLOAT 7 49 #define IQM_DOUBLE 8 50 51 // animflags 52 #define IQM_LOOP 1 53 54 typedef struct iqmtriangle_s 55 { 56 unsigned int vertex[3]; 57 } 58 iqmtriangle_t; 59 60 typedef struct iqmjoint1_s 61 { 62 unsigned int name; 63 signed int parent; 64 float origin[3], rotation[3], scale[3]; 65 } 66 iqmjoint1_t; 67 68 typedef struct iqmjoint_s 69 { 70 unsigned int name; 71 signed int parent; 72 float origin[3], rotation[4], scale[3]; 73 } 74 iqmjoint_t; 75 76 typedef struct iqmpose1_s 77 { 78 signed int parent; 79 unsigned int channelmask; 80 float channeloffset[9], channelscale[9]; 81 } 82 iqmpose1_t; 83 84 typedef struct iqmpose_s 85 { 86 signed int parent; 87 unsigned int channelmask; 88 float channeloffset[10], channelscale[10]; 89 } 90 iqmpose_t; 91 92 typedef struct iqmanim_s 93 { 94 unsigned int name; 95 unsigned int first_frame, num_frames; 96 float framerate; 97 unsigned int flags; 98 } 99 iqmanim_t; 100 101 typedef struct iqmvertexarray_s 102 { 103 unsigned int type; 104 unsigned int flags; 105 unsigned int format; 106 unsigned int size; 107 unsigned int offset; 108 } 109 iqmvertexarray_t; 110 111 typedef struct iqmextension_s 112 { 113 unsigned int name; 114 unsigned int num_data, ofs_data; 115 unsigned int ofs_extensions; // pointer to next extension 116 } 117 iqmextension_t; 118 119 typedef struct iqmbounds_s 120 { 121 float mins[3], maxs[3]; 122 float xyradius, radius; 123 } 124 iqmbounds_t; 125 126 #endif 127 128