mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-01 05:20:43 +00:00
- large batch of set_int_pos, minus Exhumed
This commit is contained in:
parent
5f586ee40c
commit
64391c52f9
8 changed files with 22 additions and 34 deletions
|
@ -429,6 +429,7 @@ struct walltype
|
|||
walltype* point2Wall() const;
|
||||
vec2_t delta() const { return point2Wall()->wall_int_pos() - wall_int_pos(); }
|
||||
vec2_t center() const { return(point2Wall()->wall_int_pos() + wall_int_pos()) / 2; }
|
||||
DVector2 fcenter() const { return(point2Wall()->pos + pos) / 2; }
|
||||
int deltax() const { return point2Wall()->wall_int_pos().X - wall_int_pos().X; }
|
||||
int deltay() const { return point2Wall()->wall_int_pos().Y - wall_int_pos().Y; }
|
||||
bool twoSided() const { return nextsector >= 0; }
|
||||
|
|
|
@ -4541,9 +4541,7 @@ static Collision MoveThing(DBloodActor* actor)
|
|||
actor->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||
if ((actor->GetOwner()) && !cl_bloodvanillaexplosions && !VanillaMode())
|
||||
enginecompatibility_mode = ENGINECOMPATIBILITY_NONE; // improved clipmove accuracy
|
||||
auto pos = actor->int_pos();
|
||||
ClipMove(pos, &pSector, actor->vel.X >> 12, actor->vel.Y >> 12, actor->spr.clipdist << 2, (actor->int_pos().Z - top) / 4, (bottom - actor->int_pos().Z) / 4, CLIPMASK0, lhit);
|
||||
actor->set_int_pos(pos);
|
||||
ClipMove(actor->spr.pos, &pSector, actor->vel.X >> 12, actor->vel.Y >> 12, actor->spr.clipdist << 2, (actor->int_pos().Z - top) / 4, (bottom - actor->int_pos().Z) / 4, CLIPMASK0, lhit);
|
||||
actor->hit.hit = lhit;
|
||||
enginecompatibility_mode = bakCompat; // restore
|
||||
actor->spr.cstat = bakCstat;
|
||||
|
@ -4763,9 +4761,7 @@ void MoveDude(DBloodActor* actor)
|
|||
{
|
||||
auto bakCstat = actor->spr.cstat;
|
||||
actor->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||
auto pos = actor->int_pos();
|
||||
ClipMove(pos, &pSector, actor->vel.X >> 12, actor->vel.Y >> 12, wd, tz, bz, CLIPMASK0, actor->hit.hit);
|
||||
actor->set_int_pos(pos);
|
||||
ClipMove(actor->spr.pos, &pSector, actor->vel.X >> 12, actor->vel.Y >> 12, wd, tz, bz, CLIPMASK0, actor->hit.hit);
|
||||
if (pSector == nullptr)
|
||||
{
|
||||
pSector = actor->sector();
|
||||
|
|
|
@ -444,7 +444,7 @@ static tspritetype* viewAddEffect(tspriteArray& tsprites, int nTSprite, VIEW_EFF
|
|||
break;
|
||||
|
||||
sectortype* pSector = pTSprite->sectp;
|
||||
pNSprite->set_int_pos({ pTSprite->int_pos().X, pTSprite->int_pos().Y, pSector->int_ceilingz() });
|
||||
pNSprite->pos = { pTSprite->pos.X, pTSprite->pos.Y, pSector->ceilingz };
|
||||
|
||||
pNSprite->picnum = 624;
|
||||
pNSprite->shade = ((pTSprite->int_pos().Z - pSector->int_ceilingz()) >> 8) - 64;
|
||||
|
@ -462,7 +462,7 @@ static tspritetype* viewAddEffect(tspriteArray& tsprites, int nTSprite, VIEW_EFF
|
|||
break;
|
||||
|
||||
sectortype* pSector = pTSprite->sectp;
|
||||
pNSprite->set_int_pos({ pTSprite->int_pos().X, pTSprite->int_pos().Y, pSector->int_floorz() });
|
||||
pNSprite->pos = { pTSprite->pos.X, pTSprite->pos.Y, pSector->floorz };
|
||||
pNSprite->picnum = 624;
|
||||
uint8_t nShade = (pSector->int_floorz() - pTSprite->int_pos().Z) >> 8;
|
||||
pNSprite->shade = nShade - 32;
|
||||
|
@ -499,7 +499,7 @@ static tspritetype* viewAddEffect(tspriteArray& tsprites, int nTSprite, VIEW_EFF
|
|||
if (!pNSprite)
|
||||
break;
|
||||
|
||||
pNSprite->set_int_pos({ pTSprite->int_pos().X, pTSprite->int_pos().Y, pTSprite->int_pos().Z - (32 << 8) - (weaponIcon.zOffset << 8) });
|
||||
pNSprite->pos = pTSprite->pos.plusZ(-32 - weaponIcon.zOffset);
|
||||
pNSprite->picnum = nTile;
|
||||
pNSprite->shade = pTSprite->shade;
|
||||
pNSprite->xrepeat = 32;
|
||||
|
|
|
@ -47,6 +47,13 @@ void GetZRange(DBloodActor* pSprite, int* ceilZ, Collision* ceilHit, int* floorZ
|
|||
void GetZRangeAtXYZ(int x, int y, int z, sectortype* pSector, int* ceilZ, Collision* ceilHit, int* floorZ, Collision* floorHit, int nDist, unsigned int nMask, unsigned int nClipParallax = 0);
|
||||
int GetDistToLine(int x1, int y1, int x2, int y2, int x3, int y3);
|
||||
void ClipMove(vec3_t& pos, sectortype** pSector, int xv, int yv, int wd, int cd, int fd, unsigned int nMask, CollisionBase& hit, int tracecount = 3);
|
||||
inline void ClipMove(DVector3& pos, sectortype** pSector, int xv, int yv, int wd, int cd, int fd, unsigned int nMask, CollisionBase& hit, int tracecount = 3)
|
||||
{
|
||||
// this uses floats only partially.
|
||||
vec3_t ipos = { int(pos.X * worldtoint), int(pos.Y * worldtoint), int(pos.Z * zworldtoint)};
|
||||
ClipMove(ipos, pSector, xv, yv, wd, cd, fd, nMask, hit, tracecount);
|
||||
pos = { ipos.X * inttoworld, ipos.Y * inttoworld, ipos.Z * zinttoworld };
|
||||
}
|
||||
BitArray GetClosestSpriteSectors(sectortype* pSector, int x, int y, int nDist, TArray<walltype*>* pWalls, bool newSectCheckMethod = false);
|
||||
int picWidth(int nPic, int repeat);
|
||||
int picHeight(int nPic, int repeat);
|
||||
|
|
|
@ -977,7 +977,7 @@ static DBloodActor* randomDropPickupObject(DBloodActor* sourceactor, int prevIte
|
|||
if (spawned)
|
||||
{
|
||||
sourceactor->xspr.dropMsg = uint8_t(spawned->spr.type); // store dropped item type in dropMsg
|
||||
spawned->set_int_pos(sourceactor->int_pos());
|
||||
spawned->spr.pos = sourceactor->spr.pos;
|
||||
|
||||
if ((sourceactor->spr.flags & kModernTypeFlag1) && (sourceactor->xspr.txID > 0 || (sourceactor->xspr.txID != 3 && sourceactor->xspr.lockMsg > 0)))
|
||||
{
|
||||
|
@ -1676,10 +1676,8 @@ void debrisMove(int listIndex)
|
|||
auto oldcstat = actor->spr.cstat;
|
||||
actor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
|
||||
|
||||
auto pos = actor->int_pos();
|
||||
ClipMove(pos, &pSector, actor->vel.X >> 12,
|
||||
ClipMove(actor->spr.pos, &pSector, actor->vel.X >> 12,
|
||||
actor->vel.Y >> 12, clipDist, ceilDist, floorDist, CLIPMASK0, moveHit);
|
||||
actor->set_int_pos(pos);
|
||||
actor->hit.hit = moveHit;
|
||||
|
||||
actor->spr.cstat = oldcstat;
|
||||
|
|
|
@ -2957,16 +2957,11 @@ static void fireflyflyingeffect(DDukeActor *actor)
|
|||
else
|
||||
actor->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE;
|
||||
|
||||
double dx = Owner->int_pos().X - ps[p].GetActor()->int_pos().X;
|
||||
double dy = Owner->int_pos().Y - ps[p].GetActor()->int_pos().Y;
|
||||
double dist = sqrt(dx * dx + dy * dy);
|
||||
if (dist != 0.0)
|
||||
{
|
||||
dx /= dist;
|
||||
dy /= dist;
|
||||
}
|
||||
auto dvec = Owner->spr.pos.XY() - ps[p].GetActor()->spr.pos.XY();
|
||||
double dist = dvec.Length();
|
||||
|
||||
actor->set_int_pos({ (int)(Owner->int_pos().X - (dx * -10.0)), (int)(Owner->int_pos().Y - (dy * -10.0)), Owner->int_pos().Z + 2048 });
|
||||
if (dist != 0.0) dvec /= dist;
|
||||
actor->spr.pos = Owner->spr.pos + DVector3(dvec.X * -0.625, dvec.Y * -0.625, 8);
|
||||
|
||||
if (Owner->spr.extra <= 0)
|
||||
{
|
||||
|
|
|
@ -427,7 +427,6 @@ void DoMotionBlur(tspriteArray& tsprites, tspritetype const * const tsp)
|
|||
void WarpCopySprite(tspriteArray& tsprites)
|
||||
{
|
||||
int spnum;
|
||||
int xoff,yoff,zoff;
|
||||
int match;
|
||||
|
||||
// look for the first one
|
||||
|
@ -456,15 +455,7 @@ void WarpCopySprite(tspriteArray& tsprites)
|
|||
|
||||
tspritetype* newTSpr = renderAddTsprite(tsprites, itActor2);
|
||||
newTSpr->statnum = 0;
|
||||
|
||||
xoff = itActor->int_pos().X - newTSpr->int_pos().X;
|
||||
yoff = itActor->int_pos().Y - newTSpr->int_pos().Y;
|
||||
zoff = itActor->int_pos().Z - newTSpr->int_pos().Z;
|
||||
|
||||
newTSpr->set_int_pos({
|
||||
itActor1->int_pos().X - xoff,
|
||||
itActor1->int_pos().Y - yoff,
|
||||
itActor1->int_pos().Z - zoff });
|
||||
newTSpr->pos += itActor1->spr.pos - itActor->spr.pos;
|
||||
newTSpr->sectp = itActor1->sector();
|
||||
}
|
||||
|
||||
|
@ -481,7 +472,7 @@ void WarpCopySprite(tspriteArray& tsprites)
|
|||
newTSpr->statnum = 0;
|
||||
|
||||
auto off = itActor1->int_pos() - newTSpr->int_pos();
|
||||
newTSpr->set_int_pos(itActor->int_pos() - off);
|
||||
newTSpr->pos += itActor->spr.pos - itActor1->spr.pos;
|
||||
newTSpr->sectp = itActor->sector();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1716,7 +1716,7 @@ void UpdatePlayerUnderSprite(PLAYER* pp)
|
|||
|
||||
DSWActor* act_under = pp->PlayerUnderActor;
|
||||
|
||||
act_under->set_int_pos(act_over->int_pos());
|
||||
act_under->spr.pos = act_over->spr.pos;
|
||||
ChangeActorSect(act_under, act_over->sector());
|
||||
|
||||
SpriteWarpToUnderwater(act_under);
|
||||
|
|
Loading…
Reference in a new issue