- int_ppos replacements

This commit is contained in:
Christoph Oelckers 2022-08-20 12:11:15 +02:00
parent da73d2bba4
commit 8e966fc575
23 changed files with 197 additions and 207 deletions

View file

@ -42,6 +42,7 @@ struct vec3_t
vec3_t& operator+=(const vec3_t& other) { X += other.X; Y += other.Y; Z += other.Z; return *this; };
vec3_t& operator-=(const vec3_t& other) { X -= other.X; Y -= other.Y; Z += other.Z; return *this; };
vec3_t withZOffset(int ofs) { return { X, Y, Z + ofs }; }
vec2_t& XY() { return vec2; }
};

View file

@ -324,7 +324,7 @@ int DoActorPickClosePlayer(DSWActor* actor)
// continue;
}
DISTANCE(actor->int_pos().X, actor->int_pos().Y, pp->__int_ppos.X, pp->__int_ppos.Y, dist, a, b, c);
DISTANCE(actor->int_pos().X, actor->int_pos().Y, pp->int_ppos().X, pp->int_ppos().Y, dist, a, b, c);
if (dist < near_dist)
{
@ -350,7 +350,7 @@ int DoActorPickClosePlayer(DSWActor* actor)
continue;
}
DISTANCE(actor->int_pos().X, actor->int_pos().Y, pp->__int_ppos.X, pp->__int_ppos.Y, dist, a, b, c);
DISTANCE(actor->int_pos().X, actor->int_pos().Y, pp->int_ppos().X, pp->int_ppos().Y, dist, a, b, c);
DSWActor* plActor = pp->actor;
if (dist < near_dist && FAFcansee(actor->int_pos().X, actor->int_pos().Y, look_height, actor->sector(), plActor->int_pos().X, plActor->int_pos().Y, ActorUpperZ(plActor), plActor->sector()))

View file

@ -1003,7 +1003,7 @@ int DoBunnyQuickJump(DSWActor* actor)
if (pp == Player+myconnectindex)
{
choose_snd = StdRandomRange(2<<8)>>8;
if (FAFcansee(actor->int_pos().X,actor->int_pos().Y,ActorZOfTop(actor),actor->sector(),pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector) && Facing(actor, actor->user.targetActor))
if (FAFcansee(actor->int_pos().X,actor->int_pos().Y,ActorZOfTop(actor),actor->sector(),pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector) && Facing(actor, actor->user.targetActor))
PlayerSound(fagsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp);
}
}
@ -1018,7 +1018,7 @@ int DoBunnyQuickJump(DSWActor* actor)
if (pp == Player+myconnectindex)
{
choose_snd = StdRandomRange(3<<8)>>8;
if (FAFcansee(actor->int_pos().X,actor->int_pos().Y,ActorZOfTop(actor),actor->sector(),pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector) && Facing(actor, actor->user.targetActor))
if (FAFcansee(actor->int_pos().X,actor->int_pos().Y,ActorZOfTop(actor),actor->sector(),pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector) && Facing(actor, actor->user.targetActor))
PlayerSound(straightsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp);
}
}

View file

@ -780,9 +780,9 @@ void analyzesprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, int
{
pp = tActor->user.PlayerP;
int sr = 65536 - int(smoothratio);
tsp->add_int_x(-MulScale(pp->__int_ppos.X - pp->__int_popos.X, sr, 16));
tsp->add_int_y(-MulScale(pp->__int_ppos.Y - pp->__int_popos.Y, sr, 16));
tsp->add_int_z(-MulScale(pp->__int_ppos.Z - pp->__int_popos.Z, sr, 16));
tsp->add_int_x(-MulScale(pp->int_ppos().X - pp->__int_popos.X, sr, 16));
tsp->add_int_y(-MulScale(pp->int_ppos().Y - pp->__int_popos.Y, sr, 16));
tsp->add_int_z(-MulScale(pp->int_ppos().Z - pp->__int_popos.Z, sr, 16));
tsp->add_int_ang(-MulScale(pp->angle.ang.Buildang() - pp->angle.oang.Buildang(), sr, 16));
}
}
@ -1410,9 +1410,9 @@ void drawscreen(PLAYER* pp, double smoothratio, bool sceneonly)
if (pp->sop_control &&
(!cl_sointerpolation || (CommEnabled && !pp->sop_remote)))
{
tx = pp->__int_ppos.X;
ty = pp->__int_ppos.Y;
tz = pp->__int_ppos.Z;
tx = pp->int_ppos().X;
ty = pp->int_ppos().Y;
tz = pp->int_ppos().Z;
tang = pp->angle.ang;
}
tsect = pp->cursector;
@ -1421,7 +1421,7 @@ void drawscreen(PLAYER* pp, double smoothratio, bool sceneonly)
pp->si.X = tx;
pp->si.Y = ty;
pp->si.Z = tz - pp->__int_ppos.Z;
pp->si.Z = tz - pp->int_ppos().Z;
pp->siang = tang.Buildang();
QuakeViewChange(camerapp, &quake_z, &quake_x, &quake_y, &quake_ang);

View file

@ -582,18 +582,22 @@ struct PLAYER
union
{
vec3_t __int_ppos;
vec3_t pos;
//vec3_t pos;
};
union
{
vec3_t __int_popos;
vec3_t opos;
//vec3_t opos;
};
union
{
vec3_t __int_poldpos;
vec3_t oldpos;
//vec3_t oldpos;
};
const vec3_t int_ppos() const
{
return __int_ppos;
}
DSWActor* actor; // this may not be a TObjPtr!
TObjPtr<DSWActor*> lowActor, highActor;

View file

@ -541,7 +541,7 @@ int DoCheckSwarm(DSWActor* actor)
if (actor->user.targetActor->user.PlayerP)
{
pp = actor->user.targetActor->user.PlayerP;
DISTANCE(actor->int_pos().X, actor->int_pos().Y, pp->__int_ppos.X, pp->__int_ppos.Y, pdist, a, b, c);
DISTANCE(actor->int_pos().X, actor->int_pos().Y, pp->int_ppos().X, pp->int_ppos().Y, pdist, a, b, c);
}
else
return 0;

View file

@ -186,7 +186,7 @@ void GameInterface::GetInput(ControlInfo* const hidInput, double const scaleAdju
if ((pp->Flags2 & PF2_INPUT_CAN_TURN_VEHICLE))
{
DoPlayerTurnVehicle(pp, input.avel, pp->__int_ppos.Z + Z(10), labs(pp->__int_ppos.Z + Z(10) - pp->sop->floor_loz));
DoPlayerTurnVehicle(pp, input.avel, pp->int_ppos().Z + Z(10), labs(pp->int_ppos().Z + Z(10) - pp->sop->floor_loz));
}
if ((pp->Flags2 & PF2_INPUT_CAN_TURN_TURRET))

View file

@ -612,7 +612,7 @@ void JS_DrawCameras(PLAYER* pp, int tx, int ty, int tz, double smoothratio)
// If player is dead still then update at MoveSkip4
// rate.
if (pp->__int_ppos.X == pp->__int_popos.X && pp->__int_ppos.Y == pp->__int_popos.Y && pp->__int_ppos.Z == pp->__int_popos.Z)
if (pp->int_ppos().X == pp->__int_popos.X && pp->int_ppos().Y == pp->__int_popos.Y && pp->int_ppos().Z == pp->__int_popos.Z)
DoCam = true;

View file

@ -1242,9 +1242,9 @@ int PlayerInitChemBomb(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nz = pp->__int_ppos.Z + pp->bob_z + Z(8);
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
nz = pp->int_ppos().Z + pp->bob_z + Z(8);
// Spawn a shot
// Inserting and setting up variables
@ -1615,9 +1615,9 @@ int PlayerInitCaltrops(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nz = pp->__int_ppos.Z + pp->bob_z + Z(8);
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
nz = pp->int_ppos().Z + pp->bob_z + Z(8);
auto actorNew = SpawnActor(STAT_DEAD_ACTOR, CALTROPS, s_Caltrops, pp->cursector,
nx, ny, nz, pp->angle.ang.Buildang(), (CHEMBOMB_VELOCITY + RandomRange(CHEMBOMB_VELOCITY)) / 2);

View file

@ -58,7 +58,7 @@ Collision MultiClipMove(PLAYER* pp, int z, int floor_dist)
// allowing you to move through wall
ang = NORM_ANGLE(pp->angle.ang.Buildang() + sop->clipbox_ang[i]);
vec3_t spos = { pp->__int_ppos.X, pp->__int_ppos.Y, z };
vec3_t spos = { pp->int_ppos().X, pp->int_ppos().Y, z };
xvect = sop->clipbox_vdist[i] * bcos(ang);
yvect = sop->clipbox_vdist[i] * bsin(ang);
@ -71,8 +71,8 @@ Collision MultiClipMove(PLAYER* pp, int z, int floor_dist)
min_dist = 0;
min_ndx = i;
// ox is where it should be
opos[i].X = pos[i].X = pp->__int_ppos.X + MulScale(sop->clipbox_vdist[i], bcos(ang), 14);
opos[i].Y = pos[i].Y = pp->__int_ppos.Y + MulScale(sop->clipbox_vdist[i], bsin(ang), 14);
opos[i].X = pos[i].X = pp->int_ppos().X + MulScale(sop->clipbox_vdist[i], bcos(ang), 14);
opos[i].Y = pos[i].Y = pp->int_ppos().Y + MulScale(sop->clipbox_vdist[i], bsin(ang), 14);
// spos.x is where it hit
pos[i].X = spos.X;
@ -131,7 +131,7 @@ short MultiClipTurn(PLAYER* pp, short new_ang, int z, int floor_dist)
{
ang = NORM_ANGLE(new_ang + sop->clipbox_ang[i]);
vec3_t pos = { pp->__int_ppos.X, pp->__int_ppos.Y, z };
vec3_t pos = { pp->int_ppos().X, pp->int_ppos().Y, z };
xvect = sop->clipbox_vdist[i] * bcos(ang);
yvect = sop->clipbox_vdist[i] * bsin(ang);

View file

@ -2324,8 +2324,8 @@ void InitPlayerSprite(PLAYER* pp)
COVER_SetReverb(0); // Turn off any echoing that may have been going before
pp->Reverb = 0;
auto actor = SpawnActor(STAT_PLAYER0 + pnum, NINJA_RUN_R0, nullptr, pp->cursector, pp->__int_ppos.X,
pp->__int_ppos.Y, pp->__int_ppos.Z, pp->angle.ang.Buildang(), 0);
auto actor = SpawnActor(STAT_PLAYER0 + pnum, NINJA_RUN_R0, nullptr, pp->cursector, pp->int_ppos().X,
pp->int_ppos().Y, pp->int_ppos().Z, pp->angle.ang.Buildang(), 0);
pp->actor = actor;
pp->pnum = pnum;
@ -2393,7 +2393,7 @@ void SpawnPlayerUnderSprite(PLAYER* pp)
int pnum = int(pp - Player);
pp->PlayerUnderActor = SpawnActor(STAT_PLAYER_UNDER0 + pnum,
NINJA_RUN_R0, nullptr, pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->angle.ang.Buildang(), 0);
NINJA_RUN_R0, nullptr, pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->angle.ang.Buildang(), 0);
DSWActor* actor = pp->PlayerUnderActor;

View file

@ -50,9 +50,10 @@ BEGIN_SW_NS
void GameInterface::WarpToCoords(int x, int y, int z, int ang, int horz)
{
Player->__int_popos.X = Player->__int_ppos.X = x;
Player->__int_popos.Y = Player->__int_ppos.Y = y;
Player->__int_popos.Z = Player->__int_ppos.Z = z;
Player->__int_ppos.X = x;
Player->__int_ppos.Y = y;
Player->__int_ppos.Z = z;
Player->__int_popos = Player->__int_ppos;
if (ang != INT_MIN)
{

View file

@ -1417,7 +1417,7 @@ void DoPlayerSetWadeDepth(PLAYER* pp)
if ((sectp->extra & SECTFX_SINK))
{
// make sure your even in the water
if (pp->__int_ppos.Z + PLAYER_HEIGHT > pp->lo_sectp->int_floorz() - Z(FixedToInt(pp->lo_sectp->depth_fixed)))
if (pp->int_ppos().Z + PLAYER_HEIGHT > pp->lo_sectp->int_floorz() - Z(FixedToInt(pp->lo_sectp->depth_fixed)))
pp->WadeDepth = FixedToInt(pp->lo_sectp->depth_fixed);
}
}
@ -1427,16 +1427,16 @@ void DoPlayerHeight(PLAYER* pp)
{
int diff;
diff = pp->__int_ppos.Z - (pp->loz - PLAYER_HEIGHT);
diff = pp->int_ppos().Z - (pp->loz - PLAYER_HEIGHT);
pp->__int_ppos.Z = pp->__int_ppos.Z - ((diff >> 2) + (diff >> 3));
pp->__int_ppos.Z = pp->int_ppos().Z - ((diff >> 2) + (diff >> 3));
}
void DoPlayerJumpHeight(PLAYER* pp)
{
if (pp->lo_sectp && (pp->lo_sectp->extra & SECTFX_DYNAMIC_AREA))
{
if (pp->__int_ppos.Z + PLAYER_HEIGHT > pp->loz)
if (pp->int_ppos().Z + PLAYER_HEIGHT > pp->loz)
{
pp->__int_ppos.Z = pp->loz - PLAYER_HEIGHT;
DoPlayerBeginRun(pp);
@ -1448,8 +1448,8 @@ void DoPlayerCrawlHeight(PLAYER* pp)
{
int diff;
diff = pp->__int_ppos.Z - (pp->loz - PLAYER_CRAWL_HEIGHT);
pp->__int_ppos.Z = pp->__int_ppos.Z - ((diff >> 2) + (diff >> 3));
diff = pp->int_ppos().Z - (pp->loz - PLAYER_CRAWL_HEIGHT);
pp->__int_ppos.Z = pp->int_ppos().Z - ((diff >> 2) + (diff >> 3));
}
void UpdatePlayerSpriteAngle(PLAYER* pp)
@ -1603,7 +1603,7 @@ void DoPlayerBob(PLAYER* pp)
dist = 0;
dist = Distance(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_poldpos.X, pp->__int_poldpos.Y);
dist = Distance(pp->int_ppos().X, pp->int_ppos().Y, pp->__int_poldpos.X, pp->__int_poldpos.Y);
if (dist > 512)
dist = 0;
@ -1671,7 +1671,7 @@ void DoPlayerSpriteBob(PLAYER* pp, short player_height, short bob_amt, short bob
pp->bob_amt = MulScale(bob_amt, bsin(pp->bob_ndx), 14);
pp->actor->set_int_z((pp->__int_ppos.Z + player_height) + pp->bob_amt);
pp->actor->set_int_z((pp->int_ppos().Z + player_height) + pp->bob_amt);
}
void UpdatePlayerUnderSprite(PLAYER* pp)
@ -1742,7 +1742,7 @@ void UpdatePlayerSprite(PLAYER* pp)
// Update sprite representation of player
actor->set_int_xy(pp->__int_ppos.X, pp->__int_ppos.Y);
actor->set_int_xy(pp->int_ppos().X, pp->__int_ppos.Y);
// there are multiple death functions
if (pp->Flags & (PF_DEAD))
@ -1760,7 +1760,7 @@ void UpdatePlayerSprite(PLAYER* pp)
}
else if (pp->DoPlayerAction == DoPlayerCrawl)
{
actor->set_int_z(pp->__int_ppos.Z + PLAYER_CRAWL_HEIGHT);
actor->set_int_z(pp->int_ppos().Z + PLAYER_CRAWL_HEIGHT);
ChangeActorSect(pp->actor, pp->cursector);
}
#if 0
@ -1772,7 +1772,7 @@ void UpdatePlayerSprite(PLAYER* pp)
#endif
else if (pp->DoPlayerAction == DoPlayerWade)
{
actor->set_int_z(pp->__int_ppos.Z + PLAYER_HEIGHT);
actor->set_int_z(pp->int_ppos().Z + PLAYER_HEIGHT);
ChangeActorSect(pp->actor, pp->cursector);
if (pp->WadeDepth > Z(29))
@ -1783,12 +1783,12 @@ void UpdatePlayerSprite(PLAYER* pp)
else if (pp->DoPlayerAction == DoPlayerDive)
{
// bobbing and sprite position taken care of in DoPlayerDive
actor->set_int_z(pp->__int_ppos.Z + Z(10));
actor->set_int_z(pp->int_ppos().Z + Z(10));
ChangeActorSect(pp->actor, pp->cursector);
}
else if (pp->DoPlayerAction == DoPlayerClimb)
{
actor->set_int_z(pp->__int_ppos.Z + Z(17));
actor->set_int_z(pp->int_ppos().Z + Z(17));
ChangeActorSect(pp->actor, pp->cursector);
}
@ -1803,12 +1803,12 @@ void UpdatePlayerSprite(PLAYER* pp)
}
else if (pp->DoPlayerAction == DoPlayerJump || pp->DoPlayerAction == DoPlayerFall || pp->DoPlayerAction == DoPlayerForceJump)
{
actor->set_int_z(pp->__int_ppos.Z + PLAYER_HEIGHT);
actor->set_int_z(pp->int_ppos().Z + PLAYER_HEIGHT);
ChangeActorSect(pp->actor, pp->cursector);
}
else if (pp->DoPlayerAction == DoPlayerTeleportPause)
{
actor->set_int_z(pp->__int_ppos.Z + PLAYER_HEIGHT);
actor->set_int_z(pp->int_ppos().Z + PLAYER_HEIGHT);
ChangeActorSect(pp->actor, pp->cursector);
}
else
@ -1931,9 +1931,7 @@ void PlayerCheckValidMove(PLAYER* pp)
{
if (!pp->insector())
{
pp->__int_ppos.X = pp->__int_poldpos.X;
pp->__int_ppos.Y = pp->__int_poldpos.Y;
pp->__int_ppos.Z = pp->__int_poldpos.Z;
pp->__int_ppos = pp->__int_poldpos;
pp->cursector = pp->lastcursector;
}
}
@ -1954,7 +1952,7 @@ void PlayerSectorBound(PLAYER* pp, int amt)
// called from DoPlayerMove() but can be called
// from anywhere it is needed
getzsofslopeptr(pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, &cz, &fz);
getzsofslopeptr(pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, &cz, &fz);
if (pp->__int_ppos.Z > fz - amt)
pp->__int_ppos.Z = fz - amt;
@ -1989,9 +1987,7 @@ void DoPlayerMove(PLAYER* pp)
DoPlayerTurn(pp, pp->input.avel, 1);
}
pp->__int_poldpos.X = pp->__int_ppos.X;
pp->__int_poldpos.Y = pp->__int_ppos.Y;
pp->__int_poldpos.Z = pp->__int_ppos.Z;
pp->__int_poldpos = pp->__int_ppos;
pp->lastcursector = pp->cursector;
if (PLAYER_MOVING(pp) == 0)
@ -2044,7 +2040,7 @@ void DoPlayerMove(PLAYER* pp)
}
pp->__int_ppos.X += pp->vect.X >> 14;
pp->__int_ppos.Y += pp->vect.Y >> 14;
updatesector(pp->__int_ppos.X, pp->__int_ppos.Y, &sect);
updatesector(pp->int_ppos().X, pp->int_ppos().Y, &sect);
if (sect != nullptr)
pp->cursector = sect;
}
@ -2073,7 +2069,7 @@ void DoPlayerMove(PLAYER* pp)
auto save_cstat = actor->spr.cstat;
actor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK);
Collision coll;
updatesector(pp->__int_ppos.X, pp->__int_ppos.Y, &pp->cursector);
updatesector(pp->int_ppos().X, pp->int_ppos().Y, &pp->cursector);
clipmove(pp->__int_ppos, &pp->cursector, pp->vect.X, pp->vect.Y, ((int)actor->spr.clipdist<<2), pp->ceiling_dist, pp->floor_dist, CLIPMASK_PLAYER, coll);
actor->spr.cstat = save_cstat;
@ -2151,21 +2147,21 @@ void DoPlayerSectorUpdatePreMove(PLAYER* pp)
if ((pp->cursector->extra & SECTFX_DYNAMIC_AREA))
{
updatesectorz(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, &sect);
updatesectorz(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, &sect);
if (sect == nullptr)
{
sect = pp->cursector;
updatesector(pp->__int_ppos.X, pp->__int_ppos.Y, &sect);
updatesector(pp->int_ppos().X, pp->int_ppos().Y, &sect);
}
ASSERT(sect);
}
else if (FAF_ConnectArea(sect))
{
updatesectorz(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, &sect);
updatesectorz(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, &sect);
if (sect == nullptr)
{
sect = pp->cursector;
updatesector(pp->__int_ppos.X, pp->__int_ppos.Y, &sect);
updatesector(pp->int_ppos().X, pp->int_ppos().Y, &sect);
}
ASSERT(sect);
}
@ -2181,7 +2177,7 @@ void DoPlayerSectorUpdatePostMove(PLAYER* pp)
// need to do updatesectorz if in connect area
if (sect != nullptr && FAF_ConnectArea(sect))
{
updatesectorz(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, &pp->cursector);
updatesectorz(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, &pp->cursector);
// can mess up if below
if (!pp->insector())
@ -2189,7 +2185,7 @@ void DoPlayerSectorUpdatePostMove(PLAYER* pp)
pp->setcursector(sect);
// adjust the posz to be in a sector
getzsofslopeptr(pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, &cz, &fz);
getzsofslopeptr(pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, &cz, &fz);
if (pp->__int_ppos.Z > fz)
pp->__int_ppos.Z = fz;
@ -2197,7 +2193,7 @@ void DoPlayerSectorUpdatePostMove(PLAYER* pp)
pp->__int_ppos.Z = cz;
// try again
updatesectorz(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, &pp->cursector);
updatesectorz(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, &pp->cursector);
}
}
else
@ -2332,17 +2328,17 @@ void SetupDriveCrush(PLAYER* pp, int *x, int *y)
{
int radius = pp->sop_control->clipdist;
x[0] = pp->__int_ppos.X - radius;
y[0] = pp->__int_ppos.Y - radius;
x[0] = pp->int_ppos().X - radius;
y[0] = pp->int_ppos().Y - radius;
x[1] = pp->__int_ppos.X + radius;
y[1] = pp->__int_ppos.Y - radius;
x[1] = pp->int_ppos().X + radius;
y[1] = pp->int_ppos().Y - radius;
x[2] = pp->__int_ppos.X + radius;
y[2] = pp->__int_ppos.Y + radius;
x[2] = pp->int_ppos().X + radius;
y[2] = pp->int_ppos().Y + radius;
x[3] = pp->__int_ppos.X - radius;
y[3] = pp->__int_ppos.Y + radius;
x[3] = pp->int_ppos().X - radius;
y[3] = pp->int_ppos().Y + radius;
}
void DriveCrush(PLAYER* pp, int *x, int *y)
@ -2554,7 +2550,7 @@ void DoPlayerMoveVehicle(PLAYER* pp)
pp->vect.X = pp->vect.Y = 0;
pp->lastcursector = pp->cursector;
z = pp->__int_ppos.Z + Z(10);
z = pp->int_ppos().Z + Z(10);
if (RectClip)
{
@ -2652,7 +2648,7 @@ void DoPlayerMoveVehicle(PLAYER* pp)
plActor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK);
if (pp->sop->clipdist)
{
vec3_t clippos = { pp->__int_ppos.X, pp->__int_ppos.Y, z };
vec3_t clippos = { pp->int_ppos().X, pp->int_ppos().Y, z };
Collision coll;
clipmove(clippos, &pp->cursector, pp->vect.X, pp->vect.Y, (int)pp->sop->clipdist, Z(4), floor_dist, CLIPMASK_PLAYER, actor->user.coll);
@ -2686,7 +2682,7 @@ void DoPlayerMoveVehicle(PLAYER* pp)
}
}
OperateSectorObject(pp->sop, pp->angle.ang.Buildang(), { pp->__int_ppos.X * inttoworld, pp->__int_ppos.Y * inttoworld });
OperateSectorObject(pp->sop, pp->angle.ang.Buildang(), { pp->int_ppos().X * inttoworld, pp->int_ppos().Y * inttoworld });
pp->cursector = save_sect; // for speed
if (!SyncInput())
@ -2936,7 +2932,7 @@ void StackedWaterSplash(PLAYER* pp)
{
auto sect = pp->cursector;
updatesectorz(pp->__int_ppos.X, pp->__int_ppos.Y, ActorZOfBottom(pp->actor), &sect);
updatesectorz(pp->int_ppos().X, pp->int_ppos().Y, ActorZOfBottom(pp->actor), &sect);
if (SectorIsUnderwaterArea(sect))
{
@ -3169,7 +3165,7 @@ void DoPlayerClimb(PLAYER* pp)
else if (pp->__int_ppos.X > pp->LadderPosition.X)
pp->__int_ppos.X -= ADJ_AMT;
if (labs(pp->__int_ppos.X - pp->LadderPosition.X) <= ADJ_AMT)
if (labs(pp->int_ppos().X - pp->LadderPosition.X) <= ADJ_AMT)
pp->__int_ppos.X = pp->LadderPosition.X;
}
@ -3180,7 +3176,7 @@ void DoPlayerClimb(PLAYER* pp)
else if (pp->__int_ppos.Y > pp->LadderPosition.Y)
pp->__int_ppos.Y -= ADJ_AMT;
if (labs(pp->__int_ppos.Y - pp->LadderPosition.Y) <= ADJ_AMT)
if (labs(pp->int_ppos().Y - pp->LadderPosition.Y) <= ADJ_AMT)
pp->__int_ppos.Y = pp->LadderPosition.Y;
}
@ -3290,7 +3286,7 @@ void DoPlayerClimb(PLAYER* pp)
}
// setsprite to players location
plActor->set_int_z(pp->__int_ppos.Z + PLAYER_HEIGHT);
plActor->set_int_z(pp->int_ppos().Z + PLAYER_HEIGHT);
ChangeActorSect(pp->actor, pp->cursector);
if (!SyncInput())
@ -3304,7 +3300,7 @@ void DoPlayerClimb(PLAYER* pp)
if (FAF_ConnectArea(pp->cursector))
{
updatesectorz(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, &pp->cursector);
updatesectorz(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, &pp->cursector);
LadderUpdate = true;
}
@ -3359,7 +3355,7 @@ int DoPlayerWadeSuperJump(PLAYER* pp)
for (i = 0; i < SIZ(angs); i++)
{
FAFhitscan(pp->__int_ppos.X, pp->__int_ppos.Y, zh, pp->cursector, // Start position
FAFhitscan(pp->int_ppos().X, pp->int_ppos().Y, zh, pp->cursector, // Start position
bcos(pp->angle.ang.Buildang() + angs[i]), // X vector of 3D ang
bsin(pp->angle.ang.Buildang() + angs[i]), // Y vector of 3D ang
0, hit, CLIPMASK_MISSILE); // Z vector of 3D ang
@ -3370,7 +3366,7 @@ int DoPlayerWadeSuperJump(PLAYER* pp)
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))
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;
}
}
@ -3412,7 +3408,7 @@ void DoPlayerBeginCrawl(PLAYER* pp)
bool PlayerFallTest(PLAYER* pp, int player_height)
{
// If the floor is far below you, fall hard instead of adjusting height
if (labs(pp->__int_ppos.Z - pp->loz) > player_height + PLAYER_FALL_HEIGHT)
if (labs(pp->int_ppos().Z - pp->loz) > player_height + PLAYER_FALL_HEIGHT)
{
// if on a STEEP slope sector and you have not moved off of the sector
if (pp->lo_sectp &&
@ -3536,9 +3532,7 @@ void PlayerWarpUpdatePos(PLAYER* pp)
if (Prediction)
return;
pp->__int_popos.X = pp->__int_ppos.X;
pp->__int_popos.Y = pp->__int_ppos.Y;
pp->__int_popos.Z = pp->__int_ppos.Z;
pp->__int_popos = pp->__int_ppos;
DoPlayerZrange(pp);
UpdatePlayerSprite(pp);
}
@ -3677,13 +3671,13 @@ bool PlayerOnLadder(PLAYER* pp)
if (near.hitWall == nullptr || near.int_hitpos().X < 100 || near.hitWall->lotag != TAG_WALL_CLIMB)
return false;
FAFhitscan(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector,
FAFhitscan(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector,
bcos(pp->angle.ang.Buildang() + angles[i]),
bsin(pp->angle.ang.Buildang() + angles[i]),
0,
hit, CLIPMASK_MISSILE);
dist = DIST(pp->__int_ppos.X, pp->__int_ppos.Y, hit.int_hitpos().X, hit.int_hitpos().Y);
dist = DIST(pp->int_ppos().X, pp->int_ppos().Y, hit.int_hitpos().X, hit.int_hitpos().Y);
if (hit.actor() != nullptr)
{
@ -3798,7 +3792,7 @@ int PlayerCanDiveNoWarp(PLAYER* pp)
{
auto sect = pp->cursector;
updatesectorz(pp->__int_ppos.X, pp->__int_ppos.Y, ActorZOfBottom(pp->actor), &sect);
updatesectorz(pp->int_ppos().X, pp->int_ppos().Y, ActorZOfBottom(pp->actor), &sect);
if (SectorIsUnderwaterArea(sect))
{
@ -4025,8 +4019,8 @@ void DoPlayerWarpToUnderwater(PLAYER* pp)
PRODUCTION_ASSERT(Found == true);
// get the offset from the sprite
plActor->user.pos.X = over_act->int_pos().X - pp->__int_ppos.X;
plActor->user.pos.Y = over_act->int_pos().Y - pp->__int_ppos.Y;
plActor->user.pos.X = over_act->int_pos().X - pp->int_ppos().X;
plActor->user.pos.Y = over_act->int_pos().Y - pp->int_ppos().Y;
// update to the new x y position
pp->__int_ppos.X = under_act->int_pos().X - plActor->user.pos.X;
@ -4035,7 +4029,7 @@ void DoPlayerWarpToUnderwater(PLAYER* pp)
auto over = over_act->sector();
auto under = under_act->sector();
if (GetOverlapSector(pp->__int_ppos.X, pp->__int_ppos.Y, &over, &under) == 2)
if (GetOverlapSector(pp->int_ppos().X, pp->int_ppos().Y, &over, &under) == 2)
{
pp->setcursector(under);
}
@ -4044,9 +4038,7 @@ void DoPlayerWarpToUnderwater(PLAYER* pp)
pp->__int_ppos.Z = under_act->sector()->int_ceilingz() + Z(6);
pp->__int_popos.X = pp->__int_ppos.X;
pp->__int_popos.Y = pp->__int_ppos.Y;
pp->__int_popos.Z = pp->__int_ppos.Z;
pp->__int_popos = pp->__int_ppos;
DoPlayerZrange(pp);
return;
@ -4095,8 +4087,8 @@ void DoPlayerWarpToSurface(PLAYER* pp)
PRODUCTION_ASSERT(Found == true);
// get the offset from the under sprite
plActor->user.pos.X = under_act->int_pos().X - pp->__int_ppos.X;
plActor->user.pos.Y = under_act->int_pos().Y - pp->__int_ppos.Y;
plActor->user.pos.X = under_act->int_pos().X - pp->int_ppos().X;
plActor->user.pos.Y = under_act->int_pos().Y - pp->int_ppos().Y;
// update to the new x y position
pp->__int_ppos.X = over_act->int_pos().X - plActor->user.pos.X;
@ -4105,7 +4097,7 @@ void DoPlayerWarpToSurface(PLAYER* pp)
auto over = over_act->sector();
auto under = under_act->sector();
if (GetOverlapSector(pp->__int_ppos.X, pp->__int_ppos.Y, &over, &under))
if (GetOverlapSector(pp->int_ppos().X, pp->int_ppos().Y, &over, &under))
{
pp->setcursector(over);
}
@ -4118,9 +4110,7 @@ void DoPlayerWarpToSurface(PLAYER* pp)
pp->__int_ppos.Z -= Z(pp->WadeDepth);
pp->__int_popos.X = pp->__int_ppos.X;
pp->__int_popos.Y = pp->__int_ppos.Y;
pp->__int_popos.Z = pp->__int_ppos.Z;
pp->__int_popos = pp->__int_ppos;
return;
}
@ -4411,7 +4401,7 @@ void DoPlayerDive(PLAYER* pp)
auto sect = pp->cursector;
// check for sector above to see if it is an underwater sector also
updatesectorz(pp->__int_ppos.X, pp->__int_ppos.Y, pp->cursector->int_ceilingz() - Z(8), &sect);
updatesectorz(pp->int_ppos().X, pp->int_ppos().Y, pp->cursector->int_ceilingz() - Z(8), &sect);
if (!SectorIsUnderwaterArea(sect))
{
@ -4478,13 +4468,13 @@ void DoPlayerDive(PLAYER* pp)
}
// Reverse bobbing when getting close to the floor
if (pp->__int_ppos.Z + pp->bob_amt >= pp->loz - PLAYER_DIVE_HEIGHT)
if (pp->int_ppos().Z + pp->bob_amt >= pp->loz - PLAYER_DIVE_HEIGHT)
{
pp->bob_ndx = NORM_ANGLE(pp->bob_ndx + ((1024 + 512) - pp->bob_ndx) * 2);
DoPlayerSpriteBob(pp, PLAYER_DIVE_HEIGHT, PLAYER_DIVE_BOB_AMT, 3);
}
// Reverse bobbing when getting close to the ceiling
if (pp->__int_ppos.Z + pp->bob_amt < pp->hiz + pp->ceiling_dist)
if (pp->int_ppos().Z + pp->bob_amt < pp->hiz + pp->ceiling_dist)
{
pp->bob_ndx = NORM_ANGLE(pp->bob_ndx + ((512) - pp->bob_ndx) * 2);
DoPlayerSpriteBob(pp, PLAYER_DIVE_HEIGHT, PLAYER_DIVE_BOB_AMT, 3);
@ -4736,7 +4726,7 @@ void DoPlayerWade(PLAYER* pp)
}
// If the floor is far below you, fall hard instead of adjusting height
if (labs(pp->__int_ppos.Z - pp->loz) > PLAYER_HEIGHT + PLAYER_FALL_HEIGHT)
if (labs(pp->int_ppos().Z - pp->loz) > PLAYER_HEIGHT + PLAYER_FALL_HEIGHT)
{
pp->jump_speed = Z(1);
DoPlayerBeginFall(pp);
@ -4753,7 +4743,7 @@ void DoPlayerWade(PLAYER* pp)
}
// If the floor is far below you, fall hard instead of adjusting height
if (labs(pp->__int_ppos.Z - pp->loz) > PLAYER_HEIGHT + PLAYER_FALL_HEIGHT)
if (labs(pp->int_ppos().Z - pp->loz) > PLAYER_HEIGHT + PLAYER_FALL_HEIGHT)
{
pp->jump_speed = Z(1);
DoPlayerBeginFall(pp);
@ -4903,8 +4893,8 @@ void DoPlayerBeginOperate(PLAYER* pp)
pp->angle.oang = pp->angle.ang = DAngle::fromBuild(sop->ang);
pp->__int_ppos.X = sop->int_pmid().X;
pp->__int_ppos.Y = sop->int_pmid().Y;
updatesector(pp->__int_ppos.X, pp->__int_ppos.Y, &pp->cursector);
getzsofslopeptr(pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, &cz, &fz);
updatesector(pp->int_ppos().X, pp->int_ppos().Y, &pp->cursector);
getzsofslopeptr(pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, &cz, &fz);
pp->__int_ppos.Z = fz - PLAYER_HEIGHT;
pp->Flags &= ~(PF_CRAWLING|PF_JUMPING|PF_FALLING|PF_LOCK_CRAWL);
@ -4988,8 +4978,8 @@ void DoPlayerBeginRemoteOperate(PLAYER* pp, SECTOR_OBJECT* sop)
pp->angle.oang = pp->angle.ang = DAngle::fromBuild(sop->ang);
pp->__int_ppos.X = sop->int_pmid().X;
pp->__int_ppos.Y = sop->int_pmid().Y;
updatesector(pp->__int_ppos.X, pp->__int_ppos.Y, &pp->cursector);
getzsofslopeptr(pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, &cz, &fz);
updatesector(pp->int_ppos().X, pp->int_ppos().Y, &pp->cursector);
getzsofslopeptr(pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, &cz, &fz);
pp->__int_ppos.Z = fz - PLAYER_HEIGHT;
pp->Flags &= ~(PF_CRAWLING|PF_JUMPING|PF_FALLING|PF_LOCK_CRAWL);
@ -5042,9 +5032,9 @@ void PlayerToRemote(PLAYER* pp)
pp->remote.cursectp = pp->cursector;
pp->remote.lastcursectp = pp->lastcursector;
pp->remote.pos.X = pp->__int_ppos.X;
pp->remote.pos.Y = pp->__int_ppos.Y;
pp->remote.pos.Z = pp->__int_ppos.Z;
pp->remote.pos.X = pp->int_ppos().X;
pp->remote.pos.Y = pp->int_ppos().Y;
pp->remote.pos.Z = pp->int_ppos().Z;
pp->remote.vect.X = pp->vect.X;
pp->remote.vect.Y = pp->vect.Y;
@ -5110,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)
@ -5705,9 +5695,9 @@ void DoPlayerDeathFollowKiller(PLAYER* pp)
DSWActor* killer = pp->KillerActor;
if (killer)
{
if (FAFcansee(killer->int_pos().X, killer->int_pos().Y, ActorZOfTop(killer), killer->sector(), pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector))
if (FAFcansee(killer->int_pos().X, killer->int_pos().Y, ActorZOfTop(killer), killer->sector(), pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector))
{
pp->angle.addadjustment(deltaangle(pp->angle.ang, VecToAngle(killer->int_pos().X - pp->__int_ppos.X, killer->int_pos().Y - pp->__int_ppos.Y)) * (1. / 16.));
pp->angle.addadjustment(deltaangle(pp->angle.ang, VecToAngle(killer->int_pos().X - pp->int_ppos().X, killer->int_pos().Y - pp->int_ppos().Y)) * (1. / 16.));
}
}
}
@ -5740,7 +5730,7 @@ void DoPlayerDeathCheckKeys(PLAYER* pp)
plActor->spr.picnum = plActor->user.State->Pic;
plActor->spr.xrepeat = plActor->spr.yrepeat = PLAYER_NINJA_XREPEAT;
plActor->spr.cstat &= ~(CSTAT_SPRITE_YCENTER);
plActor->set_int_pos({ pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z + PLAYER_HEIGHT });
plActor->set_int_pos({ pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z + PLAYER_HEIGHT });
plActor->set_int_ang(pp->angle.ang.Buildang());
DoSpawnTeleporterEffect(plActor);
@ -5907,20 +5897,20 @@ void DoPlayerDeathMoveHead(PLAYER* pp)
// try to stay in valid area - death sometimes throws you out of the map
auto sect = pp->cursector;
updatesector(pp->__int_ppos.X, pp->__int_ppos.Y, &sect);
updatesector(pp->int_ppos().X, pp->int_ppos().Y, &sect);
if (sect == nullptr)
{
pp->cursector = pp->lv_sector;
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
{
pp->lv_sector = sect;
pp->lv.X = pp->__int_ppos.X;
pp->lv.Y = pp->__int_ppos.Y;
pp->lv.X = pp->int_ppos().X;
pp->lv.Y = pp->int_ppos().Y;
}
}
@ -6369,9 +6359,7 @@ void MoveSkipSavePos(void)
{
pp = Player + pnum;
pp->__int_popos.X = pp->__int_ppos.X;
pp->__int_popos.Y = pp->__int_ppos.Y;
pp->__int_popos.Z = pp->__int_ppos.Z;
pp->__int_popos = pp->__int_ppos;
pp->obob_z = pp->bob_z;
pp->angle.backup();
pp->horizon.backup();
@ -6701,9 +6689,7 @@ void InitAllPlayers(void)
// Initialize all [MAX_SW_PLAYERS] arrays here!
for (pp = Player; pp < &Player[MAX_SW_PLAYERS]; pp++)
{
pp->__int_ppos.X = pp->__int_popos.X = pfirst->__int_ppos.X;
pp->__int_ppos.Y = pp->__int_popos.Y = pfirst->__int_ppos.Y;
pp->__int_ppos.Z = pp->__int_popos.Z = pfirst->__int_ppos.Z;
pp->__int_ppos = pp->__int_popos = pfirst->__int_ppos;
pp->angle.ang = pp->angle.oang = pfirst->angle.ang;
pp->horizon.horiz = pp->horizon.ohoriz = pfirst->horizon.horiz;
pp->cursector = pfirst->cursector;
@ -6855,7 +6841,7 @@ void PlayerSpawnPosition(PLAYER* pp)
pp->angle.ang = pp->angle.oang = spawn_sprite->spr.angle;
pp->setcursector(spawn_sprite->sector());
getzsofslopeptr(pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, &cz, &fz);
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)
{
@ -6909,7 +6895,7 @@ void InitMultiPlayerInfo(void)
continue;
}
auto start0 = SpawnActor(MultiStatList[stat], ST1, nullptr, pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->angle.ang.Buildang(), 0);
auto start0 = SpawnActor(MultiStatList[stat], ST1, nullptr, pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->angle.ang.Buildang(), 0);
start0->clearUser();
start0->spr.picnum = ST1;
}

View file

@ -242,7 +242,7 @@ void SpawnQuake(sectortype* sect, int x, int y, int z,
bool SetQuake(PLAYER* pp, short tics, short amt)
{
SpawnQuake(pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, tics, amt, 30000);
SpawnQuake(pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, tics, amt, 30000);
return false;
}
@ -260,7 +260,7 @@ int SetGunQuake(DSWActor* actor)
int SetPlayerQuake(PLAYER* pp)
{
SpawnQuake(pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, 40, 8, 40000);
SpawnQuake(pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, 40, 8, 40000);
return 0;
}

View file

@ -580,9 +580,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, PLAYER& w, PLAYER*
}
if (arc.isReading())
{
w.__int_popos.X = w.__int_ppos.X;
w.__int_popos.Y = w.__int_ppos.X;
w.__int_popos.Z = w.__int_ppos.X;
w.__int_popos = w.__int_ppos;
w.oz_speed = w.z_speed;
w.ovect.X = w.vect.X;
w.ovect.Y = w.vect.Y;

View file

@ -1385,7 +1385,7 @@ int OperateSprite(DSWActor* actor, short player_is_operating)
{
pp = GlobPlayerP;
if (!FAFcansee(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector, actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (ActorSizeZ(actor) >> 1), actor->sector()))
if (!FAFcansee(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector, actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (ActorSizeZ(actor) >> 1), actor->sector()))
return false;
}
@ -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);
@ -1973,7 +1973,7 @@ bool NearThings(PLAYER* pp)
HitInfo hit{};
short dang = pp->angle.ang.Buildang();
FAFhitscan(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z - Z(30), pp->cursector, // Start position
FAFhitscan(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z - Z(30), pp->cursector, // Start position
bcos(dang), // X vector of 3D ang
bsin(dang), // Y vector of 3D ang
0, // Z vector of 3D ang
@ -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?
@ -2019,7 +2019,7 @@ void NearTagList(NEAR_TAG_INFO* ntip, PLAYER* pp, int z, int dist, int type, int
HitInfo near;
neartag({ pp->__int_ppos.X, pp->__int_ppos.Y, z }, pp->cursector, pp->angle.ang.Buildang(), near, dist, type);
neartag({ pp->int_ppos().X, pp->int_ppos().Y, z }, pp->cursector, pp->angle.ang.Buildang(), near, dist, type);
if (near.hitSector != nullptr)
{
@ -2133,7 +2133,7 @@ int DoPlayerGrabStar(PLAYER* pp)
auto actor = StarQueue[i];
if (actor != nullptr)
{
if (FindDistance3D(actor->int_pos().X - pp->__int_ppos.X, actor->int_pos().Y - pp->__int_ppos.Y, actor->int_pos().Z - pp->__int_ppos.Z + Z(12)) < 500)
if (FindDistance3D(actor->int_pos().X - pp->int_ppos().X, actor->int_pos().Y - pp->int_ppos().Y, actor->int_pos().Z - pp->int_ppos().Z + Z(12)) < 500)
{
break;
}
@ -2187,7 +2187,7 @@ void PlayerOperateEnv(PLAYER* pp)
NearThings(pp); // Check for player sound specified in a level sprite
}
BuildNearTagList(nti, sizeof(nti), pp, pp->__int_ppos.Z, 2048L, NTAG_SEARCH_LO_HI, 8);
BuildNearTagList(nti, sizeof(nti), pp, pp->int_ppos().Z, 2048L, NTAG_SEARCH_LO_HI, 8);
found = false;
@ -2670,7 +2670,7 @@ void DoSector(void)
}
else
{
DISTANCE(pp->__int_ppos.X, pp->__int_ppos.Y, sop->int_pmid().X, sop->int_pmid().Y, dist, a, b, c);
DISTANCE(pp->int_ppos().X, pp->int_ppos().Y, sop->int_pmid().X, sop->int_pmid().Y, dist, a, b, c);
if (dist < min_dist)
min_dist = dist;
}

View file

@ -380,7 +380,7 @@ static void UpdateAmbients()
if (sdist < 255 && amb->vocIndex == DIGI_WHIPME)
{
PLAYER* pp = Player + screenpeek;
if (!FAFcansee(spot->int_pos().X, spot->int_pos().Y, spot->int_pos().Z, spot->sector(), pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector))
if (!FAFcansee(spot->int_pos().X, spot->int_pos().Y, spot->int_pos().Z, spot->sector(), pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector))
{
sdist = 255;
}
@ -562,7 +562,7 @@ void SWSoundEngine::CalcPosVel(int type, const void* source, const float pt[3],
// Can the ambient sound see the player? If not, tone it down some.
if ((chanflags & CHANF_LOOP))
{
if (!FAFcansee(vpos.X, vpos.Y, vpos.Z, spot->sector(), pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector))
if (!FAFcansee(vpos.X, vpos.Y, vpos.Z, spot->sector(), pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector))
{
auto distvec = npos - campos;
npos = campos + distvec * 1.75f; // Play more quietly
@ -605,7 +605,7 @@ 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;

View file

@ -5024,7 +5024,7 @@ int DoGet(DSWActor* actor)
if (pp->Flags & (PF_DEAD))
continue;
DISTANCE(pp->__int_ppos.X, pp->__int_ppos.Y, actor->int_pos().X, actor->int_pos().Y, dist, a,b,c);
DISTANCE(pp->int_ppos().X, pp->int_ppos().Y, actor->int_pos().X, actor->int_pos().Y, dist, a,b,c);
if ((unsigned)dist > (plActor->user.Radius + actor->user.Radius))
{
continue;
@ -5038,7 +5038,7 @@ int DoGet(DSWActor* actor)
auto cstat_bak = actor->spr.cstat;
actor->spr.cstat |= (CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN);
can_see = FAFcansee(actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, actor->sector(),
pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector);
pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector);
actor->spr.cstat = cstat_bak;
if (!can_see)
@ -6059,7 +6059,7 @@ void SpriteControl(void)
pp = &Player[pnum];
// Only update the ones closest
DISTANCE(pp->__int_ppos.X, pp->__int_ppos.Y, actor->int_pos().X, actor->int_pos().Y, dist, tx, ty, tmin);
DISTANCE(pp->int_ppos().X, pp->int_ppos().Y, actor->int_pos().X, actor->int_pos().Y, dist, tx, ty, tmin);
AdjustActiveRange(pp, actor, dist);

View file

@ -765,7 +765,7 @@ void BossHealthMeter(void)
DSWActor* actor = BossSpriteNum[i];
if (actor != nullptr && !bosswasseen[i])
{
if (cansee(actor->int_pos().X, actor->int_pos().Y, ActorZOfTop(actor), actor->sector(), pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z - Z(40), pp->cursector))
if (cansee(actor->int_pos().X, actor->int_pos().Y, ActorZOfTop(actor), actor->sector(), pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z - Z(40), pp->cursector))
{
if (i == 0 && !bosswasseen[0])
{

View file

@ -1513,8 +1513,8 @@ void MovePlayer(PLAYER* pp, SECTOR_OBJECT* sop, int nx, int ny)
pp->Flags |= (PF_PLAYER_RIDING);
pp->RevolveAng = pp->angle.ang;
pp->Revolve.X = pp->__int_ppos.X;
pp->Revolve.Y = pp->__int_ppos.Y;
pp->Revolve.X = pp->int_ppos().X;
pp->Revolve.Y = pp->int_ppos().Y;
// set the delta angle to 0 when moving
pp->RevolveDeltaAng = nullAngle;
@ -1537,8 +1537,8 @@ void MovePlayer(PLAYER* pp, SECTOR_OBJECT* sop, int nx, int ny)
// moving then you
// know where he was last
pp->RevolveAng = pp->angle.ang;
pp->Revolve.X = pp->__int_ppos.X;
pp->Revolve.Y = pp->__int_ppos.Y;
pp->Revolve.X = pp->int_ppos().X;
pp->Revolve.Y = pp->int_ppos().Y;
// set the delta angle to 0 when moving
pp->RevolveDeltaAng = nullAngle;
@ -1774,7 +1774,7 @@ PlayerPart:
// prevents you from falling into map HOLEs created by moving
// Sectors and sprites around.
//if (!SO_EMPTY(sop))
updatesector(pp->__int_ppos.X, pp->__int_ppos.Y, &pp->cursector);
updatesector(pp->int_ppos().X, pp->int_ppos().Y, &pp->cursector);
// in case you are in a whirlpool
// move perfectly with the ride in the z direction
@ -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

@ -110,7 +110,7 @@ void VisViewChange(PLAYER* pp, int *vis)
}
// save off the brightest vis that you can see
if (FAFcansee(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector, x, y, z, sectp))
if (FAFcansee(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector, x, y, z, sectp))
{
if (VIS_VisCur(actor) < BrightestVis)
BrightestVis = VIS_VisCur(actor);

View file

@ -11150,7 +11150,7 @@ int DoRing(DSWActor* actor)
int z;
// move the center with the player
if (pp)
z = pp->__int_ppos.Z + Z(20);
z = pp->int_ppos().Z + Z(20);
else
z = int_ActorZOfMiddle(own) + Z(30);
@ -11236,7 +11236,7 @@ void InitSpellRing(PLAYER* pp)
for (missiles = 0, ang = ang_start; missiles < max_missiles; ang += ang_diff, missiles++)
{
auto actorNew = SpawnActor(STAT_MISSILE_SKIP4, FIREBALL1, s_Ring, pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, ang, 0);
auto actorNew = SpawnActor(STAT_MISSILE_SKIP4, FIREBALL1, s_Ring, pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, ang, 0);
actorNew->spr.hitag = LUMINOUS; //Always full brightness
actorNew->spr.xvel = 500;
@ -11255,7 +11255,7 @@ void InitSpellRing(PLAYER* pp)
// put it out there
actorNew->add_int_pos({ MulScale(actorNew->user.Dist, bcos(actorNew->int_ang()), 14), MulScale(actorNew->user.Dist, bsin(actorNew->int_ang()), 14),
pp->__int_ppos.Z + Z(20) + ((actorNew->user.Dist * (-pp->horizon.horiz.asq16() >> 9)) >> 9) });
pp->int_ppos().Z + Z(20) + ((actorNew->user.Dist * (-pp->horizon.horiz.asq16() >> 9)) >> 9) });
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + 512));
@ -11583,7 +11583,7 @@ void InitSpellNapalm(PLAYER* pp)
for (i = 0; i < SIZ(mp); i++)
{
auto actor = SpawnActor(STAT_MISSILE, FIREBALL1, s_Napalm, pp->cursector,
pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z + Z(12), pp->angle.ang.Buildang(), NAPALM_VELOCITY*2);
pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z + Z(12), pp->angle.ang.Buildang(), NAPALM_VELOCITY*2);
actor->spr.hitag = LUMINOUS; //Always full brightness
@ -11717,7 +11717,7 @@ int InitSpellMirv(PLAYER* pp)
return 0;
auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL1, s_Mirv, pp->cursector,
pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z + Z(12), pp->angle.ang.Buildang(), MIRV_VELOCITY);
pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z + Z(12), pp->angle.ang.Buildang(), MIRV_VELOCITY);
PlaySound(DIGI_MIRVWIZ, actorNew, v3df_follow);
@ -11841,7 +11841,7 @@ int InitSwordAttack(PLAYER* pp)
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
continue;
dist = Distance(pp->__int_ppos.X, pp->__int_ppos.Y, itActor->int_pos().X, itActor->int_pos().Y);
dist = Distance(pp->int_ppos().X, pp->int_ppos().Y, itActor->int_pos().X, itActor->int_pos().Y);
reach = 1000; // !JIM! was 800
face = 200;
@ -11866,7 +11866,7 @@ int InitSwordAttack(PLAYER* pp)
daang = pp->angle.ang.Buildang();
daz = -MulScale(pp->horizon.horiz.asq16(), 2000, 16) + (RandomRange(24000) - 12000);
FAFhitscan(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector, // Start position
FAFhitscan(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector, // Start position
bcos(daang), // X vector of 3D ang
bsin(daang), // Y vector of 3D ang
daz, // Z vector of 3D ang
@ -12009,7 +12009,7 @@ int InitFistAttack(PLAYER* pp)
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
continue;
dist = Distance(pp->__int_ppos.X, pp->__int_ppos.Y, itActor->int_pos().X, itActor->int_pos().Y);
dist = Distance(pp->int_ppos().X, pp->int_ppos().Y, itActor->int_pos().X, itActor->int_pos().Y);
if (pp->InventoryActive[2]) // Shadow Bombs give you demon fist
{
@ -12047,7 +12047,7 @@ int InitFistAttack(PLAYER* pp)
daang = pp->angle.ang.Buildang();
daz = -MulScale(pp->horizon.horiz.asq16(), 2000, 16) + (RandomRange(24000) - 12000);
FAFhitscan(pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->cursector, // Start position
FAFhitscan(pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->cursector, // Start position
bcos(daang), // X vector of 3D ang
bsin(daang), // Y vector of 3D ang
daz, // Z vector of 3D ang
@ -12597,10 +12597,10 @@ int InitStar(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
nz = pp->__int_ppos.Z + pp->bob_z + Z(8);
nz = pp->int_ppos().Z + pp->bob_z + Z(8);
// Spawn a shot
// Inserting and setting up variables
@ -12703,7 +12703,7 @@ void InitHeartAttack(PLAYER* pp)
return;
auto actorNew = SpawnActor(STAT_MISSILE_SKIP4, BLOOD_WORM, s_BloodWorm, pp->cursector,
pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z + Z(12), pp->angle.ang.Buildang(), BLOOD_WORM_VELOCITY*2);
pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z + Z(12), pp->angle.ang.Buildang(), BLOOD_WORM_VELOCITY*2);
actorNew->spr.hitag = LUMINOUS; //Always full brightness
@ -12843,9 +12843,9 @@ int InitShotgun(PLAYER* pp)
}
}
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
daz = nz = pp->__int_ppos.Z + pp->bob_z;
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
daz = nz = pp->int_ppos().Z + pp->bob_z;
daang = 64;
if (WeaponAutoAimHitscan(pp->actor, &daz, &daang, false) != nullptr)
@ -12997,10 +12997,10 @@ int InitLaser(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
nz = pp->__int_ppos.Z + pp->bob_z + Z(8);
nz = pp->int_ppos().Z + pp->bob_z + Z(8);
// Spawn a shot
// Inserting and setting up variables
@ -13100,10 +13100,10 @@ int InitRail(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
nz = pp->__int_ppos.Z + pp->bob_z + Z(11);
nz = pp->int_ppos().Z + pp->bob_z + Z(11);
// Spawn a shot
// Inserting and setting up variables
@ -13269,13 +13269,13 @@ int InitRocket(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
// Spawn a shot
// Inserting and setting up variables
nz = pp->__int_ppos.Z + pp->bob_z + Z(8);
nz = pp->int_ppos().Z + pp->bob_z + Z(8);
auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, &s_Rocket[0][0], pp->cursector,
nx, ny, nz, pp->angle.ang.Buildang(), ROCKET_VELOCITY);
@ -13376,14 +13376,14 @@ int InitBunnyRocket(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
// Spawn a shot
// Inserting and setting up variables
//nz = pp->posz + pp->bob_z + Z(12);
nz = pp->__int_ppos.Z + pp->bob_z + Z(8);
nz = pp->int_ppos().Z + pp->bob_z + Z(8);
auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R4, &s_BunnyRocket[0][0], pp->cursector,
nx, ny, nz, pp->angle.ang.Buildang(), ROCKET_VELOCITY);
@ -13479,13 +13479,13 @@ int InitNuke(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
// Spawn a shot
// Inserting and setting up variables
nz = pp->__int_ppos.Z + pp->bob_z + Z(8);
nz = pp->int_ppos().Z + pp->bob_z + Z(8);
auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, &s_Rocket[0][0], pp->cursector,
nx, ny, nz, pp->angle.ang.Buildang(), 700);
@ -13634,8 +13634,8 @@ int InitMicro(PLAYER* pp)
TARGET_SORT* ts = TargetSort;
DSWActor* picked = nullptr;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
const int MAX_MICRO = 1;
@ -13663,7 +13663,7 @@ int InitMicro(PLAYER* pp)
ang = pp->angle.ang.Buildang();
}
nz = pp->__int_ppos.Z + pp->bob_z + Z(14);
nz = pp->int_ppos().Z + pp->bob_z + Z(14);
nz += Z(RandomRange(20)) - Z(10);
// Spawn a shot
@ -14828,9 +14828,9 @@ int InitTracerUzi(PLAYER* pp)
short lat_dist[] = {800,-800};
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nz = pp->__int_ppos.Z + Z(8) + -MulScale(pp->horizon.horiz.asq16(), 72, 16);
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
nz = pp->int_ppos().Z + Z(8) + -MulScale(pp->horizon.horiz.asq16(), 72, 16);
// Spawn a shot
// Inserting and setting up variables
@ -15127,8 +15127,8 @@ int InitUzi(PLAYER* pp)
if (RANDOM_P2(1024) < 400)
InitTracerUzi(pp);
nz = pp->__int_ppos.Z + pp->bob_z;
daz = pp->__int_ppos.Z + pp->bob_z;
nz = pp->int_ppos().Z + pp->bob_z;
daz = pp->int_ppos().Z + pp->bob_z;
daang = 32;
if (WeaponAutoAimHitscan(pp->actor, &daz, &daang, false) != nullptr)
{
@ -15147,7 +15147,7 @@ int InitUzi(PLAYER* pp)
xvect = bcos(daang);
yvect = bsin(daang);
zvect = daz;
FAFhitscan(pp->__int_ppos.X, pp->__int_ppos.Y, nz, pp->cursector, // Start position
FAFhitscan(pp->int_ppos().X, pp->int_ppos().Y, nz, pp->cursector, // Start position
xvect,yvect,zvect,
hit, CLIPMASK_MISSILE);
@ -16280,9 +16280,9 @@ int InitGrenade(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nz = pp->__int_ppos.Z + pp->bob_z + Z(8);
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
nz = pp->int_ppos().Z + pp->bob_z + Z(8);
// Spawn a shot
// Inserting and setting up variables
@ -16425,9 +16425,9 @@ int InitMine(PLAYER* pp)
if (!pp->insector())
return 0;
nx = pp->__int_ppos.X;
ny = pp->__int_ppos.Y;
nz = pp->__int_ppos.Z + pp->bob_z + Z(8);
nx = pp->int_ppos().X;
ny = pp->int_ppos().Y;
nz = pp->int_ppos().Z + pp->bob_z + Z(8);
// Spawn a shot
// Inserting and setting up variables
@ -16556,10 +16556,10 @@ int InitFireball(PLAYER* pp)
if (!pp->insector())
return 0;
nx += pp->__int_ppos.X;
ny += pp->__int_ppos.Y;
nx += pp->int_ppos().X;
ny += pp->int_ppos().Y;
nz = pp->__int_ppos.Z + pp->bob_z + Z(15);
nz = pp->int_ppos().Z + pp->bob_z + Z(15);
auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL1, s_Fireball, pp->cursector, nx, ny, nz, pp->angle.ang.Buildang(), FIREBALL_VELOCITY);
@ -17755,7 +17755,7 @@ int DoFloorBlood(DSWActor* actor)
{
pp = &Player[pnum];
DISTANCE(actor->int_pos().X, actor->int_pos().Y, pp->__int_ppos.X, pp->__int_ppos.Y, dist, a, b, c);
DISTANCE(actor->int_pos().X, actor->int_pos().Y, pp->int_ppos().X, pp->int_ppos().Y, dist, a, b, c);
if (dist < near_dist)
{

View file

@ -776,7 +776,7 @@ void SpawnZombie(PLAYER* pp, DSWActor* weaponActor)
if (ownerActor == nullptr)
return;
auto actorNew = SpawnActor(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], pp->cursector, pp->__int_ppos.X, pp->__int_ppos.Y, pp->__int_ppos.Z, pp->angle.ang.Buildang(), 0);
auto actorNew = SpawnActor(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], pp->cursector, pp->int_ppos().X, pp->int_ppos().Y, pp->int_ppos().Z, pp->angle.ang.Buildang(), 0);
SetOwner(actorNew, ownerActor);
actorNew->spr.pal = actorNew->user.spal = ownerActor->user.spal;
actorNew->set_int_ang(RANDOM_P2(2048));