From 98a66204b9d264295126f7d9856917052417e656 Mon Sep 17 00:00:00 2001 From: viciious Date: Sun, 10 Dec 2023 14:11:23 +0300 Subject: [PATCH] Merge side and ofset in seg_t --- p_setup.c | 9 ++++++--- p_sight.c | 2 +- r_local.h | 5 ++--- r_phase1.c | 11 ++++++----- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/p_setup.c b/p_setup.c index 058e9fa0f4..32ab7e3234 100644 --- a/p_setup.c +++ b/p_setup.c @@ -110,13 +110,16 @@ void P_LoadSegs (int lump) li->angle = LITTLESHORT(ml->angle); angle = LITTLESHORT(ml->angle)<<16; - li->offset = LITTLESHORT(ml->offset); + li->sideoffset = LITTLESHORT(ml->offset); linedef = LITTLESHORT(ml->linedef); li->linedef = linedef; ldef = &lines[linedef]; side = LITTLESHORT(ml->side); - li->side = side; + side &= 1; + + li->sideoffset <<= 1; + li->sideoffset |= side; if (ldef->v1 == li->v1) ldef->fineangle = angle >> ANGLETOFINESHIFT; @@ -526,7 +529,7 @@ void P_GroupLines (void) seg = &segs[ss->firstline]; linedef = &lines[seg->linedef]; - sidedef = &sides[linedef->sidenum[seg->side]]; + sidedef = &sides[linedef->sidenum[seg->sideoffset & 1]]; ss->sector = §ors[sidedef->sector]; } diff --git a/p_sight.c b/p_sight.c index 9dcb6a30ea..69ded44055 100644 --- a/p_sight.c +++ b/p_sight.c @@ -226,7 +226,7 @@ static boolean PS_CrossSubsector(sightWork_t *sw, int num) return false; // crosses a two sided line - side = seg->side; + side = seg->sideoffset & 1; front = §ors[sides[line->sidenum[side]].sector]; back = §ors[sides[line->sidenum[side^1]].sector]; diff --git a/r_local.h b/r_local.h index 619e690799..acf420cb8c 100644 --- a/r_local.h +++ b/r_local.h @@ -120,10 +120,9 @@ typedef struct subsector_s typedef struct seg_s { - VINT side; - VINT v1, v2; + VINT v1, v2; VINT angle; - VINT offset; + VINT sideoffset; VINT linedef; } seg_t; diff --git a/r_phase1.c b/r_phase1.c index e8b4c5907f..3eaabf41dc 100644 --- a/r_phase1.c +++ b/r_phase1.c @@ -185,13 +185,14 @@ static void R_WallEarlyPrep(viswall_t* segl, fixed_t *floorheight, int b_texturemid, t_texturemid; boolean skyhack; int actionbits; - int side; + int side, offset; { seg = segl->seg; li = &lines[seg->linedef]; - side = seg->side; - si = &sides[li->sidenum[seg->side]]; + side = seg->sideoffset & 1; + offset = seg->sideoffset >> 1; + si = &sides[li->sidenum[side]]; li->flags |= ML_MAPPED; // mark as seen @@ -346,7 +347,7 @@ static void R_WallEarlyPrep(viswall_t* segl, fixed_t *floorheight, segl->t_texturemid = t_texturemid; segl->b_texturemid = b_texturemid; segl->seglightlevel = (lightshift << 8) | f_lightlevel; - segl->offset = ((fixed_t)si->textureoffset + seg->offset) << 16; + segl->offset = ((fixed_t)si->textureoffset + offset) << 16; } } @@ -528,7 +529,7 @@ static void R_AddLine(rbspWork_t *rbsp, sector_t *frontsector, seg_t *line) x1 = x1 >> 16; // decide which clip routine to use - side = line->side; + side = line->sideoffset & 1; ldef = &lines[line->linedef]; backsector = (ldef->flags & ML_TWOSIDED) ? §ors[sides[ldef->sidenum[side^1]].sector] : 0; sidedef = &sides[ldef->sidenum[side]];