- more int_ppos

This commit is contained in:
Christoph Oelckers 2022-08-20 12:21:41 +02:00
parent 8e966fc575
commit 5db79fecd7
11 changed files with 59 additions and 57 deletions

View file

@ -1023,9 +1023,9 @@ FString GameInterface::GetCoordString()
{
PLAYER* pp = Player + myconnectindex;
FString out;
out.AppendFormat("POSX:%d ", pp->__int_ppos.X);
out.AppendFormat("POSY:%d ", pp->__int_ppos.Y);
out.AppendFormat("POSZ:%d ", pp->__int_ppos.Z);
out.AppendFormat("POSX:%d ", pp->int_ppos().X);
out.AppendFormat("POSY:%d ", pp->int_ppos().Y);
out.AppendFormat("POSZ:%d ", pp->int_ppos().Z);
out.AppendFormat("ANG:%d\n", pp->angle.ang.Buildang());
return out;
@ -1383,9 +1383,9 @@ void drawscreen(PLAYER* pp, double smoothratio, bool sceneonly)
else
camerapp = pp;
tx = interpolatedvalue(camerapp->__int_popos.X, camerapp->__int_ppos.X, sr);
ty = interpolatedvalue(camerapp->__int_popos.Y, camerapp->__int_ppos.Y, sr);
tz = interpolatedvalue(camerapp->__int_popos.Z, camerapp->__int_ppos.Z, sr);
tx = interpolatedvalue(camerapp->__int_popos.X, camerapp->int_ppos().X, sr);
ty = interpolatedvalue(camerapp->__int_popos.Y, camerapp->int_ppos().Y, sr);
tz = interpolatedvalue(camerapp->__int_popos.Z, camerapp->int_ppos().Z, sr);
// Interpolate the player's angle while on a sector object, just like VoidSW.
// This isn't needed for the turret as it was fixable, but moving sector objects are problematic.

View file

@ -403,7 +403,9 @@ void InitLevel(MapRecord *maprec)
currentLevel = maprec;
int cursect;
SpawnSpriteDef sprites;
loadMap(maprec->fileName, SW_SHAREWARE ? 1 : 0, &Player[0].__int_ppos, &ang, &cursect, sprites);
vec3_t ppos;
loadMap(maprec->fileName, SW_SHAREWARE ? 1 : 0, &ppos, &ang, &cursect, sprites);
Player[0].__int_ppos = ppos;
spawnactors(sprites);
Player[0].cursector = &sector[cursect];

View file

@ -429,8 +429,8 @@ JS_ProcessEchoSpot()
{
dist = 0x7fffffff;
j = abs(actor->int_pos().X - pp->__int_ppos.X);
j += abs(actor->int_pos().Y - pp->__int_ppos.Y);
j = abs(actor->int_pos().X - pp->int_ppos().X);
j += abs(actor->int_pos().Y - pp->int_ppos().Y);
if (j < dist)
dist = j;
@ -626,7 +626,7 @@ void JS_DrawCameras(PLAYER* pp, int tx, int ty, int tz, double smoothratio)
if (TEST_BOOL11(camactor) && numplayers > 1)
{
drawroomstotile(cp->__int_ppos.X, cp->__int_ppos.Y, cp->__int_ppos.Z, cp->angle.ang, cp->horizon.horiz, cp->cursector, mirror[cnt].campic, smoothratio);
drawroomstotile(cp->int_ppos().X, cp->int_ppos().Y, cp->int_ppos().Z, cp->angle.ang, cp->horizon.horiz, cp->cursector, mirror[cnt].campic, smoothratio);
}
else
{

View file

@ -277,7 +277,7 @@ short RectClipTurn(PLAYER* pp, short new_ang, int *qx, int *qy, int *ox, int *oy
for (i = 0; i < 4; i++)
{
vec2_t const p = { ox[i], oy[i] };
rotatepoint(pp->__int_ppos.vec2, p, rot_ang, &xy[i]);
rotatepoint(pp->int_ppos().vec2, p, rot_ang, &xy[i]);
// cannot use sop->xmid and ymid because the SO is off the map at this point
//rotatepoint(&sop->xmid, p, rot_ang, &xy[i]);
}

View file

@ -1186,7 +1186,7 @@ DSWActor* DoPickTarget(DSWActor* actor, uint32_t max_delta_ang, int skip_targets
continue;
if (actor->hasU() && actor->user.PlayerP)
zh = actor->user.PlayerP->__int_ppos.Z;
zh = actor->user.PlayerP->int_ppos().Z;
else
zh = ActorZOfTop(actor) + (ActorSizeZ(actor) >> 2);
@ -1954,10 +1954,10 @@ void PlayerSectorBound(PLAYER* pp, int amt)
getzsofslopeptr(pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, &cz, &fz);
if (pp->__int_ppos.Z > fz - amt)
if (pp->int_ppos().Z > fz - amt)
pp->__int_ppos.Z = fz - amt;
if (pp->__int_ppos.Z < cz + amt)
if (pp->int_ppos().Z < cz + amt)
pp->__int_ppos.Z = cz + amt;
}
@ -2121,18 +2121,18 @@ void DoPlayerMove(PLAYER* pp)
{
if (pp->Flags & (PF_FLYING|PF_JUMPING|PF_FALLING))
{
if (pp->__int_ppos.Z > pp->loz)
if (pp->int_ppos().Z > pp->loz)
pp->__int_ppos.Z = pp->loz - PLAYER_HEIGHT;
if (pp->__int_ppos.Z < pp->hiz)
if (pp->int_ppos().Z < pp->hiz)
pp->__int_ppos.Z = pp->hiz + PLAYER_HEIGHT;
}
else if (pp->Flags & (PF_SWIMMING|PF_DIVING))
{
if (pp->__int_ppos.Z > pp->loz)
if (pp->int_ppos().Z > pp->loz)
pp->__int_ppos.Z = pp->loz - PLAYER_SWIM_HEIGHT;
if (pp->__int_ppos.Z < pp->hiz)
if (pp->int_ppos().Z < pp->hiz)
pp->__int_ppos.Z = pp->hiz + PLAYER_SWIM_HEIGHT;
}
}
@ -2186,10 +2186,10 @@ void DoPlayerSectorUpdatePostMove(PLAYER* pp)
// adjust the posz to be in a sector
getzsofslopeptr(pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, &cz, &fz);
if (pp->__int_ppos.Z > fz)
if (pp->int_ppos().Z > fz)
pp->__int_ppos.Z = fz;
if (pp->__int_ppos.Z < cz)
if (pp->int_ppos().Z < cz)
pp->__int_ppos.Z = cz;
// try again
@ -3243,7 +3243,7 @@ void DoPlayerClimb(PLAYER* pp)
// if floor is ABOVE you && your head goes above it, do a jump up to
// terrace
if (pp->__int_ppos.Z < pp->LadderSector->int_floorz() - Z(6))
if (pp->int_ppos().Z < pp->LadderSector->int_floorz() - Z(6))
{
pp->jump_speed = PLAYER_CLIMB_JUMP_AMT;
pp->Flags &= ~(PF_CLIMBING|PF_WEAPON_DOWN);
@ -3316,7 +3316,7 @@ void DoPlayerClimb(PLAYER* pp)
HitInfo near;
// constantly look for new ladder sector because of warping at any time
neartag(pp->__int_ppos, pp->cursector, pp->angle.ang.Buildang(), near, 800, NTAG_SEARCH_LO_HI);
neartag(pp->int_ppos(), pp->cursector, pp->angle.ang.Buildang(), near, 800, NTAG_SEARCH_LO_HI);
if (near.hitWall)
{
@ -3364,7 +3364,7 @@ int DoPlayerWadeSuperJump(PLAYER* pp)
{
hit.hitSector = hit.hitWall->nextSector();
if (hit.hitSector != nullptr && labs(hit.hitSector->int_floorz() - pp->__int_ppos.Z) < Z(50))
if (hit.hitSector != nullptr && labs(hit.hitSector->int_floorz() - pp->int_ppos().Z) < Z(50))
{
if (Distance(pp->int_ppos().X, pp->int_ppos().Y, hit.int_hitpos().X, hit.int_hitpos().Y) < ((((int)pp->actor->spr.clipdist)<<2) + 256))
return true;
@ -3539,7 +3539,7 @@ void PlayerWarpUpdatePos(PLAYER* pp)
bool PlayerCeilingHit(PLAYER* pp, int zlimit)
{
if (pp->__int_ppos.Z < zlimit)
if (pp->int_ppos().Z < zlimit)
{
return true;
}
@ -3549,7 +3549,7 @@ bool PlayerCeilingHit(PLAYER* pp, int zlimit)
bool PlayerFloorHit(PLAYER* pp, int zlimit)
{
if (pp->__int_ppos.Z > zlimit)
if (pp->int_ppos().Z > zlimit)
{
return true;
}
@ -3654,7 +3654,7 @@ bool PlayerOnLadder(PLAYER* pp)
if (Prediction)
return false;
neartag(pp->__int_ppos, pp->cursector, pp->angle.ang.Buildang(), near, 1024 + 768, NTAG_SEARCH_LO_HI);
neartag(pp->int_ppos(), pp->cursector, pp->angle.ang.Buildang(), near, 1024 + 768, NTAG_SEARCH_LO_HI);
dir = DOT_PRODUCT_2D(pp->vect.X, pp->vect.Y, pp->angle.ang.Cos() * (1 << 14), pp->angle.ang.Sin() * (1 << 14));
@ -3666,7 +3666,7 @@ bool PlayerOnLadder(PLAYER* pp)
for (i = 0; i < SIZ(angles); i++)
{
neartag(pp->__int_ppos, pp->cursector, NORM_ANGLE(pp->angle.ang.Buildang() + angles[i]), near, 600, NTAG_SEARCH_LO_HI);
neartag(pp->int_ppos(), pp->cursector, NORM_ANGLE(pp->angle.ang.Buildang() + angles[i]), near, 600, NTAG_SEARCH_LO_HI);
if (near.hitWall == nullptr || near.int_hitpos().X < 100 || near.hitWall->lotag != TAG_WALL_CLIMB)
return false;
@ -3768,7 +3768,7 @@ int PlayerCanDive(PLAYER* pp)
pp->z_speed = Z(20);
pp->jump_speed = 0;
if (pp->__int_ppos.Z > pp->loz - Z(pp->WadeDepth) - Z(2))
if (pp->int_ppos().Z > pp->loz - Z(pp->WadeDepth) - Z(2))
{
DoPlayerBeginDive(pp);
}
@ -4396,7 +4396,7 @@ void DoPlayerDive(PLAYER* pp)
if (pp->z_speed < 0 && FAF_ConnectArea(pp->cursector))
{
if (pp->__int_ppos.Z < pp->cursector->int_ceilingz() + Z(10))
if (pp->int_ppos().Z < pp->cursector->int_ceilingz() + Z(10))
{
auto sect = pp->cursector;
@ -4422,7 +4422,7 @@ void DoPlayerDive(PLAYER* pp)
if (sectu && (sectu->number == 0 || (sectu->flags & SECTFU_CANT_SURFACE)))
{
// for room over room water the hiz will be the top rooms ceiling
if (pp->__int_ppos.Z < pp->hiz + pp->ceiling_dist)
if (pp->int_ppos().Z < pp->hiz + pp->ceiling_dist)
{
pp->__int_ppos.Z = pp->hiz + pp->ceiling_dist;
}
@ -4433,7 +4433,7 @@ void DoPlayerDive(PLAYER* pp)
// !JIM! FRANK - I added !pp->hiActor so that you don't warp to surface when
// there is a sprite above you since getzrange returns a hiz < ceiling height
// if you are clipping into a sprite and not the ceiling.
if (pp->__int_ppos.Z < pp->hiz + Z(4) && !pp->highActor)
if (pp->int_ppos().Z < pp->hiz + Z(4) && !pp->highActor)
{
DoPlayerStopDive(pp);
return;
@ -4441,7 +4441,7 @@ void DoPlayerDive(PLAYER* pp)
}
// Only get so close to the floor
if (pp->__int_ppos.Z >= pp->loz - PLAYER_DIVE_HEIGHT)
if (pp->int_ppos().Z >= pp->loz - PLAYER_DIVE_HEIGHT)
{
pp->__int_ppos.Z = pp->loz - PLAYER_DIVE_HEIGHT;
}
@ -5100,7 +5100,7 @@ void DoPlayerStopOperate(PLAYER* pp)
if (TEST_BOOL1(rsp))
pp->angle.ang = pp->angle.oang = rsp->spr.angle;
else
pp->angle.ang = pp->angle.oang = VecToAngle(pp->sop_remote->int_pmid().X - pp->int_ppos().X, pp->sop_remote->int_pmid().Y - pp->__int_ppos.Y);
pp->angle.ang = pp->angle.oang = VecToAngle(pp->sop_remote->int_pmid().X - pp->int_ppos().X, pp->sop_remote->int_pmid().Y - pp->int_ppos().Y);
}
if (pp->sop_control)
@ -5904,7 +5904,7 @@ void DoPlayerDeathMoveHead(PLAYER* pp)
ChangeActorSect(pp->actor, pp->lv_sector);
pp->__int_ppos.X = pp->lv.X;
pp->__int_ppos.Y = pp->lv.Y;
plActor->set_int_xy(pp->int_ppos().X, pp->__int_ppos.Y);
plActor->set_int_xy(pp->int_ppos().X, pp->int_ppos().Y);
}
else
{
@ -5975,7 +5975,7 @@ void DoPlayerDeathDrown(PLAYER* pp)
actor->add_int_z(Z(4));
// Stick like glue when you hit the ground
if (pp->__int_ppos.Z > pp->loz - PLAYER_DEATH_HEIGHT)
if (pp->int_ppos().Z > pp->loz - PLAYER_DEATH_HEIGHT)
{
pp->__int_ppos.Z = pp->loz - PLAYER_DEATH_HEIGHT;
pp->Flags &= ~(PF_FALLING);
@ -6065,7 +6065,7 @@ void DoPlayerDeathCrumble(PLAYER* pp)
}
DoPlayerDeathCheckKeys(pp);
plActor->set_int_z(pp->__int_ppos.Z+PLAYER_DEAD_HEAD_FLOORZ_OFFSET);
plActor->set_int_z(pp->int_ppos().Z + PLAYER_DEAD_HEAD_FLOORZ_OFFSET);
DoPlayerHeadDebris(pp);
}
@ -6118,7 +6118,7 @@ void DoPlayerDeathExplode(PLAYER* pp)
}
DoPlayerDeathCheckKeys(pp);
plActor->set_int_z(pp->__int_ppos.Z+PLAYER_DEAD_HEAD_FLOORZ_OFFSET);
plActor->set_int_z(pp->int_ppos().Z + PLAYER_DEAD_HEAD_FLOORZ_OFFSET);
DoPlayerHeadDebris(pp);
}
@ -6618,8 +6618,8 @@ void domovethings(void)
// auto tracking mode for single player multi-game
if (numplayers <= 1 && PlayerTrackingMode && pnum == screenpeek && screenpeek != myconnectindex)
{
int deltax = Player[myconnectindex].__int_ppos.X - Player[screenpeek].__int_ppos.X;
int deltay = Player[myconnectindex].__int_ppos.Y - Player[screenpeek].__int_ppos.Y;
int deltax = Player[myconnectindex].int_ppos().X - Player[screenpeek].int_ppos().X;
int deltay = Player[myconnectindex].int_ppos().Y - Player[screenpeek].int_ppos().Y;
Player[screenpeek].angle.settarget(VecToAngle(deltax, deltay));
}
@ -6759,7 +6759,7 @@ int SearchSpawnPosition(PLAYER* pp)
if (opp != pp) // don't test for yourself
{
if (FindDistance3D(spawn_sprite->int_pos() - opp->__int_ppos) < 1000)
if (FindDistance3D(spawn_sprite->int_pos() - opp->int_ppos()) < 1000)
{
blocked = true;
break;
@ -6843,7 +6843,7 @@ void PlayerSpawnPosition(PLAYER* pp)
getzsofslopeptr(pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, &cz, &fz);
// if too close to the floor - stand up
if (pp->__int_ppos.Z > fz - PLAYER_HEIGHT)
if (pp->int_ppos().Z > fz - PLAYER_HEIGHT)
{
pp->__int_ppos.Z = pp->__int_popos.Z = fz - PLAYER_HEIGHT;
}

View file

@ -172,7 +172,7 @@ void QuakeViewChange(PLAYER* pp, int *z_diff, int *x_diff, int *y_diff, short *a
SWStatIterator it(STAT_QUAKE_ON);
while ((actor = it.Next()))
{
dist = FindDistance3D(pp->__int_ppos - actor->int_pos());
dist = FindDistance3D(pp->int_ppos() - actor->int_pos());
// shake whole level
if (QUAKE_TestDontTaper(actor))

View file

@ -1842,7 +1842,7 @@ void OperateTripTrigger(PLAYER* pp)
{
if (actor->user.Flags & (SPR_WAIT_FOR_TRIGGER))
{
if (Distance(actor->int_pos().X, actor->int_pos().Y, pp->int_ppos().X, pp->__int_ppos.Y) < dist)
if (Distance(actor->int_pos().X, actor->int_pos().Y, pp->int_ppos().X, pp->int_ppos().Y) < dist)
{
actor->user.targetActor = pp->actor;
actor->user.Flags &= ~(SPR_WAIT_FOR_TRIGGER);
@ -1939,7 +1939,7 @@ bool NearThings(PLAYER* pp)
return false;
}
neartag(pp->__int_ppos, pp->cursector, pp->angle.ang.Buildang(), near, 1024, NTAG_SEARCH_LO_HI);
neartag(pp->int_ppos(), pp->cursector, pp->angle.ang.Buildang(), near, 1024, NTAG_SEARCH_LO_HI);
// hit a sprite? Check to see if it has sound info in it!
@ -1982,7 +1982,7 @@ bool NearThings(PLAYER* pp)
if (hit.hitSector == nullptr)
return false;
if (Distance(hit.int_hitpos().X, hit.int_hitpos().Y, pp->int_ppos().X, pp->__int_ppos.Y) > 1500)
if (Distance(hit.int_hitpos().X, hit.int_hitpos().Y, pp->int_ppos().X, pp->int_ppos().Y) > 1500)
return false;
// hit a sprite?

View file

@ -122,9 +122,9 @@ short SoundDist(int x, int y, int z, int basedist)
double sqrdist, retval;
extern short screenpeek;
tx = fabs(Player[screenpeek].__int_ppos.X - x);
ty = fabs(Player[screenpeek].__int_ppos.Y - y);
tz = fabs((Player[screenpeek].__int_ppos.Z - z) >> 4);
tx = fabs(Player[screenpeek].int_ppos().X - x);
ty = fabs(Player[screenpeek].int_ppos().Y - y);
tz = fabs((Player[screenpeek].int_ppos().Z - z) >> 4);
// Use the Pythagreon Theorem to compute the magnitude of a 3D vector
sqrdist = fabs(tx * tx + ty * ty + tz * tz);
@ -519,7 +519,7 @@ void SWSoundEngine::CalcPosVel(int type, const void* source, const float pt[3],
if (pos != nullptr)
{
PLAYER* pp = Player + screenpeek;
FVector3 campos = GetSoundPos(pp->__int_ppos);
FVector3 campos = GetSoundPos(pp->int_ppos());
vec3_t vpos = {};
bool pancheck = false;
@ -533,7 +533,7 @@ void SWSoundEngine::CalcPosVel(int type, const void* source, const float pt[3],
}
else if (type == SOURCE_Actor || type == SOURCE_Player)
{
vpos = type == SOURCE_Actor ? ((DSWActor*)source)->spr.int_pos() : ((PLAYER*)source)->__int_ppos;
vpos = type == SOURCE_Actor ? ((DSWActor*)source)->spr.int_pos() : ((PLAYER*)source)->int_ppos();
pancheck = true;
FVector3 npos = GetSoundPos(vpos);
@ -605,13 +605,13 @@ void GameInterface::UpdateSounds(void)
if (TEST_BOOL1(rsp))
tang = rsp->spr.angle;
else
tang = VecToAngle(pp->sop_remote->int_pmid().X - pp->int_ppos().X, pp->sop_remote->int_pmid().Y - pp->__int_ppos.Y);
tang = VecToAngle(pp->sop_remote->int_pmid().X - pp->int_ppos().X, pp->sop_remote->int_pmid().Y - pp->int_ppos().Y);
}
else tang = pp->angle.ang;
listener.angle = float(-tang.Radians());
listener.velocity.Zero();
listener.position = GetSoundPos(pp->__int_ppos);
listener.position = GetSoundPos(pp->int_ppos());
listener.underwater = false;
// This should probably use a real environment instead of the pitch hacking in S_PlaySound3D.
// listenactor->waterlevel == 3;
@ -654,7 +654,7 @@ int _PlaySound(int num, DSWActor* actor, PLAYER* pp, const vec3_t* const ppos, i
}
else if (pp && !ppos)
{
pos = pp->__int_ppos;
pos = pp->int_ppos();
pp = nullptr;
}
}

View file

@ -3404,7 +3404,7 @@ int ActorFollowTrack(DSWActor* actor, short locktics)
{
pp = &Player[pnum];
if (Distance(actor->int_pos().X, actor->int_pos().Y, pp->int_ppos().X, pp->__int_ppos.Y) < actor->user.Dist)
if (Distance(actor->int_pos().X, actor->int_pos().Y, pp->int_ppos().X, pp->int_ppos().Y) < actor->user.Dist)
{
actor->user.targetActor = pp->actor;
actor->user.Flags &= ~(SPR_WAIT_FOR_PLAYER);

View file

@ -11875,7 +11875,7 @@ int InitSwordAttack(PLAYER* pp)
if (hit.hitSector == nullptr)
return 0;
if (FindDistance3D(pp->__int_ppos - hit.int_hitpos()) < 700)
if (FindDistance3D(pp->int_ppos() - hit.int_hitpos()) < 700)
{
if (hit.actor() != nullptr)
@ -12056,7 +12056,7 @@ int InitFistAttack(PLAYER* pp)
if (hit.hitSector == nullptr)
return 0;
if (FindDistance3D(pp->__int_ppos - hit.int_hitpos()) < 700)
if (FindDistance3D(pp->int_ppos() - hit.int_hitpos()) < 700)
{
if (hit.actor() != nullptr)

View file

@ -39,7 +39,7 @@ inline int AngToSprite(DSWActor* actor, DSWActor* other)
inline int AngToPlayer(PLAYER* player, DSWActor* other)
{
return (getangle(player->__int_ppos.X - other->int_pos().X, player->__int_ppos.Y - other->int_pos().Y));
return (getangle(player->int_ppos().X - other->int_pos().X, player->int_ppos().Y - other->int_pos().Y));
}