Skip to content

Commit 04bbebd

Browse files
committed
- small routines update
1 parent 33f01cf commit 04bbebd

4 files changed

Lines changed: 29 additions & 27 deletions

File tree

DriverLevelTool/driver_routines/models.cpp

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
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
353352
int 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
}

DriverLevelTool/driver_routines/regions.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include "regions.h"
22

33
#include <string.h>
4-
#include <malloc.h>
54

65
#include "models.h"
76
#include "textures.h"
@@ -51,7 +50,7 @@ void CBaseLevelRegion::FreeAll()
5150
m_cellPointers = nullptr;
5251

5352
if (m_cellObjects)
54-
free(m_cellObjects);
53+
Memory::free(m_cellObjects);
5554
m_cellObjects = nullptr;
5655

5756
m_loaded = false;

DriverLevelTool/driver_routines/regions_d1.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
#include "core/IVirtualStream.h"
77
#include "math/isin.h"
88

9-
10-
#include <malloc.h>
11-
129
void CDriver1LevelRegion::FreeAll()
1310
{
1411
if (!m_loaded)
@@ -17,7 +14,7 @@ void CDriver1LevelRegion::FreeAll()
1714
CBaseLevelRegion::FreeAll();
1815

1916
if (m_cells)
20-
free(m_cells);
17+
Memory::free(m_cells);
2118
m_cells = nullptr;
2219

2320
delete[] m_roadMap;
@@ -78,12 +75,12 @@ void CDriver1LevelRegion::LoadRegionData(const SPOOL_CONTEXT& ctx)
7875
if (UnpackCellPointers(m_cellPointers, packed_cell_pointers, 0, 0) != -1)
7976
{
8077
// read cell data
81-
m_cells = (CELL_DATA_D1*)malloc(m_spoolInfo->cell_data_size[0] * SPOOL_CD_BLOCK_SIZE);
78+
m_cells = (CELL_DATA_D1*)Memory::alloc(m_spoolInfo->cell_data_size[0] * SPOOL_CD_BLOCK_SIZE);
8279
pFile->Seek(ctx.lumpInfo->spooled_offset + cellDataOffset * SPOOL_CD_BLOCK_SIZE, VS_SEEK_SET);
8380
pFile->Read(m_cells, m_spoolInfo->cell_data_size[0] * SPOOL_CD_BLOCK_SIZE, sizeof(char));
8481

8582
// read cell objects
86-
m_cellObjects = (CELL_OBJECT*)malloc(m_spoolInfo->cell_data_size[2] * SPOOL_CD_BLOCK_SIZE * 2);
83+
m_cellObjects = (CELL_OBJECT*)Memory::alloc(m_spoolInfo->cell_data_size[2] * SPOOL_CD_BLOCK_SIZE * 2);
8784
pFile->Seek(ctx.lumpInfo->spooled_offset + cellObjectsOffset * SPOOL_CD_BLOCK_SIZE, VS_SEEK_SET);
8885
pFile->Read(m_cellObjects, m_spoolInfo->cell_data_size[2] * SPOOL_CD_BLOCK_SIZE, sizeof(char));
8986
}
@@ -172,7 +169,7 @@ void CDriver1LevelMap::FreeAll()
172169
delete[] m_regions;
173170
m_regions = nullptr;
174171

175-
free(m_surfaceData);
172+
Memory::free(m_surfaceData);
176173
m_surfaceData = nullptr;
177174

178175
CBaseLevelMap::FreeAll();
@@ -225,7 +222,7 @@ void CDriver1LevelMap::LoadRoadSurfaceLump(IVirtualStream* pFile, int size)
225222
{
226223
int numSurfaces;
227224

228-
m_surfaceData = (char*)malloc(size);
225+
m_surfaceData = (char*)Memory::alloc(size);
229226
pFile->Read(m_surfaceData, 1, size);
230227

231228
// get the surface count

DriverLevelTool/driver_routines/regions_d2.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include "math/isin.h"
99
#include "math/ratan2.cpp"
1010

11-
#include <malloc.h>
1211
#include <string.h>
1312

1413
#define IS_STRAIGHT_SURFACE(surfid) (((surfid) > -1) && ((surfid) & 0xFFFFE000) == 0 && ((surfid) & 0x1FFF) < m_numStraights)
@@ -330,15 +329,15 @@ void CDriver2LevelRegion::FreeAll()
330329
CBaseLevelRegion::FreeAll();
331330

332331
if (m_cells)
333-
free(m_cells);
332+
Memory::free(m_cells);
334333
m_cells = nullptr;
335334

336335
if (m_packedCellObjects)
337-
free(m_packedCellObjects);
336+
Memory::free(m_packedCellObjects);
338337
m_packedCellObjects = nullptr;
339338

340339
if (m_pvsData)
341-
free(m_pvsData);
340+
Memory::free(m_pvsData);
342341
m_pvsData = nullptr;
343342
}
344343

@@ -400,12 +399,12 @@ void CDriver2LevelRegion::LoadRegionData(const SPOOL_CONTEXT& ctx)
400399
if (UnpackCellPointers(m_cellPointers, packed_cell_pointers, 0, 0) != -1)
401400
{
402401
// read cell data
403-
m_cells = (CELL_DATA*)malloc(m_spoolInfo->cell_data_size[0] * SPOOL_CD_BLOCK_SIZE);
402+
m_cells = (CELL_DATA*)Memory::alloc(m_spoolInfo->cell_data_size[0] * SPOOL_CD_BLOCK_SIZE);
404403
pFile->Seek(ctx.lumpInfo->spooled_offset + cellDataOffset * SPOOL_CD_BLOCK_SIZE, VS_SEEK_SET);
405404
pFile->Read(m_cells, m_spoolInfo->cell_data_size[0] * SPOOL_CD_BLOCK_SIZE, sizeof(char));
406405

407406
// read cell objects
408-
m_packedCellObjects = (PACKED_CELL_OBJECT*)malloc(m_spoolInfo->cell_data_size[2] * SPOOL_CD_BLOCK_SIZE);
407+
m_packedCellObjects = (PACKED_CELL_OBJECT*)Memory::alloc(m_spoolInfo->cell_data_size[2] * SPOOL_CD_BLOCK_SIZE);
409408
pFile->Seek(ctx.lumpInfo->spooled_offset + cellObjectsOffset * SPOOL_CD_BLOCK_SIZE, VS_SEEK_SET);
410409
pFile->Read(m_packedCellObjects, m_spoolInfo->cell_data_size[2] * SPOOL_CD_BLOCK_SIZE, sizeof(char));
411410
}
@@ -437,7 +436,7 @@ void CDriver2LevelRegion::UnpackAllCellObjects()
437436
int numCellObjects = (m_spoolInfo->cell_data_size[2] * SPOOL_CD_BLOCK_SIZE) / sizeof(PACKED_CELL_OBJECT);
438437

439438
// alloc and convert
440-
m_cellObjects = (CELL_OBJECT*)malloc(numCellObjects * sizeof(CELL_OBJECT));
439+
m_cellObjects = (CELL_OBJECT*)Memory::alloc(numCellObjects * sizeof(CELL_OBJECT));
441440
memset(m_cellObjects, 0, numCellObjects * sizeof(CELL_OBJECT));
442441

443442
const OUT_CELL_FILE_HEADER& mapInfo = owner->GetMapInfo();
@@ -480,7 +479,7 @@ void CDriver2LevelRegion::ReadHeightmapData(const SPOOL_CONTEXT& ctx)
480479
IVirtualStream* pFile = ctx.dataStream;
481480

482481
int pvsDataSize = 0;
483-
m_pvsData = (char*)malloc(m_spoolInfo->roadm_size * SPOOL_CD_BLOCK_SIZE);
482+
m_pvsData = (char*)Memory::alloc(m_spoolInfo->roadm_size * SPOOL_CD_BLOCK_SIZE);
484483

485484
if (m_owner->m_format == LEV_FORMAT_DRIVER2_RETAIL) // retail do have PVS data in the start
486485
pFile->Read(&pvsDataSize, 1, sizeof(int));

0 commit comments

Comments
 (0)