|
|
1.1 root 1: /*
2: Copyright (C) 1996-1997 Id Software, Inc.
3:
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.
8:
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.
12:
13: See the GNU General Public License for more details.
14:
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.
18:
19: */
20: //
21: // modelgen.h: header file for model generation program
22: //
23:
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: // *********************************************************
29:
30: #ifdef INCLUDELIBS
31:
32: #include <stdlib.h>
33: #include <stdio.h>
34: #include <math.h>
35: #include <string.h>
36:
37: #include "cmdlib.h"
38: #include "scriplib.h"
39: #include "trilib.h"
40: #include "lbmlib.h"
41: #include "mathlib.h"
42:
43: #endif
44:
45: #define ALIAS_VERSION 6
46:
47: #define ALIAS_ONSEAM 0x0020
48:
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
54:
55: typedef enum { ALIAS_SINGLE=0, ALIAS_GROUP } aliasframetype_t;
56:
57: typedef enum { ALIAS_SKIN_SINGLE=0, ALIAS_SKIN_GROUP } aliasskintype_t;
58:
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;
76:
77: // TODO: could be shorts
78:
79: typedef struct {
80: int onseam;
81: int s;
82: int t;
83: } stvert_t;
84:
85: typedef struct dtriangle_s {
86: int facesfront;
87: int vertindex[3];
88: } dtriangle_t;
89:
90: #define DT_FACES_FRONT 0x0010
91:
92: // This mirrors trivert_t in trilib.h, is present so Quake knows how to
93: // load this data
94:
95: typedef struct {
96: byte v[3];
97: byte lightnormalindex;
98: } trivertx_t;
99:
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;
105:
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;
111:
112: typedef struct {
113: int numskins;
114: } daliasskingroup_t;
115:
116: typedef struct {
117: float interval;
118: } daliasinterval_t;
119:
120: typedef struct {
121: float interval;
122: } daliasskininterval_t;
123:
124: typedef struct {
125: aliasframetype_t type;
126: } daliasframetype_t;
127:
128: typedef struct {
129: aliasskintype_t type;
130: } daliasskintype_t;
131:
132: #define IDPOLYHEADER (('O'<<24)+('P'<<16)+('D'<<8)+'I')
133: // little-endian "IDPO"
134:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.