git-svn-id: http://bladebattles.com/kurok/SVN@11 20cd92bb-ff49-0410-b73e-96a06e42c3b9
[kurok.git] / modelgen.h
blob76cb956fbe6be8713b622567b95b7b39f7fc7755
1 /*
2 Copyright (C) 1996-1997 Id Software, Inc.
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 See the GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 // modelgen.h: header file for model generation program
24 // *********************************************************
25 // * This file must be identical in the modelgen directory *
26 // * and in the Quake directory, because it's used to *
27 // * pass data from one to the other via model files. *
28 // *********************************************************
30 #ifdef INCLUDELIBS
32 #include <stdlib.h>
33 #include <stdio.h>
34 #include <math.h>
35 #include <string.h>
37 #include "cmdlib.h"
38 #include "scriplib.h"
39 #include "trilib.h"
40 #include "lbmlib.h"
41 #include "mathlib.h"
43 #endif
45 #define ALIAS_VERSION 6
47 #define ALIAS_ONSEAM 0x0020
49 // must match definition in spritegn.h
50 #ifndef SYNCTYPE_T
51 #define SYNCTYPE_T
52 typedef enum {ST_SYNC=0, ST_RAND } synctype_t;
53 #endif
55 typedef enum { ALIAS_SINGLE=0, ALIAS_GROUP } aliasframetype_t;
57 typedef enum { ALIAS_SKIN_SINGLE=0, ALIAS_SKIN_GROUP } aliasskintype_t;
59 typedef struct {
60 int ident;
61 int version;
62 vec3_t scale;
63 vec3_t scale_origin;
64 float boundingradius;
65 vec3_t eyeposition;
66 int numskins;
67 int skinwidth;
68 int skinheight;
69 int numverts;
70 int numtris;
71 int numframes;
72 synctype_t synctype;
73 int flags;
74 float size;
75 } mdl_t;
77 // TODO: could be shorts
79 typedef struct {
80 int onseam;
81 int s;
82 int t;
83 } stvert_t;
85 typedef struct dtriangle_s {
86 int facesfront;
87 int vertindex[3];
88 } dtriangle_t;
90 #define DT_FACES_FRONT 0x0010
92 // This mirrors trivert_t in trilib.h, is present so Quake knows how to
93 // load this data
95 typedef struct {
96 byte v[3];
97 byte lightnormalindex;
98 } trivertx_t;
100 typedef struct {
101 trivertx_t bboxmin; // lightnormal isn't used
102 trivertx_t bboxmax; // lightnormal isn't used
103 char name[16]; // frame name from grabbing
104 } daliasframe_t;
106 typedef struct {
107 int numframes;
108 trivertx_t bboxmin; // lightnormal isn't used
109 trivertx_t bboxmax; // lightnormal isn't used
110 } daliasgroup_t;
112 typedef struct {
113 int numskins;
114 } daliasskingroup_t;
116 typedef struct {
117 float interval;
118 } daliasinterval_t;
120 typedef struct {
121 float interval;
122 } daliasskininterval_t;
124 typedef struct {
125 aliasframetype_t type;
126 } daliasframetype_t;
128 typedef struct {
129 aliasskintype_t type;
130 } daliasskintype_t;
132 #define IDPOLYHEADER (('O'<<24)+('P'<<16)+('D'<<8)+'I')
133 // little-endian "IDPO"