mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-12-01 00:21:43 +00:00
- Fixed closed doors between the front sector's floor and ceiling the right way.
I was just missing a non-null texture check. - Removed references to texturewidthmask. What was that? SVN r244 (trunk)
This commit is contained in:
parent
133a035c76
commit
0b3730392c
6 changed files with 18 additions and 45 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
July 10, 2006
|
||||||
|
- Fixed closed doors between the front sector's floor and ceiling the right way.
|
||||||
|
I was just missing a non-null texture check.
|
||||||
|
- Removed references to texturewidthmask. What was that?
|
||||||
|
|
||||||
July 10, 2006 (Changes by Graf Zahl)
|
July 10, 2006 (Changes by Graf Zahl)
|
||||||
- Fixed: The earthquake code needs to check whether a quake's spot is still valid.
|
- Fixed: The earthquake code needs to check whether a quake's spot is still valid.
|
||||||
Super Sonic Doom crashed due to this.
|
Super Sonic Doom crashed due to this.
|
||||||
|
|
|
@ -161,6 +161,7 @@ const PClass *PClass::FindClass (FName zaname)
|
||||||
DObject *PClass::CreateNew () const
|
DObject *PClass::CreateNew () const
|
||||||
{
|
{
|
||||||
BYTE *mem = (BYTE *)M_Malloc (Size);
|
BYTE *mem = (BYTE *)M_Malloc (Size);
|
||||||
|
assert (mem != NULL);
|
||||||
|
|
||||||
// Set this object's defaults before constructing it.
|
// Set this object's defaults before constructing it.
|
||||||
if (Defaults!=NULL)
|
if (Defaults!=NULL)
|
||||||
|
|
|
@ -748,23 +748,15 @@ void R_AddLine (seg_t *line)
|
||||||
{
|
{
|
||||||
solid = true;
|
solid = true;
|
||||||
}
|
}
|
||||||
// [RH] Check for completely closed back sector. This worked in
|
|
||||||
// 1.22, so I assume I accidentally broke it when I added slopes.
|
|
||||||
else if (rw_backcz1 <= rw_backfz1 && rw_backcz2 <= rw_backfz2)
|
|
||||||
{
|
|
||||||
solid = true;
|
|
||||||
doorclosed = true;
|
|
||||||
}
|
|
||||||
else if (
|
else if (
|
||||||
(backsector->ceilingpic != skyflatnum ||
|
// properly render skies (consider door "open" if both ceilings are sky):
|
||||||
frontsector->ceilingpic != skyflatnum)
|
(backsector->ceilingpic != skyflatnum || frontsector->ceilingpic != skyflatnum)
|
||||||
|
|
||||||
// if door is closed because back is shut:
|
// if door is closed because back is shut:
|
||||||
&& rw_backcz1 <= rw_backfz1 && rw_backcz2 <= rw_backfz2
|
&& rw_backcz1 <= rw_backfz1 && rw_backcz2 <= rw_backfz2
|
||||||
|
|
||||||
// preserve a kind of transparent door/lift special effect:
|
// preserve a kind of transparent door/lift special effect:
|
||||||
&& rw_backcz1 >= rw_frontcz1 && rw_backcz2 >= rw_frontcz2
|
&& ((rw_backcz1 >= rw_frontcz1 && rw_backcz2 >= rw_frontcz2) || line->sidedef->toptexture != 0)
|
||||||
|
|
||||||
&& ((rw_backfz1 <= rw_frontfz1 && rw_backfz2 <= rw_frontfz2) || line->sidedef->bottomtexture != 0))
|
&& ((rw_backfz1 <= rw_frontfz1 && rw_backfz2 <= rw_frontfz2) || line->sidedef->bottomtexture != 0))
|
||||||
{
|
{
|
||||||
// killough 1/18/98 -- This function is used to fix the automap bug which
|
// killough 1/18/98 -- This function is used to fix the automap bug which
|
||||||
|
|
|
@ -632,6 +632,9 @@ visplane_t *R_CheckPlane (visplane_t *pl, int start, int stop)
|
||||||
int unionl, unionh;
|
int unionl, unionh;
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
|
assert (start >= 0 && start < viewwidth);
|
||||||
|
assert (stop >= start && stop < viewwidth);
|
||||||
|
|
||||||
if (start < pl->minx)
|
if (start < pl->minx)
|
||||||
{
|
{
|
||||||
intrl = pl->minx;
|
intrl = pl->minx;
|
||||||
|
|
|
@ -384,8 +384,6 @@ clearfog:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int *texturewidthmask;
|
|
||||||
|
|
||||||
// prevlineasm1 is like vlineasm1 but skips the loop if only drawing one pixel
|
// prevlineasm1 is like vlineasm1 but skips the loop if only drawing one pixel
|
||||||
inline fixed_t prevline1 (fixed_t vince, byte *colormap, int count, fixed_t vplce, const byte *bufplce, byte *dest)
|
inline fixed_t prevline1 (fixed_t vince, byte *colormap, int count, fixed_t vplce, const byte *bufplce, byte *dest)
|
||||||
{
|
{
|
||||||
|
@ -398,36 +396,6 @@ inline fixed_t prevline1 (fixed_t vince, byte *colormap, int count, fixed_t vplc
|
||||||
return doprevline1 ();
|
return doprevline1 ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
esp+00 = edi
|
|
||||||
esp+04 = ebx
|
|
||||||
esp+08 = esi
|
|
||||||
esp+0c = ebp
|
|
||||||
esp+13 = bad
|
|
||||||
esp+14 = light
|
|
||||||
esp+18 = &uwal[x]
|
|
||||||
esp+1c = &lwal[x]
|
|
||||||
esp+20 = x2
|
|
||||||
esp+24 = &dwal[x]
|
|
||||||
esp+28 =
|
|
||||||
esp+2c = xoffset
|
|
||||||
esp+30 = yrepeat
|
|
||||||
esp+34 = texturemid
|
|
||||||
esp+40 = y1ve[]
|
|
||||||
esp+50 = y2ve[]
|
|
||||||
esp+54 =
|
|
||||||
esp+58 =
|
|
||||||
esp+5c =
|
|
||||||
esp+60 = <return address>
|
|
||||||
esp+64 = uwal
|
|
||||||
esp+68 = dwal
|
|
||||||
esp+6c = swal
|
|
||||||
esp+70 = lwal
|
|
||||||
esp+74 = getcol
|
|
||||||
esi = x
|
|
||||||
ebp = x2
|
|
||||||
*/
|
|
||||||
|
|
||||||
void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t *lwal,
|
void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t *lwal,
|
||||||
const BYTE *(*getcol)(FTexture *tex, int x))
|
const BYTE *(*getcol)(FTexture *tex, int x))
|
||||||
{
|
{
|
||||||
|
@ -474,6 +442,8 @@ void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t
|
||||||
y1ve[0] = uwal[x];//max(uwal[x],umost[x]);
|
y1ve[0] = uwal[x];//max(uwal[x],umost[x]);
|
||||||
y2ve[0] = dwal[x];//min(dwal[x],dmost[x]);
|
y2ve[0] = dwal[x];//min(dwal[x],dmost[x]);
|
||||||
if (y2ve[0] <= y1ve[0]) continue;
|
if (y2ve[0] <= y1ve[0]) continue;
|
||||||
|
assert (y1ve[0] < viewheight);
|
||||||
|
assert (y2ve[0] <= viewheight);
|
||||||
|
|
||||||
if (!fixedcolormap)
|
if (!fixedcolormap)
|
||||||
{ // calculate lighting
|
{ // calculate lighting
|
||||||
|
@ -497,6 +467,8 @@ void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t
|
||||||
y1ve[z] = uwal[x+z];//max(uwal[x+z],umost[x+z]);
|
y1ve[z] = uwal[x+z];//max(uwal[x+z],umost[x+z]);
|
||||||
y2ve[z] = dwal[x+z];//min(dwal[x+z],dmost[x+z])-1;
|
y2ve[z] = dwal[x+z];//min(dwal[x+z],dmost[x+z])-1;
|
||||||
if (y2ve[z] <= y1ve[z]) { bad += 1<<z; continue; }
|
if (y2ve[z] <= y1ve[z]) { bad += 1<<z; continue; }
|
||||||
|
assert (y1ve[z] < viewheight);
|
||||||
|
assert (y2ve[z] <= viewheight);
|
||||||
|
|
||||||
bufplce[z] = getcol (rw_pic, (lwal[x+z] + xoffset) >> FRACBITS);
|
bufplce[z] = getcol (rw_pic, (lwal[x+z] + xoffset) >> FRACBITS);
|
||||||
vince[z] = swal[x+z] * yrepeat;
|
vince[z] = swal[x+z] * yrepeat;
|
||||||
|
@ -563,6 +535,8 @@ void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t
|
||||||
y1ve[0] = uwal[x];//max(uwal[x],umost[x]);
|
y1ve[0] = uwal[x];//max(uwal[x],umost[x]);
|
||||||
y2ve[0] = dwal[x];//min(dwal[x],dmost[x]);
|
y2ve[0] = dwal[x];//min(dwal[x],dmost[x]);
|
||||||
if (y2ve[0] <= y1ve[0]) continue;
|
if (y2ve[0] <= y1ve[0]) continue;
|
||||||
|
assert (y1ve[0] < viewheight);
|
||||||
|
assert (y2ve[0] <= viewheight);
|
||||||
|
|
||||||
if (!fixedcolormap)
|
if (!fixedcolormap)
|
||||||
{ // calculate lighting
|
{ // calculate lighting
|
||||||
|
|
|
@ -36,8 +36,6 @@
|
||||||
#include "v_text.h"
|
#include "v_text.h"
|
||||||
#include "gi.h"
|
#include "gi.h"
|
||||||
|
|
||||||
extern int *texturewidthmask;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// sky mapping
|
// sky mapping
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue