/* | |
Copyright (C) 1996-1997 Id Software, Inc. | |
This program is free software; you can redistribute it and/or | |
modify it under the terms of the GNU General Public License | |
as published by the Free Software Foundation; either version 2 | |
of the License, or (at your option) any later version. | |
This program is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
See the GNU General Public License for more details. | |
You should have received a copy of the GNU General Public License | |
along with this program; if not, write to the Free Software | |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
*/ | |
// | |
// modelgen.h: header file for model generation program | |
// | |
// ********************************************************* | |
// * This file must be identical in the modelgen directory * | |
// * and in the Quake directory, because it's used to * | |
// * pass data from one to the other via model files. * | |
// ********************************************************* | |
#ifdef INCLUDELIBS | |
#include <stdlib.h> | |
#include <stdio.h> | |
#include <math.h> | |
#include <string.h> | |
#include "cmdlib.h" | |
#include "scriplib.h" | |
#include "trilib.h" | |
#include "lbmlib.h" | |
#include "mathlib.h" | |
#endif | |
#define ALIAS_VERSION 6 | |
#define ALIAS_ONSEAM 0x0020 | |
// must match definition in spritegn.h | |
#ifndef SYNCTYPE_T | |
#define SYNCTYPE_T | |
typedef enum {ST_SYNC=0, ST_RAND, synctype_t_max = 1 << 30 } synctype_t; | |
#endif | |
typedef enum { ALIAS_SINGLE=0, ALIAS_GROUP, aliasframetype_t_max = 1 << 30 } aliasframetype_t; | |
typedef enum { ALIAS_SKIN_SINGLE=0, ALIAS_SKIN_GROUP, aliasskintype_t_max= 1 << 30 } aliasskintype_t; | |
typedef struct { | |
int ident; | |
int version; | |
vec3_t scale; | |
vec3_t scale_origin; | |
float boundingradius; | |
vec3_t eyeposition; | |
int numskins; | |
int skinwidth; | |
int skinheight; | |
int numverts; | |
int numtris; | |
int numframes; | |
synctype_t synctype; | |
int flags; | |
float size; | |
} mdl_t; | |
// TODO: could be shorts | |
typedef struct { | |
int onseam; | |
int s; | |
int t; | |
} stvert_t; | |
typedef struct dtriangle_s { | |
int facesfront; | |
int vertindex[3]; | |
} dtriangle_t; | |
#define DT_FACES_FRONT 0x0010 | |
// This mirrors trivert_t in trilib.h, is present so Quake knows how to | |
// load this data | |
typedef struct { | |
byte v[3]; | |
byte lightnormalindex; | |
} trivertx_t; | |
typedef struct { | |
trivertx_t bboxmin; // lightnormal isn't used | |
trivertx_t bboxmax; // lightnormal isn't used | |
char name[16]; // frame name from grabbing | |
} daliasframe_t; | |
typedef struct { | |
int numframes; | |
trivertx_t bboxmin; // lightnormal isn't used | |
trivertx_t bboxmax; // lightnormal isn't used | |
} daliasgroup_t; | |
typedef struct { | |
int numskins; | |
} daliasskingroup_t; | |
typedef struct { | |
float interval; | |
} daliasinterval_t; | |
typedef struct { | |
float interval; | |
} daliasskininterval_t; | |
typedef struct { | |
aliasframetype_t type; | |
} daliasframetype_t; | |
typedef struct { | |
aliasskintype_t type; | |
} daliasskintype_t; | |
#define IDPOLYHEADER (('O'<<24)+('P'<<16)+('D'<<8)+'I') | |
// little-endian "IDPO" | |