vvmtool/vvm.h

152 lines
2.6 KiB
C

#ifndef __VVM_H__
#define __VVM_H__
#define VVM_MAGIC "INTERQUAKEMODEL"
#define VVM_VERSION 2
struct vvmheader
{
char magic[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_adjacency;
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;
};
struct vvmmesh
{
unsigned int name;
unsigned int material;
unsigned int first_vertex, num_vertexes;
unsigned int first_triangle, num_triangles;
};
enum
{
VVM_POSITION = 0,
VVM_TEXCOORD = 1,
VVM_NORMAL = 2,
VVM_TANGENT = 3,
VVM_BLENDINDEXES = 4,
VVM_BLENDWEIGHTS = 5,
VVM_COLOR = 6,
VVM_CUSTOM = 0x10
};
enum
{
VVM_BYTE = 0,
VVM_UBYTE = 1,
VVM_SHORT = 2,
VVM_USHORT = 3,
VVM_INT = 4,
VVM_UINT = 5,
VVM_HALF = 6,
VVM_FLOAT = 7,
VVM_DOUBLE = 8
};
struct vvmtriangle
{
unsigned int vertex[3];
};
struct vvmadjacency
{
unsigned int triangle[3];
};
struct vvmjointv1
{
unsigned int name;
int parent;
float translate[3], rotate[3], scale[3];
};
struct vvmjoint
{
unsigned int name;
int parent;
float translate[3], rotate[4], scale[3];
};
struct vvmposev1
{
int parent;
unsigned int mask;
float channeloffset[9];
float channelscale[9];
};
struct vvmpose
{
int parent;
unsigned int mask;
float channeloffset[10];
float channelscale[10];
};
struct vvmanim
{
unsigned int name;
unsigned int first_frame, num_frames;
float framerate;
unsigned int flags;
};
enum
{
VVM_LOOP = 1<<0
};
struct vvmvertexarray
{
unsigned int type;
unsigned int flags;
unsigned int format;
unsigned int size;
unsigned int offset;
};
struct vvmbounds
{
float bbmin[3], bbmax[3];
float xyradius, radius;
};
struct vvmextension
{
unsigned int name;
unsigned int num_data, ofs_data;
unsigned int ofs_extensions; // pointer to next extension
};
struct vvmext_fte_mesh
{
unsigned int contents; //default CONTENTS_BODY
unsigned int surfaceflags; //propagates to trace_surfaceflags
unsigned int body; //the part of the body that this mesh is meant to be from
unsigned int geomset;
unsigned int geomid;
float mindist;
float maxdist;
};
struct vvmext_fte_events
{
unsigned int anim;
float timestamp;
unsigned int evcode;
unsigned int evdata_str;
};
#endif