mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-07 15:31:11 +00:00
- eliminated the getzrange wrapper.
This commit is contained in:
parent
2541425b9d
commit
bcc532d36f
3 changed files with 22 additions and 28 deletions
|
@ -371,8 +371,8 @@ void setVideoMode();
|
||||||
class F2DDrawer;
|
class F2DDrawer;
|
||||||
|
|
||||||
|
|
||||||
void getzrange_(const vec3_t *pos, int16_t sectnum, int32_t *ceilz, CollisionBase& ceilhit, int32_t *florz,
|
void getzrange(const vec3_t& pos, sectortype* sect, int32_t* ceilz, CollisionBase& ceilhit, int32_t* florz,
|
||||||
CollisionBase& florhit, int32_t walldist, uint32_t cliptype) ATTRIBUTE((nonnull(1,3,4,5,6)));
|
CollisionBase& florhit, int32_t walldist, uint32_t cliptype);
|
||||||
|
|
||||||
extern vec2_t hitscangoal;
|
extern vec2_t hitscangoal;
|
||||||
|
|
||||||
|
|
|
@ -941,11 +941,10 @@ int pushmove_(vec3_t *const vect, int *const sectnum,
|
||||||
//
|
//
|
||||||
// getzrange
|
// getzrange
|
||||||
//
|
//
|
||||||
void getzrange_(const vec3_t *pos, int16_t sectnum,
|
|
||||||
int32_t *ceilz, CollisionBase& ceilhit, int32_t *florz, CollisionBase& florhit,
|
void getzrange(const vec3_t& pos, sectortype* sect, int32_t* ceilz, CollisionBase& ceilhit, int32_t* florz, CollisionBase& florhit, int32_t walldist, uint32_t cliptype)
|
||||||
int32_t walldist, uint32_t cliptype)
|
|
||||||
{
|
{
|
||||||
if (sectnum < 0)
|
if (sect == nullptr)
|
||||||
{
|
{
|
||||||
*ceilz = INT32_MIN; ceilhit.setVoid();
|
*ceilz = INT32_MIN; ceilhit.setVoid();
|
||||||
*florz = INT32_MAX; florhit.setVoid();
|
*florz = INT32_MAX; florhit.setVoid();
|
||||||
|
@ -958,19 +957,20 @@ void getzrange_(const vec3_t *pos, int16_t sectnum,
|
||||||
|
|
||||||
//Extra walldist for sprites on sector lines
|
//Extra walldist for sprites on sector lines
|
||||||
const int32_t extradist = walldist+MAXCLIPDIST+1;
|
const int32_t extradist = walldist+MAXCLIPDIST+1;
|
||||||
const int32_t xmin = pos->x-extradist, ymin = pos->y-extradist;
|
const int32_t xmin = pos.x-extradist, ymin = pos.y-extradist;
|
||||||
const int32_t xmax = pos->x+extradist, ymax = pos->y+extradist;
|
const int32_t xmax = pos.x+extradist, ymax = pos.y+extradist;
|
||||||
|
|
||||||
const int32_t dawalclipmask = (cliptype&65535);
|
const int32_t dawalclipmask = (cliptype&65535);
|
||||||
const int32_t dasprclipmask = (cliptype >> 16);
|
const int32_t dasprclipmask = (cliptype >> 16);
|
||||||
|
|
||||||
vec2_t closest = pos->vec2;
|
vec2_t closest = pos.vec2;
|
||||||
|
int sectnum = ::sectnum(sect);
|
||||||
if (enginecompatibility_mode == ENGINECOMPATIBILITY_NONE)
|
if (enginecompatibility_mode == ENGINECOMPATIBILITY_NONE)
|
||||||
getsectordist(closest, sectnum, &closest);
|
getsectordist(closest, sectnum, &closest);
|
||||||
else
|
else
|
||||||
getzsofslope(sectnum,closest.x,closest.y,ceilz,florz);
|
getzsofslopeptr(sect,closest.x,closest.y,ceilz,florz);
|
||||||
ceilhit.setSector(sectnum);
|
ceilhit.setSector(sect);
|
||||||
florhit.setSector(sectnum);
|
florhit.setSector(sect);
|
||||||
|
|
||||||
clipsectorlist[0] = sectnum;
|
clipsectorlist[0] = sectnum;
|
||||||
clipsectnum = 1;
|
clipsectnum = 1;
|
||||||
|
@ -1000,7 +1000,7 @@ void getzrange_(const vec3_t *pos, int16_t sectnum,
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
vec2_t const d = { v2.x-v1.x, v2.y-v1.y };
|
vec2_t const d = { v2.x-v1.x, v2.y-v1.y };
|
||||||
if (d.x*(pos->y-v1.y) < (pos->x-v1.x)*d.y) continue; //back
|
if (d.x*(pos.y-v1.y) < (pos.x-v1.x)*d.y) continue; //back
|
||||||
|
|
||||||
vec2_t da = { (d.x > 0) ? d.x*(ymin-v1.y) : d.x*(ymax-v1.y),
|
vec2_t da = { (d.x > 0) ? d.x*(ymin-v1.y) : d.x*(ymax-v1.y),
|
||||||
(d.y > 0) ? d.y*(xmax-v1.x) : d.y*(xmin-v1.x) };
|
(d.y > 0) ? d.y*(xmax-v1.x) : d.y*(xmin-v1.x) };
|
||||||
|
@ -1011,8 +1011,8 @@ void getzrange_(const vec3_t *pos, int16_t sectnum,
|
||||||
if (wall[j].cstat&dawalclipmask) continue; // XXX?
|
if (wall[j].cstat&dawalclipmask) continue; // XXX?
|
||||||
auto const sec = (usectorptr_t)§or[k];
|
auto const sec = (usectorptr_t)§or[k];
|
||||||
|
|
||||||
if (((sec->ceilingstat&1) == 0) && (pos->z <= sec->ceilingz+(3<<8))) continue;
|
if (((sec->ceilingstat&1) == 0) && (pos.z <= sec->ceilingz+(3<<8))) continue;
|
||||||
if (((sec->floorstat&1) == 0) && (pos->z >= sec->floorz-(3<<8))) continue;
|
if (((sec->floorstat&1) == 0) && (pos.z >= sec->floorz-(3<<8))) continue;
|
||||||
|
|
||||||
if (bitmap_test(clipsectormap, k) == 0)
|
if (bitmap_test(clipsectormap, k) == 0)
|
||||||
addclipsect(k);
|
addclipsect(k);
|
||||||
|
@ -1029,7 +1029,7 @@ void getzrange_(const vec3_t *pos, int16_t sectnum,
|
||||||
continue;
|
continue;
|
||||||
//It actually got here, through all the continue's!!!
|
//It actually got here, through all the continue's!!!
|
||||||
int32_t daz = 0, daz2 = 0;
|
int32_t daz = 0, daz2 = 0;
|
||||||
closest = pos->vec2;
|
closest = pos.vec2;
|
||||||
if (enginecompatibility_mode == ENGINECOMPATIBILITY_NONE)
|
if (enginecompatibility_mode == ENGINECOMPATIBILITY_NONE)
|
||||||
getsectordist(closest, k, &closest);
|
getsectordist(closest, k, &closest);
|
||||||
else
|
else
|
||||||
|
@ -1073,7 +1073,7 @@ void getzrange_(const vec3_t *pos, int16_t sectnum,
|
||||||
case CSTAT_SPRITE_ALIGNMENT_FACING:
|
case CSTAT_SPRITE_ALIGNMENT_FACING:
|
||||||
{
|
{
|
||||||
int32_t k = walldist+(spr->clipdist<<2)+1;
|
int32_t k = walldist+(spr->clipdist<<2)+1;
|
||||||
if ((abs(v1.x-pos->x) <= k) && (abs(v1.y-pos->y) <= k))
|
if ((abs(v1.x-pos.x) <= k) && (abs(v1.y-pos.y) <= k))
|
||||||
{
|
{
|
||||||
daz = spr->z + spriteheightofsptr(spr, &k, 1);
|
daz = spr->z + spriteheightofsptr(spr, &k, 1);
|
||||||
daz2 = daz - k;
|
daz2 = daz - k;
|
||||||
|
@ -1087,7 +1087,7 @@ void getzrange_(const vec3_t *pos, int16_t sectnum,
|
||||||
vec2_t v2;
|
vec2_t v2;
|
||||||
get_wallspr_points(spr, &v1.x, &v2.x, &v1.y, &v2.y);
|
get_wallspr_points(spr, &v1.x, &v2.x, &v1.y, &v2.y);
|
||||||
|
|
||||||
if (clipinsideboxline(pos->x,pos->y,v1.x,v1.y,v2.x,v2.y,walldist+1) != 0)
|
if (clipinsideboxline(pos.x,pos.y,v1.x,v1.y,v2.x,v2.y,walldist+1) != 0)
|
||||||
{
|
{
|
||||||
int32_t k;
|
int32_t k;
|
||||||
daz = spr->z + spriteheightofsptr(spr, &k, 1);
|
daz = spr->z + spriteheightofsptr(spr, &k, 1);
|
||||||
|
@ -1101,11 +1101,11 @@ void getzrange_(const vec3_t *pos, int16_t sectnum,
|
||||||
{
|
{
|
||||||
daz = spr->z; daz2 = daz;
|
daz = spr->z; daz2 = daz;
|
||||||
|
|
||||||
if ((cstat&64) != 0 && (pos->z > daz) == ((cstat&8)==0))
|
if ((cstat&64) != 0 && (pos.z > daz) == ((cstat&8)==0))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
vec2_t v2, v3, v4;
|
vec2_t v2, v3, v4;
|
||||||
get_floorspr_points((uspriteptr_t) spr, pos->x, pos->y, &v1.x, &v2.x, &v3.x, &v4.x,
|
get_floorspr_points((uspriteptr_t) spr, pos.x, pos.y, &v1.x, &v2.x, &v3.x, &v4.x,
|
||||||
&v1.y, &v2.y, &v3.y, &v4.y);
|
&v1.y, &v2.y, &v3.y, &v4.y);
|
||||||
|
|
||||||
vec2_t const da = { MulScale(bcos(spr->ang - 256), walldist + 4, 14),
|
vec2_t const da = { MulScale(bcos(spr->ang - 256), walldist + 4, 14),
|
||||||
|
@ -1121,13 +1121,13 @@ void getzrange_(const vec3_t *pos, int16_t sectnum,
|
||||||
|
|
||||||
if (clipyou != 0)
|
if (clipyou != 0)
|
||||||
{
|
{
|
||||||
if ((pos->z > daz) && (daz > *ceilz))
|
if ((pos.z > daz) && (daz > *ceilz))
|
||||||
{
|
{
|
||||||
*ceilz = daz;
|
*ceilz = daz;
|
||||||
ceilhit.setSprite(actor);
|
ceilhit.setSprite(actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pos->z < daz2) && (daz2 < *florz))
|
if ((pos.z < daz2) && (daz2 < *florz))
|
||||||
{
|
{
|
||||||
*florz = daz2;
|
*florz = daz2;
|
||||||
florhit.setSprite(actor);
|
florhit.setSprite(actor);
|
||||||
|
|
|
@ -319,12 +319,6 @@ inline int clipmove(vec3_t& pos, sectortype** const sect, int xvect, int yvect,
|
||||||
return result.type;
|
return result.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void getzrange(const vec3_t& pos, sectortype* sect, int32_t* ceilz, CollisionBase& ceilhit, int32_t* florz,
|
|
||||||
CollisionBase& florhit, int32_t walldist, uint32_t cliptype)
|
|
||||||
{
|
|
||||||
getzrange_(&pos, sector.IndexOf(sect), ceilz, ceilhit, florz, florhit, walldist, cliptype);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline int pushmove(vec3_t* const vect, sectortype** const sect, int32_t const walldist, int32_t const ceildist, int32_t const flordist,
|
inline int pushmove(vec3_t* const vect, sectortype** const sect, int32_t const walldist, int32_t const ceildist, int32_t const flordist,
|
||||||
uint32_t const cliptype, bool clear = true)
|
uint32_t const cliptype, bool clear = true)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue