File: model_iqm.h

package info (click to toggle)
darkplaces 0~20130304+svn11952-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 15,132 kB
  • ctags: 31,555
  • sloc: ansic: 171,806; pascal: 543; perl: 372; makefile: 369; objc: 243; sh: 99
file content (127 lines) | stat: -rw-r--r-- 2,447 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#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