11#include " core/cmdlib.h"
22#include " core/IVirtualStream.h"
33
4- #include < malloc.h>
54#include < nstd/HashSet.hpp>
65
76#include " models.h"
@@ -28,7 +27,7 @@ void CDriverLevelModels::FreeAll()
2827 OnModelFreed (&ref);
2928
3029 if (ref.model )
31- free (ref.model );
30+ Memory:: free (ref.model );
3231 }
3332
3433 for (int i = 0 ; i < MAX_CAR_MODELS; i++)
@@ -38,13 +37,13 @@ void CDriverLevelModels::FreeAll()
3837 OnCarModelFreed (&carModelData);
3938
4039 if (carModelData.cleanmodel )
41- free (carModelData.cleanmodel );
40+ Memory:: free (carModelData.cleanmodel );
4241
4342 if (carModelData.dammodel )
44- free (carModelData.dammodel );
43+ Memory:: free (carModelData.dammodel );
4544
4645 if (carModelData.lowmodel )
47- free (carModelData.lowmodel );
46+ Memory:: free (carModelData.lowmodel );
4847 }
4948
5049 m_model_names.clear ();
@@ -115,7 +114,7 @@ void CDriverLevelModels::LoadCarModelsLump(IVirtualStream* pFile, int size)
115114
116115 pFile->Read (&carModelData.cleanSize , 1 , sizeof (int ));
117116
118- carModelData.cleanmodel = (MODEL*)malloc (carModelData.cleanSize );
117+ carModelData.cleanmodel = (MODEL*)Memory::alloc (carModelData.cleanSize );
119118 pFile->Read (carModelData.cleanmodel , 1 , carModelData.cleanSize );
120119 }
121120 else
@@ -127,7 +126,7 @@ void CDriverLevelModels::LoadCarModelsLump(IVirtualStream* pFile, int size)
127126
128127 pFile->Read (&carModelData.damSize , 1 , sizeof (int ));
129128
130- carModelData.dammodel = (MODEL*)malloc (carModelData.damSize );
129+ carModelData.dammodel = (MODEL*)Memory::alloc (carModelData.damSize );
131130 pFile->Read (carModelData.dammodel , 1 , carModelData.damSize );
132131 }
133132 else
@@ -139,7 +138,7 @@ void CDriverLevelModels::LoadCarModelsLump(IVirtualStream* pFile, int size)
139138
140139 pFile->Read (&carModelData.lowSize , 1 , sizeof (int ));
141140
142- carModelData.lowmodel = (MODEL*)malloc (carModelData.lowSize );
141+ carModelData.lowmodel = (MODEL*)Memory::alloc (carModelData.lowSize );
143142 pFile->Read (carModelData.lowmodel , 1 , carModelData.lowSize );
144143 }
145144 else
@@ -233,7 +232,7 @@ void CDriverLevelModels::LoadLevelModelsLump(IVirtualStream* pFile)
233232 {
234233 ModelRef_t& ref = m_levelModels[i];
235234 ref.index = i;
236- ref.model = (MODEL*)malloc (modelSize);
235+ ref.model = (MODEL*)Memory::alloc (modelSize);
237236 ref.size = modelSize;
238237
239238 pFile->Read (ref.model , modelSize, 1 );
@@ -352,11 +351,13 @@ void SwapValues(T& a, T& b)
352351// TODO: rework, few variants of faces still looks bad
353352int decode_poly (const char * polyList, dpoly_t * out, int forceType /* = -1*/ )
354353{
354+ memset (out, 0 , sizeof (dpoly_t ));
355355 int ptype = forceType == -1 ? (*polyList & 0x1f ) : forceType;
356356
357357 out->page = 0xFF ;
358358 out->detail = 0xFF ;
359359 out->flags = 0 ;
360+ out->color = CVECTOR{ 255 };
360361
361362 *(uint*)&out->color = 0 ;
362363
@@ -495,6 +496,12 @@ int decode_poly(const char* polyList, dpoly_t* out, int forceType /*= -1*/)
495496 g_UnknownPolyTypes.append (ptype);
496497 }
497498 }
499+
500+ if (out->page == 255 )
501+ {
502+ out->flags &= ~FACE_TEXTURED;
503+ out->flags |= FACE_RGB;
504+ }
498505
499506 return PolySizes[*polyList & 0x1f ];
500507}
0 commit comments