mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
Split P_LoadLineDefs2 into P_ProcessLinedefsWithSidedefs and P_CompressSidedefs
This commit is contained in:
parent
04dcc177ea
commit
06bcb74b37
1 changed files with 54 additions and 50 deletions
104
src/p_setup.c
104
src/p_setup.c
|
|
@ -1807,7 +1807,7 @@ static void P_LoadMapLUT(const virtres_t *virt)
|
||||||
P_CreateBlockMap();
|
P_CreateBlockMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void P_LoadLineDefs2(void)
|
static void P_ProcessLinedefsWithSidedefs(void)
|
||||||
{
|
{
|
||||||
size_t i = numlines;
|
size_t i = numlines;
|
||||||
register line_t *ld = lines;
|
register line_t *ld = lines;
|
||||||
|
|
@ -1846,67 +1846,69 @@ static void P_LoadLineDefs2(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Optimize sidedefs
|
static void P_CompressSidedefs(void)
|
||||||
if (M_CheckParm("-compress"))
|
{
|
||||||
|
side_t *newsides;
|
||||||
|
size_t numnewsides = 0;
|
||||||
|
size_t z;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < numsides; i++)
|
||||||
{
|
{
|
||||||
side_t *newsides;
|
size_t j, k;
|
||||||
size_t numnewsides = 0;
|
line_t *ld;
|
||||||
size_t z;
|
|
||||||
|
|
||||||
for (i = 0; i < numsides; i++)
|
if (!sides[i].sector)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (k = numlines, ld = lines; k--; ld++)
|
||||||
{
|
{
|
||||||
size_t j, k;
|
if (ld->sidenum[0] == i)
|
||||||
if (sides[i].sector == NULL)
|
ld->sidenum[0] = (UINT16)numnewsides;
|
||||||
|
|
||||||
|
if (ld->sidenum[1] == i)
|
||||||
|
ld->sidenum[1] = (UINT16)numnewsides;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = i + 1; j < numsides; j++)
|
||||||
|
{
|
||||||
|
if (!sides[j].sector)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (k = numlines, ld = lines; k--; ld++)
|
if (!memcmp(&sides[i], &sides[j], sizeof(side_t)))
|
||||||
{
|
{
|
||||||
if (ld->sidenum[0] == i)
|
// Find the linedefs that belong to this one
|
||||||
ld->sidenum[0] = (UINT16)numnewsides;
|
for (k = numlines, ld = lines; k--; ld++)
|
||||||
|
|
||||||
if (ld->sidenum[1] == i)
|
|
||||||
ld->sidenum[1] = (UINT16)numnewsides;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (j = i+1; j < numsides; j++)
|
|
||||||
{
|
|
||||||
if (sides[j].sector == NULL)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!memcmp(&sides[i], &sides[j], sizeof(side_t)))
|
|
||||||
{
|
{
|
||||||
// Find the linedefs that belong to this one
|
if (ld->sidenum[0] == j)
|
||||||
for (k = numlines, ld = lines; k--; ld++)
|
ld->sidenum[0] = (UINT16)numnewsides;
|
||||||
{
|
|
||||||
if (ld->sidenum[0] == j)
|
|
||||||
ld->sidenum[0] = (UINT16)numnewsides;
|
|
||||||
|
|
||||||
if (ld->sidenum[1] == j)
|
if (ld->sidenum[1] == j)
|
||||||
ld->sidenum[1] = (UINT16)numnewsides;
|
ld->sidenum[1] = (UINT16)numnewsides;
|
||||||
}
|
|
||||||
sides[j].sector = NULL; // Flag for deletion
|
|
||||||
}
|
}
|
||||||
|
sides[j].sector = NULL; // Flag for deletion
|
||||||
}
|
}
|
||||||
numnewsides++;
|
|
||||||
}
|
}
|
||||||
|
numnewsides++;
|
||||||
// We're loading crap into this block anyhow, so no point in zeroing it out.
|
|
||||||
newsides = Z_Malloc(numnewsides * sizeof(*newsides), PU_LEVEL, NULL);
|
|
||||||
|
|
||||||
// Copy the sides to their new block of memory.
|
|
||||||
for (i = 0, z = 0; i < numsides; i++)
|
|
||||||
{
|
|
||||||
if (sides[i].sector != NULL)
|
|
||||||
M_Memcpy(&newsides[z++], &sides[i], sizeof(side_t));
|
|
||||||
}
|
|
||||||
|
|
||||||
CONS_Debug(DBG_SETUP, "Old sides is %s, new sides is %s\n", sizeu1(numsides), sizeu1(numnewsides));
|
|
||||||
|
|
||||||
Z_Free(sides);
|
|
||||||
sides = newsides;
|
|
||||||
numsides = numnewsides;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We're loading crap into this block anyhow, so no point in zeroing it out.
|
||||||
|
newsides = Z_Malloc(numnewsides*sizeof(*newsides), PU_LEVEL, NULL);
|
||||||
|
|
||||||
|
// Copy the sides to their new block of memory.
|
||||||
|
for (i = 0, z = 0; i < numsides; i++)
|
||||||
|
{
|
||||||
|
if (sides[i].sector)
|
||||||
|
M_Memcpy(&newsides[z++], &sides[i], sizeof(side_t));
|
||||||
|
}
|
||||||
|
|
||||||
|
CONS_Debug(DBG_SETUP, "P_CompressSidedefs: Old sides is %s, new sides is %s\n", sizeu1(numsides), sizeu1(numnewsides));
|
||||||
|
|
||||||
|
Z_Free(sides);
|
||||||
|
sides = newsides;
|
||||||
|
numsides = numnewsides;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -2066,7 +2068,9 @@ static void P_LoadMapFromFile(void)
|
||||||
P_LoadMapBSP(virt);
|
P_LoadMapBSP(virt);
|
||||||
P_LoadMapLUT(virt);
|
P_LoadMapLUT(virt);
|
||||||
|
|
||||||
P_LoadLineDefs2();
|
P_ProcessLinedefsWithSidedefs();
|
||||||
|
if (M_CheckParm("-compress"))
|
||||||
|
P_CompressSidedefs();
|
||||||
P_GroupLines();
|
P_GroupLines();
|
||||||
|
|
||||||
P_MakeMapMD5(virt, &mapmd5);
|
P_MakeMapMD5(virt, &mapmd5);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue