2 typedef struct zymlump_s
8 typedef struct zymtype1header_s
10 char id[12]; // "ZYMOTICMODEL", length 12, no termination
11 int type; // 0 (vertex morph) 1 (skeletal pose) or 2 (skeletal scripted)
12 int filesize; // size of entire model file
13 float mins[3], maxs[3], radius; // for clipping uses
17 int numbones; // this may be zero in the vertex morph format (undecided)
18 int numscenes; // 0 in skeletal scripted models
20 // skeletal pose header
21 // lump offsets are relative to the file
22 zymlump_t lump_scenes; // zymscene_t scene[numscenes]; // name and other information for each scene (see zymscene struct)
23 zymlump_t lump_poses; // float pose[numposes][numbones][6]; // animation data
24 zymlump_t lump_bones; // zymbone_t bone[numbones];
25 zymlump_t lump_vertbonecounts; // int vertbonecounts[numvertices]; // how many bones influence each vertex (separate mainly to make this compress better)
26 zymlump_t lump_verts; // zymvertex_t vert[numvertices]; // see vertex struct
27 zymlump_t lump_texcoords; // float texcoords[numvertices][2];
28 zymlump_t lump_render; // int renderlist[rendersize]; // sorted by shader with run lengths (int count), shaders are sequentially used, each run can be used with glDrawElements (each triangle is 3 int indices)
29 zymlump_t lump_shaders; // char shadername[numshaders][32]; // shaders used on this model
30 zymlump_t lump_trizone; // byte trizone[numtris]; // see trizone explanation
34 #define ZYMBONEFLAG_SHARED 1
36 typedef struct zymbone_s
40 int parent; // parent bone number
44 // normally the scene will loop, if this is set it will stay on the final frame
45 #define ZYMSCENEFLAG_NOLOOP 1
47 typedef struct zymscene_s
50 float mins[3], maxs[3], radius; // for clipping
51 float framerate; // the scene will animate at this framerate (in frames per second)
53 int start, length; // range of poses
57 typedef struct zymvertex_s
64 extern void Mod_LoadZymoticModel (struct model_s *mod, void *buffer);