wrath-darkplaces/model_iqm.h

128 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