Skip to content

Commit 062879d

Browse files
committed
- content override to properly handle car models
1 parent b712f25 commit 062879d

1 file changed

Lines changed: 42 additions & 22 deletions

File tree

src_rebuild/Game/C/models.c

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,43 @@ int ProcessCarModelLump(char *lump_ptr, int lump_size)
241241
int cleanOfs = offsets[0];
242242
int damOfs = offsets[1];
243243
int lowOfs = offsets[2];
244+
245+
#if USE_PC_FILESYSTEM
246+
extern int gContentOverride;
247+
if (gContentOverride)
248+
{
249+
char* mem;
250+
if (mem = LoadCarModelFromFile(NULL, model_number, CAR_MODEL_CLEAN))
251+
{
252+
D_MALLOC_BEGIN();
253+
model = GetCarModel(mem, (char**)&mallocptr, 1, model_number, CAR_MODEL_CLEAN);
254+
D_MALLOC_END();
255+
256+
gCarCleanModelPtr[i] = model;
257+
cleanOfs = -1; // skip loading
258+
}
259+
260+
if (mem = LoadCarModelFromFile(NULL, model_number, CAR_MODEL_DAMAGED))
261+
{
262+
D_MALLOC_BEGIN();
263+
model = GetCarModel(mem, (char**)&mallocptr, 1, model_number, CAR_MODEL_DAMAGED);
264+
D_MALLOC_END();
265+
266+
gCarDamModelPtr[i] = model;
267+
damOfs = -1; // skip loading
268+
}
269+
270+
if (mem = LoadCarModelFromFile(NULL, model_number, CAR_MODEL_LOWDETAIL))
271+
{
272+
D_MALLOC_BEGIN();
273+
model = GetCarModel(mem, (char**)&mallocptr, 1, model_number, CAR_MODEL_LOWDETAIL);
274+
D_MALLOC_END();
275+
276+
gCarLowModelPtr[i] = model;
277+
lowOfs = -1; // skip loading
278+
}
279+
}
280+
#endif
244281

245282
if (cleanOfs != -1)
246283
{
@@ -285,7 +322,7 @@ char* CarModelTypeNames[] = {
285322
"LOW",
286323
};
287324

288-
#ifndef PSX
325+
#if USE_PC_FILESYSTEM
289326
// [A] loads car model from file
290327
char* LoadCarModelFromFile(char* dest, int modelNumber, int type)
291328
{
@@ -312,33 +349,16 @@ MODEL* GetCarModel(char *src, char **dest, int KeepNormals, int modelNumber, int
312349
int size;
313350
MODEL *model;
314351
char* mem;
315-
316-
#ifndef PSX
317-
extern int gContentOverride;
318-
if (gContentOverride)
319-
{
320-
mem = LoadCarModelFromFile(NULL, modelNumber, type);
321-
322-
if (!mem) // fallback to lump
323-
mem = src;
324-
}
325-
else
326-
{
327-
mem = src;
328-
}
329-
#else
330-
mem = src;
331-
#endif
332352

333353
model = (MODEL *)*dest;
334354

335355
if (KeepNormals == 0)
336-
size = ((MODEL*)mem)->normals;
356+
size = ((MODEL*)src)->normals;
337357
else
338-
size = ((MODEL*)mem)->poly_block;
358+
size = ((MODEL*)src)->poly_block;
339359

340360
// if loaded externally don't copy from source lump
341-
memcpy((u_char*)*dest, (u_char*)mem, size);
361+
memcpy((u_char*)*dest, (u_char*)src, size);
342362

343363
if (KeepNormals == 0)
344364
size = model->normals;
@@ -350,7 +370,7 @@ MODEL* GetCarModel(char *src, char **dest, int KeepNormals, int modelNumber, int
350370

351371
model->vertices += (int)model;
352372
model->normals += (int)model;
353-
model->poly_block = (int)mem + model->poly_block;
373+
model->poly_block = (int)src + model->poly_block;
354374

355375
if (KeepNormals == 0)
356376
model->point_normals = 0;

0 commit comments

Comments
 (0)