mirror of
https://github.com/DrBeef/QuakeQuest.git
synced 2024-11-25 13:31:48 +00:00
127 lines
2.4 KiB
C
127 lines
2.4 KiB
C
#ifndef __MODEL_IQM_H__
|
|
#define __MODEL_IQM_H__
|
|
|
|
typedef struct iqmheader_s
|
|
{
|
|
char id[16];
|
|
unsigned int version;
|
|
unsigned int filesize;
|
|
unsigned int flags;
|
|
unsigned int num_text, ofs_text;
|
|
unsigned int num_meshes, ofs_meshes;
|
|
unsigned int num_vertexarrays, num_vertexes, ofs_vertexarrays;
|
|
unsigned int num_triangles, ofs_triangles, ofs_neighbors;
|
|
unsigned int num_joints, ofs_joints;
|
|
unsigned int num_poses, ofs_poses;
|
|
unsigned int num_anims, ofs_anims;
|
|
unsigned int num_frames, num_framechannels, ofs_frames, ofs_bounds;
|
|
unsigned int num_comment, ofs_comment;
|
|
unsigned int num_extensions, ofs_extensions;
|
|
}
|
|
iqmheader_t;
|
|
|
|
typedef struct iqmmesh_s
|
|
{
|
|
unsigned int name;
|
|
unsigned int material;
|
|
unsigned int first_vertex, num_vertexes;
|
|
unsigned int first_triangle, num_triangles;
|
|
}
|
|
iqmmesh_t;
|
|
|
|
#define IQM_POSITION 0
|
|
#define IQM_TEXCOORD 1
|
|
#define IQM_NORMAL 2
|
|
#define IQM_TANGENT 3
|
|
#define IQM_BLENDINDEXES 4
|
|
#define IQM_BLENDWEIGHTS 5
|
|
#define IQM_COLOR 6
|
|
#define IQM_CUSTOM 0x10
|
|
|
|
#define IQM_BYTE 0
|
|
#define IQM_UBYTE 1
|
|
#define IQM_SHORT 2
|
|
#define IQM_USHORT 3
|
|
#define IQM_INT 4
|
|
#define IQM_UINT 5
|
|
#define IQM_HALF 6
|
|
#define IQM_FLOAT 7
|
|
#define IQM_DOUBLE 8
|
|
|
|
// animflags
|
|
#define IQM_LOOP 1
|
|
|
|
typedef struct iqmtriangle_s
|
|
{
|
|
unsigned int vertex[3];
|
|
}
|
|
iqmtriangle_t;
|
|
|
|
typedef struct iqmjoint1_s
|
|
{
|
|
unsigned int name;
|
|
signed int parent;
|
|
float origin[3], rotation[3], scale[3];
|
|
}
|
|
iqmjoint1_t;
|
|
|
|
typedef struct iqmjoint_s
|
|
{
|
|
unsigned int name;
|
|
signed int parent;
|
|
float origin[3], rotation[4], scale[3];
|
|
}
|
|
iqmjoint_t;
|
|
|
|
typedef struct iqmpose1_s
|
|
{
|
|
signed int parent;
|
|
unsigned int channelmask;
|
|
float channeloffset[9], channelscale[9];
|
|
}
|
|
iqmpose1_t;
|
|
|
|
typedef struct iqmpose_s
|
|
{
|
|
signed int parent;
|
|
unsigned int channelmask;
|
|
float channeloffset[10], channelscale[10];
|
|
}
|
|
iqmpose_t;
|
|
|
|
typedef struct iqmanim_s
|
|
{
|
|
unsigned int name;
|
|
unsigned int first_frame, num_frames;
|
|
float framerate;
|
|
unsigned int flags;
|
|
}
|
|
iqmanim_t;
|
|
|
|
typedef struct iqmvertexarray_s
|
|
{
|
|
unsigned int type;
|
|
unsigned int flags;
|
|
unsigned int format;
|
|
unsigned int size;
|
|
unsigned int offset;
|
|
}
|
|
iqmvertexarray_t;
|
|
|
|
typedef struct iqmextension_s
|
|
{
|
|
unsigned int name;
|
|
unsigned int num_data, ofs_data;
|
|
unsigned int ofs_extensions; // pointer to next extension
|
|
}
|
|
iqmextension_t;
|
|
|
|
typedef struct iqmbounds_s
|
|
{
|
|
float mins[3], maxs[3];
|
|
float xyradius, radius;
|
|
}
|
|
iqmbounds_t;
|
|
|
|
#endif
|
|
|