@@ -111,186 +111,122 @@ struct carmodelentry_t
111111// FIXME: it's guessed
112112struct POLYF3
113113{
114- unsigned char id;
115- unsigned char v0;
116- unsigned char v1;
117- unsigned char v2;
118- unsigned char pad;
114+ uchar id;
115+ uchar v0;
116+ uchar v1;
117+ uchar v2;
118+ uchar pad;
119119 CVECTOR_NOPAD color;
120120 char pad2[4 ];
121121};
122122
123123// FIXME: it's guessed
124124struct POLYF4
125125{
126- unsigned char id; // 0
127- unsigned char pad1;
128- unsigned char pad2;
129- unsigned char spare;
130- unsigned char v0; // 4
131- unsigned char v1;
132- unsigned char v2;
133- unsigned char v3;
126+ uchar id; // 0
127+ uchar pad1;
128+ uchar pad2;
129+ uchar spare;
130+ uchar v0; // 4
131+ uchar v1;
132+ uchar v2;
133+ uchar v3;
134134 CVECTOR_NOPAD color;
135135 char pad[5 ];
136136};
137137
138- struct POLYFT3
138+ struct POLYFT4
139139{
140- unsigned char id;
141- unsigned char texture_set;
142- unsigned char texture_id;
143- unsigned char spare;
144- unsigned char v0;
145- unsigned char v1;
146- unsigned char v2;
147- unsigned char pad;
148- UV_INFO uv0;
149- UV_INFO uv1;
150- UV_INFO uv2;
151- UV_INFO pad2;
140+ uchar id;
141+ uchar texture_set;
142+ uchar texture_id;
143+ uchar spare;
144+ uchar v0, v1, v2, v3;
145+ UV_INFO uv0, uv1, uv2, uv3;
152146 CVECTOR color;
153147};
154148
155- struct POLYGT3
149+ struct POLYGT4
156150{
157- unsigned char id;
158- unsigned char texture_set;
159- unsigned char texture_id;
160- unsigned char spare;
161- unsigned char v0;
162- unsigned char v1;
163- unsigned char v2;
164- unsigned char pad;
165- unsigned char n0;
166- unsigned char n1;
167- unsigned char n2;
168- unsigned char pad2;
169- UV_INFO uv0;
170- UV_INFO uv1;
171- UV_INFO uv2;
172- UV_INFO pad3;
151+ uchar id;
152+ uchar texture_set;
153+ uchar texture_id;
154+ uchar spare;
155+ uchar v0, v1, v2, v3;
156+ uchar n0, n1, n2, n3;
157+ UV_INFO uv0, uv1, uv2, uv3;
173158 CVECTOR color;
174159};
175160
176- struct POLYFT4
161+ struct POLYFT3
177162{
178- unsigned char id;
179- unsigned char texture_set;
180- unsigned char texture_id;
181- unsigned char spare;
182- unsigned char v0;
183- unsigned char v1;
184- unsigned char v2;
185- unsigned char v3;
186- UV_INFO uv0;
187- UV_INFO uv1;
188- UV_INFO uv2;
189- UV_INFO uv3;
163+ uchar id;
164+ uchar texture_set;
165+ uchar texture_id;
166+ uchar spare;
167+ uchar v0, v1, v2, pad;
168+ UV_INFO uv0, uv1, uv2, pad2;
190169 CVECTOR color;
191170};
192171
193- struct POLYGT4
172+ struct POLYGT3
194173{
195- unsigned char id;
196- unsigned char texture_set;
197- unsigned char texture_id;
198- unsigned char spare;
199- unsigned char v0;
200- unsigned char v1;
201- unsigned char v2;
202- unsigned char v3;
203- unsigned char n0;
204- unsigned char n1;
205- unsigned char n2;
206- unsigned char n3;
207- UV_INFO uv0;
208- UV_INFO uv1;
209- UV_INFO uv2;
210- UV_INFO uv3;
174+ uchar id;
175+ uchar texture_set;
176+ uchar texture_id;
177+ uchar spare;
178+ uchar v0, v1, v2, pad;
179+ uchar n0, n1, n2, pad2;
180+ UV_INFO uv0, uv1, uv2, pad3;
211181 CVECTOR color;
212182};
213183
184+ #define COLLISION_BOX 0
185+ #define COLLISION_CYLINDER 1
186+ #define COLLISION_CONE 2
187+ #define COLLISION_SPHERE 3
188+ #define COLLISION_INDOORS 4
189+
214190struct COLLISION_PACKET
215191{
216192 short type;
217- short xpos;
218- short ypos;
219- short zpos;
193+ short xpos, ypos, zpos;
220194 short flags;
221195 short yang;
222196 short empty;
223- short xsize;
224- short ysize;
225- short zsize;
197+ short xsize, ysize, zsize;
226198};
227199
228- #if 0
229- enum ModelFlags1 // collision flags?
230- {
231- everything = 1,
232- dontKnow0 = 2,
233- walls = 4,
234- dontKnow1 = 8,
235- dontKnow2 = 16,
236- planarGround = 32,
237- dontKnow3 = 64,
238- dontKnow4 = 128,
239- dontKnow5 = 256,
240- dontKnow6 = 512,
241- ground = 1024,
242- dontKnow7 = 2048,
243- dontKnow8 = 4096,
244- street = 8192,
245- tree = 16384,
246- anythingToHit = 32768 // walls, poles, fences; but not trees or buildings
247- };
248-
249- enum ModelFlags2 // effect flags?
250- {
251- dontKnow9 = 1, // empty in Chicago
252- sandy = 2, // ??? lots of sandy stuff, but not everything
253- dontKnow10 = 4, // ??? (just one roof in Chicago)
254- dontKnow11 = 8, // ??? (empty in Chicago)
255- dontKnow12 = 16, // many sidewalks, some grass
256- medianStrips = 32,
257- crossings = 64,
258- dirt = 128, // lots but not everything
259- dontKnow13 = 256, // parking lot in Chicago
260- chair = 512,
261- walls2 = 1024, // don't know the difference to 'walls'
262- destructable = 2048,
263- dontKnow14 = 4096, // ??? (empty in Chicago)
264- greenTree = 8192, // don't know the difference to 'tree'
265- dontKnow15 = 16384, // ??? again: many sidewalks, some grass
266- sidewalk = 32768
267- };
268- #else
269-
270200enum ModelShapeFlags
271201{
272- SHAPE_FLAG_SMASH_QUIET = 0x8 ,
273- SHAPE_FLAG_NOCOLLIDE = 0x10 ,
274- SHAPE_FLAG_SUBSURFACE = 0x80 , // grass, dirt, water
275- SHAPE_FLAG_ALLEYWAY = 0x400 , // alleyway
276- SHAPE_FLAG_SMASH_SPRITE = 0x4000 ,
202+ SHAPE_FLAG_LITPOLY = 0x1 ,
203+ SHAPE_FLAG_BSPDATA = 0x2 ,
204+ SHAPE_FLAG_TRANS = 0x8 ,
205+ SHAPE_FLAG_NOCOLLIDE = 0x10 ,
206+ SHAPE_FLAG_WATER = 0x80 , // model is water
207+ SHAPE_FLAG_AMBIENT2 = 0x100 , // Ambient sound 2 associated - maybe used in D1
208+ SHAPE_FLAG_AMBIENT1 = 0x200 , // Ambient sound 1 associated - maybe used in D1
209+ SHAPE_FLAG_TILE = 0x400 , // treat as road
210+ SHAPE_FLAG_SHADOW = 0x800 , // D1 leftover flag
211+ SHAPE_FLAG_ALPHA = 0x1000 , // alpha tested object
212+ SHAPE_FLAG_ROAD = 0x2000 , // section of road
213+ SHAPE_FLAG_SPRITE = 0x4000 ,
277214};
278215
279216enum ModelFlags2
280217{
281- MODEL_FLAG_ANIMOBJ = 0x1 ,
282- MODEL_FLAG_MEDIAN = 0x20 ,
283- MODEL_FLAG_ALLEY = 0x80 ,
284- MODEL_FLAG_HASROOF = 0x100 ,
285- MODEL_FLAG_NOCOL_200 = 0x200 ,
218+ MODEL_FLAG_MEDIAN = 0x20 , // Hmmmm...
219+ MODEL_FLAG_JUNC = 0x40 ,
220+ MODEL_FLAG_ALLEY = 0x80 , // alley tile
221+ MODEL_FLAG_INDOORS = 0x100 ,
222+ MODEL_FLAG_CHAIR = 0x200 ,
286223 MODEL_FLAG_BARRIER = 0x400 ,
287224 MODEL_FLAG_SMASHABLE = 0x800 ,
288225 MODEL_FLAG_LAMP = 0x1000 ,
289226 MODEL_FLAG_TREE = 0x2000 ,
290227 MODEL_FLAG_GRASS = 0x4000 ,
291- MODEL_FLAG_SIDEWALK = 0x8000 ,
228+ MODEL_FLAG_PATH = 0x8000 ,
292229};
293- #endif
294230
295231struct MODEL
296232{
0 commit comments