- hitinfo.hitsect is gone.

This commit is contained in:
Christoph Oelckers 2021-11-24 23:54:37 +01:00
parent bcc61470a2
commit 270a443c88
2 changed files with 11 additions and 14 deletions

View file

@ -904,7 +904,7 @@ post_analyzesprites(spritetype* tsprite, int& spritesortcnt)
#endif #endif
void void
CircleCamera(int *nx, int *ny, int *nz, int *vsect, binangle *nang, fixed_t q16horiz) CircleCamera(int *nx, int *ny, int *nz, sectortype** vsect, binangle *nang, fixed_t q16horiz)
{ {
vec3_t n = { *nx, *ny, *nz }; vec3_t n = { *nx, *ny, *nz };
SPRITEp sp; SPRITEp sp;
@ -935,7 +935,7 @@ CircleCamera(int *nx, int *ny, int *nz, int *vsect, binangle *nang, fixed_t q16h
// Make sure sector passed to hitscan is correct // Make sure sector passed to hitscan is correct
//updatesector(*nx, *ny, vsect); //updatesector(*nx, *ny, vsect);
hitscan(&n, *vsect, vx, vy, vz, &hit_info, CLIPMASK_MISSILE); hitscan(&n, sectnum(*vsect), vx, vy, vz, &hit_info, CLIPMASK_MISSILE);
HITINFO hitinfo; hitinfo.set(&hit_info); HITINFO hitinfo; hitinfo.set(&hit_info);
sp->cstat = bakcstat; // Restore cstat sp->cstat = bakcstat; // Restore cstat
@ -949,7 +949,7 @@ CircleCamera(int *nx, int *ny, int *nz, int *vsect, binangle *nang, fixed_t q16h
{ {
if (hitinfo.wall()) // Push you a little bit off the wall if (hitinfo.wall()) // Push you a little bit off the wall
{ {
*vsect = hitinfo.hitsect; *vsect = hitinfo.sector();
daang = getangle(hitinfo.wall()->delta()); daang = getangle(hitinfo.wall()->delta());
@ -961,7 +961,7 @@ CircleCamera(int *nx, int *ny, int *nz, int *vsect, binangle *nang, fixed_t q16h
} }
else if (hitinfo.hitactor == nullptr) // Push you off the ceiling/floor else if (hitinfo.hitactor == nullptr) // Push you off the ceiling/floor
{ {
*vsect = hitinfo.hitsect; *vsect = hitinfo.sector();
if (abs(vx) > abs(vy)) if (abs(vx) > abs(vy))
hx -= (vx >> 5); hx -= (vx >> 5);
@ -1077,7 +1077,7 @@ void DrawCrosshair(PLAYERp pp)
} }
} }
void CameraView(PLAYERp pp, int *tx, int *ty, int *tz, int *tsectnum, binangle *tang, fixedhoriz *thoriz) void CameraView(PLAYERp pp, int *tx, int *ty, int *tz, sectortype** tsect, binangle *tang, fixedhoriz *thoriz)
{ {
binangle ang; binangle ang;
SPRITEp sp; SPRITEp sp;
@ -1118,7 +1118,7 @@ void CameraView(PLAYERp pp, int *tx, int *ty, int *tz, int *tsectnum, binangle *
{ {
case 1: case 1:
pp->last_camera_sp = sp; pp->last_camera_sp = sp;
CircleCamera(tx, ty, tz, tsectnum, tang, 0); CircleCamera(tx, ty, tz, tsect, tang, 0);
found_camera = true; found_camera = true;
break; break;
@ -1153,7 +1153,7 @@ void CameraView(PLAYERp pp, int *tx, int *ty, int *tz, int *tsectnum, binangle *
*tx = sp->x; *tx = sp->x;
*ty = sp->y; *ty = sp->y;
*tz = sp->z; *tz = sp->z;
*tsectnum = sp->sectnum; *tsect = sp->sector();
found_camera = true; found_camera = true;
break; break;
@ -1537,17 +1537,16 @@ drawscreen(PLAYERp pp, double smoothratio)
tang = bvectangbam(pp->sop_remote->xmid - tx, pp->sop_remote->ymid - ty); tang = bvectangbam(pp->sop_remote->xmid - tx, pp->sop_remote->ymid - ty);
} }
auto pSect = &sector[tsectnum];
if (TEST(pp->Flags, PF_VIEW_FROM_OUTSIDE)) if (TEST(pp->Flags, PF_VIEW_FROM_OUTSIDE))
{ {
tz -= 8448; tz -= 8448;
auto pSect = &sector[tsectnum];
if (!calcChaseCamPos(&tx, &ty, &tz, &pp->Actor()->s(), &pSect, tang, thoriz, smoothratio)) if (!calcChaseCamPos(&tx, &ty, &tz, &pp->Actor()->s(), &pSect, tang, thoriz, smoothratio))
{ {
tz += 8448; tz += 8448;
calcChaseCamPos(&tx, &ty, &tz, &pp->Actor()->s(), &pSect, tang, thoriz, smoothratio); calcChaseCamPos(&tx, &ty, &tz, &pp->Actor()->s(), &pSect, tang, thoriz, smoothratio);
} }
tsectnum = sectnum(pSect);
} }
else else
{ {
@ -1555,9 +1554,10 @@ drawscreen(PLAYERp pp, double smoothratio)
if (CameraTestMode) if (CameraTestMode)
{ {
CameraView(camerapp, &tx, &ty, &tz, &tsectnum, &tang, &thoriz); CameraView(camerapp, &tx, &ty, &tz, &pSect, &tang, &thoriz);
} }
} }
tsectnum = sectnum(pSect);
if (!TEST(pp->Flags, PF_VIEW_FROM_CAMERA|PF_VIEW_FROM_OUTSIDE)) if (!TEST(pp->Flags, PF_VIEW_FROM_CAMERA|PF_VIEW_FROM_OUTSIDE))
{ {

View file

@ -201,7 +201,6 @@ inline int Collision::setFromEngine(int value)
struct HITINFO { struct HITINFO {
DSWActor* hitactor; DSWActor* hitactor;
sectortype* hitSector; sectortype* hitSector;
int hitsect;
int hitwall; int hitwall;
short hitsprite; short hitsprite;
vec3_t pos; vec3_t pos;
@ -209,14 +208,13 @@ struct HITINFO {
void clearObj() void clearObj()
{ {
pos = {}; pos = {};
hitsect = hitwall = -1; hitwall = -1;
hitsprite = -1; hitsprite = -1;
hitactor = nullptr; hitactor = nullptr;
hitSector = nullptr; hitSector = nullptr;
} }
void set(hitdata_t* hit) void set(hitdata_t* hit)
{ {
hitsect = hit->sect;
hitSector = &::sector[hit->sect]; hitSector = &::sector[hit->sect];
hitwall = hit->wall; hitwall = hit->wall;
hitsprite = hit->sprite; hitsprite = hit->sprite;
@ -227,7 +225,6 @@ struct HITINFO {
void setSector(sectortype* sect) void setSector(sectortype* sect)
{ {
hitSector = sect; hitSector = sect;
hitsect = sectnum(sect);
} }
walltype* wall() const { return hitwall == -1? nullptr : &::wall[hitwall]; } walltype* wall() const { return hitwall == -1? nullptr : &::wall[hitwall]; }