@@ -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
290327char * 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