About alpha codes....this is code from alpha version:
void GetZRange( SPRITE *pSprite, long *ceilZ, long *ceilHit, long *floorZ, long *floorHit,
int clipdist, char cliptype )
{
dassert(pSprite != NULL);
short oldcstat = pSprite->cstat;
pSprite->cstat &= ~kSpriteBlocking & ~kSpriteHitscan;
getzrange(pSprite->x, pSprite->y, pSprite->z, pSprite->sectnum,
ceilZ, ceilHit, floorZ, floorHit, clipdist, cliptype);
pSprite->cstat = oldcstat;
}
There is a code from v1.21
public static void GetZRange( SPRITE pSprite, int clipdist, int cliptype )
{
if(pSprite == null) dassert("pSprite != null");
short oldcstat = pSprite.cstat;
pSprite.cstat &= ~kSpriteBlocking & ~kSpriteHitscan;
getzrange(pSprite.x, pSprite.y, pSprite.z, pSprite.sectnum, clipdist, cliptype);
gz_ceilZ = zr_ceilz; gz_ceilHit = zr_ceilhit;
gz_floorZ = zr_florz; gz_floorHit = zr_florhit;
if ( (gz_floorHit & kHitTypeMask) == kHitSector ) {
int sectnum = gz_floorHit & kHitIndexMask;
if ( (cliptype & 0x2000) == 0 && (sector[sectnum].floorstat & 1) != 0 )
gz_floorZ = 0x7FFFFFFF;
int nXSector = sector[sectnum].extra;
if ( nXSector > 0 )
gz_floorZ += xsector[nXSector].Depth << 10;
int nUpper = gUpperLink[sectnum];
if ( nUpper >= 0 ) {
int nLower = sprite[nUpper].owner;
if(nLower >= 0) {
getzrange(pSprite.x + sprite[nLower].x - sprite[nUpper].x, pSprite.y + sprite[nLower].y - sprite[nUpper].y, pSprite.z + sprite[nLower].z - sprite[nUpper].z, sprite[nLower].sectnum, clipdist, cliptype);
gz_floorZ = zr_florz; gz_floorHit = zr_florhit;
gz_floorZ -= (sprite[nLower].z - sprite[nUpper].z);
}
}
}
if ( (gz_ceilHit & kHitTypeMask) == kHitSector ) {
int sectnum = gz_ceilHit & kHitIndexMask;
if ( (cliptype & 0x1000) == 0 && (sector[sectnum].ceilingstat & 1) != 0 )
gz_ceilZ = 0x80000000;
int nLower = gLowerLink[sectnum];
if ( nLower >= 0 ) {
int nUpper = sprite[nLower].owner;
if(nUpper >= 0) {
getzrange(pSprite.x + sprite[nUpper].x - sprite[nLower].x, pSprite.y + sprite[nUpper].y - sprite[nLower].y, pSprite.z + sprite[nUpper].z - sprite[nLower].z, sprite[nUpper].sectnum, clipdist, cliptype);
gz_ceilZ = zr_ceilz; gz_ceilHit = zr_ceilhit;
gz_ceilZ -= (sprite[nUpper].z - sprite[nLower].z);
}
}
}
pSprite.cstat = oldcstat;
}