mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-25 02:01:46 +00:00
- SW: Replace SECTOR_OBJECT
zmid
with pmid.Z
calls and eliminate pmid
union.
This commit is contained in:
parent
9145895b47
commit
0375dfdf83
5 changed files with 13 additions and 17 deletions
|
@ -1412,11 +1412,7 @@ struct SECTOR_OBJECT
|
|||
|
||||
TObjPtr<DSWActor*> sp_child; // child sprite that holds info for the sector object
|
||||
|
||||
union
|
||||
{
|
||||
struct { int BLAHBLAHX, BLAHBLAHY, zmid; }; // midpoints of the sector object
|
||||
vec3_t pmid;
|
||||
};
|
||||
vec3_t pmid; // midpoints of the sector object
|
||||
|
||||
TObjPtr<DSWActor*> so_actors[MAX_SO_SPRITE]; // hold the actors of the object
|
||||
TObjPtr<DSWActor*> match_event_actor; // spritenum of the match event sprite
|
||||
|
@ -2138,7 +2134,7 @@ struct ANIM
|
|||
case ANIM_Floorz:
|
||||
return *sector[animindex].floorzptr(!write);
|
||||
case ANIM_SopZ:
|
||||
return SectorObject[animindex].zmid;
|
||||
return SectorObject[animindex].pmid.Z;
|
||||
case ANIM_Spritez:
|
||||
if (animactor == nullptr) return scratch;
|
||||
return animactor->spr.pos.Z;
|
||||
|
|
|
@ -110,7 +110,7 @@ static int &getvalue(so_interp::interp_data& element, bool write)
|
|||
case soi_soy:
|
||||
return SectorObject[index].pmid.Y;
|
||||
case soi_soz:
|
||||
return SectorObject[index].zmid;
|
||||
return SectorObject[index].pmid.Z;
|
||||
case soi_sprx:
|
||||
if (element.actorofang)
|
||||
return element.actorofang->spr.pos.X;
|
||||
|
|
|
@ -4834,7 +4834,7 @@ void FindMainSector(SECTOR_OBJECT* sop)
|
|||
// set it to something valid
|
||||
sop->op_main_sector = §or[0];
|
||||
|
||||
updatesectorz(sx, sy, sop->zmid, &sop->op_main_sector);
|
||||
updatesectorz(sx, sy, sop->pmid.Z, &sop->op_main_sector);
|
||||
|
||||
PlaceSectorObject(sop, sx, sy);
|
||||
}
|
||||
|
|
|
@ -638,7 +638,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, SECTOR_OBJECT& w,
|
|||
("child", w.sp_child, def->sp_child)
|
||||
("xmid", w.pmid.X, def->pmid.X)
|
||||
("ymid", w.pmid.Y, def->pmid.Y)
|
||||
("zmid", w.zmid, def->zmid)
|
||||
("zmid", w.pmid.Z, def->pmid.Z)
|
||||
("vel", w.vel, def->vel)
|
||||
("vel_tgt", w.vel_tgt, def->vel_tgt)
|
||||
("player_xoff", w.player_xoff, def->player_xoff)
|
||||
|
|
|
@ -718,7 +718,7 @@ void SectorObjectSetupBounds(SECTOR_OBJECT* sop)
|
|||
{
|
||||
sop->pmid.X = BoundActor->spr.pos.X;
|
||||
sop->pmid.Y = BoundActor->spr.pos.Y;
|
||||
sop->zmid = BoundActor->spr.pos.Z;
|
||||
sop->pmid.Z = BoundActor->spr.pos.Z;
|
||||
KillActor(BoundActor);
|
||||
}
|
||||
|
||||
|
@ -943,12 +943,12 @@ cont:
|
|||
|
||||
ASSERT(zmid != -9999999);
|
||||
|
||||
sop->zmid = zmid;
|
||||
sop->pmid.Z = zmid;
|
||||
|
||||
for (i = 0; sop->so_actors[i] != nullptr; i++)
|
||||
{
|
||||
auto actor = sop->so_actors[i];
|
||||
actor->user.pos.Z = sop->zmid - actor->spr.pos.Z;
|
||||
actor->user.pos.Z = sop->pmid.Z - actor->spr.pos.Z;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1037,14 +1037,14 @@ void SetupSectorObject(sectortype* sectp, short tag)
|
|||
case TAG_OBJECT_CENTER - 500:
|
||||
|
||||
sop->mid_sector = sectp;
|
||||
SectorMidPoint(sectp, &sop->pmid.X, &sop->pmid.Y, &sop->zmid);
|
||||
SectorMidPoint(sectp, &sop->pmid.X, &sop->pmid.Y, &sop->pmid.Z);
|
||||
|
||||
sop->dir = 1;
|
||||
sop->track = sectp->hitag;
|
||||
|
||||
// spawn a sprite to make it easier to integrate with sprite routines
|
||||
auto actorNew = SpawnActor(STAT_SO_SP_CHILD, 0, nullptr, sectp,
|
||||
sop->pmid.X, sop->pmid.Y, sop->zmid, 0, 0);
|
||||
sop->pmid.X, sop->pmid.Y, sop->pmid.Z, 0, 0);
|
||||
sop->sp_child = actorNew;
|
||||
actorNew->user.sop_parent = sop;
|
||||
actorNew->user.Flags2 |= (SPR2_SPRITE_FAKE_BLOCK); // for damage test
|
||||
|
@ -1608,7 +1608,7 @@ void MovePoints(SECTOR_OBJECT* sop, short delta_ang, int nx, int ny)
|
|||
|
||||
// setting floorz if need be
|
||||
if ((sop->flags & SOBJ_ZMID_FLOOR))
|
||||
sop->zmid = sop->mid_sector->floorz;
|
||||
sop->pmid.Z = sop->mid_sector->floorz;
|
||||
|
||||
for (sectp = sop->sectp, j = 0; *sectp; sectp++, j++)
|
||||
{
|
||||
|
@ -1708,7 +1708,7 @@ PlayerPart:
|
|||
if ((sop->flags & SOBJ_SPRITE_OBJ))
|
||||
{
|
||||
// Sprite Objects follow zmid
|
||||
actor->spr.pos.Z = sop->zmid - actor->user.pos.Z;
|
||||
actor->spr.pos.Z = sop->pmid.Z - actor->user.pos.Z;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2524,7 +2524,7 @@ void DoTrack(SECTOR_OBJECT* sop, short locktics, int *nx, int *ny)
|
|||
|
||||
// (velocity * difference between the target and the object)
|
||||
// / distance
|
||||
sop->z_rate = (sop->vel * (sop->zmid - dz)) / dist;
|
||||
sop->z_rate = (sop->vel * (sop->pmid.Z - dz)) / dist;
|
||||
|
||||
// take absolute value and convert to pixels (divide by 256)
|
||||
sop->z_rate = PIXZ(labs(sop->z_rate));
|
||||
|
|
Loading…
Reference in a new issue