mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 08:51:24 +00:00
- Remove the TVector2 (const TVector3<vec_t> &other)
constructor.
* This narrowing constructor was causing a problem with a `clamp()` overload in the next commit. * Believe this is a product of a by-gone time before we had the `XY()` method on `TVector3<T>` objects.
This commit is contained in:
parent
592d416485
commit
8c1e392afc
33 changed files with 110 additions and 115 deletions
|
@ -53,7 +53,7 @@ TArray<int> LevelAABBTree::FindNodePath(unsigned int line, unsigned int node)
|
|||
return path;
|
||||
}
|
||||
|
||||
double LevelAABBTree::RayTest(const DVector3 &ray_start, const DVector3 &ray_end)
|
||||
double LevelAABBTree::RayTest(const DVector2 &ray_start, const DVector2 &ray_end)
|
||||
{
|
||||
// Precalculate some of the variables used by the ray/line intersection test
|
||||
DVector2 raydelta = ray_end - ray_start;
|
||||
|
|
|
@ -49,7 +49,7 @@ protected:
|
|||
|
||||
public:
|
||||
// Shoot a ray from ray_start to ray_end and return the closest hit as a fractional value between 0 and 1. Returns 1 if no line was hit.
|
||||
double RayTest(const DVector3 &ray_start, const DVector3 &ray_end);
|
||||
double RayTest(const DVector2 &ray_start, const DVector2 &ray_end);
|
||||
|
||||
const void *Nodes() const { return nodes.Data(); }
|
||||
const void *Lines() const { return treelines.Data(); }
|
||||
|
|
|
@ -83,7 +83,7 @@ CUSTOM_CVAR(Int, gl_shadowmap_quality, 512, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
|||
}
|
||||
}
|
||||
|
||||
bool IShadowMap::ShadowTest(const DVector3 &lpos, const DVector3 &pos)
|
||||
bool IShadowMap::ShadowTest(const DVector2 &lpos, const DVector2 &pos)
|
||||
{
|
||||
if (mAABBTree && gl_light_shadowmap)
|
||||
return mAABBTree->RayTest(lpos, pos) >= 1.0f;
|
||||
|
|
|
@ -17,7 +17,7 @@ public:
|
|||
void Reset();
|
||||
|
||||
// Test if a world position is in shadow relative to the specified light and returns false if it is
|
||||
bool ShadowTest(const DVector3 &lpos, const DVector3 &pos);
|
||||
bool ShadowTest(const DVector2 &lpos, const DVector2 &pos);
|
||||
|
||||
static cycle_t UpdateCycles;
|
||||
static int LightsProcessed;
|
||||
|
|
|
@ -88,11 +88,6 @@ struct TVector2
|
|||
|
||||
TVector2(const TVector2 &other) = default;
|
||||
|
||||
TVector2 (const TVector3<vec_t> &other) // Copy the X and Y from the 3D vector and discard the Z
|
||||
: X(other.X), Y(other.Y)
|
||||
{
|
||||
}
|
||||
|
||||
TVector2(vec_t *o)
|
||||
: X(o[0]), Y(o[1])
|
||||
{
|
||||
|
|
|
@ -559,7 +559,7 @@ double intersectWallSprite(DCoreActor* actor, const DVector3& start, const DVect
|
|||
{
|
||||
DVector2 points[2];
|
||||
|
||||
GetWallSpritePosition(&actor->spr, actor->spr.pos, points, false);
|
||||
GetWallSpritePosition(&actor->spr, actor->spr.pos.XY(), points, false);
|
||||
|
||||
points[1] -= points[0];
|
||||
if ((actor->spr.cstat & CSTAT_SPRITE_ONE_SIDE)) //check for back side of one way sprite
|
||||
|
@ -617,7 +617,7 @@ double intersectFloorSprite(DCoreActor* actor, const DVector3& start, const DVec
|
|||
}
|
||||
|
||||
DVector2 points[4];
|
||||
GetFlatSpritePosition(actor, actor->spr.pos, points, nullptr, false);
|
||||
GetFlatSpritePosition(actor, actor->spr.pos.XY(), points, nullptr, false);
|
||||
double factor = (actor->spr.pos.Z - start.Z) / direction.Z;
|
||||
if (factor <= 0 || factor > maxfactor) return -1;
|
||||
result = start + factor * direction;
|
||||
|
@ -635,7 +635,7 @@ double intersectSlopeSprite(DCoreActor* actor, const DVector3& start, const DVec
|
|||
{
|
||||
DVector2 points[4];
|
||||
double ptz[4];
|
||||
GetFlatSpritePosition(actor, actor->spr.pos, points, ptz, false);
|
||||
GetFlatSpritePosition(actor, actor->spr.pos.XY(), points, ptz, false);
|
||||
DVector3 pt1(points[0], ptz[0]);
|
||||
DVector3 pt2(points[1], ptz[1]);
|
||||
DVector3 pt3(points[2], ptz[2]);
|
||||
|
@ -854,8 +854,8 @@ bool checkRangeOfWall(walltype* wal, EWallFlags flagmask, const DVector3& pos, d
|
|||
auto pos2 = wal->point2Wall()->pos;
|
||||
|
||||
// Checks borrowed from GZDoom.
|
||||
DVector2 boxtl = pos - DVector2(maxdist, maxdist);
|
||||
DVector2 boxbr = pos + DVector2(maxdist, maxdist);
|
||||
DVector2 boxtl = pos.XY() - DVector2(maxdist, maxdist);
|
||||
DVector2 boxbr = pos.XY() + DVector2(maxdist, maxdist);
|
||||
if (!BoxInRange(boxtl, boxbr, pos1, pos2)) return false;
|
||||
if (BoxOnLineSide(boxtl, boxbr, pos1, pos2 - pos1) != -1) return false;
|
||||
|
||||
|
@ -1211,7 +1211,7 @@ int pushmove(DVector3& pos, sectortype** pSect, double walldist, double ceildist
|
|||
for (int t = 0; t < 16; t++)
|
||||
{
|
||||
pos += dv;
|
||||
if (IsCloseToWall(pos, wal, (walldist - 0.25)) == EClose::Outside) break;
|
||||
if (IsCloseToWall(pos.XY(), wal, (walldist - 0.25)) == EClose::Outside) break;
|
||||
}
|
||||
pushed = true;
|
||||
|
||||
|
|
|
@ -380,8 +380,8 @@ void HWDrawInfo::CreateScene(bool portal)
|
|||
|
||||
if(!portal) mClipper->SetVisibleRange(vp.RotAngle, a1);
|
||||
|
||||
if (a1 != 0xffffffff) mDrawer.Init(this, mClipper, vp.Pos, vp.RotAngle - a1, vp.RotAngle + a1);
|
||||
else mDrawer.Init(this, mClipper, vp.Pos, 0, 0);
|
||||
if (a1 != 0xffffffff) mDrawer.Init(this, mClipper, vp.Pos.XY(), vp.RotAngle - a1, vp.RotAngle + a1);
|
||||
else mDrawer.Init(this, mClipper, vp.Pos.XY(), 0, 0);
|
||||
if (vp.SectNums)
|
||||
mDrawer.RenderScene(vp.SectNums, vp.SectCount, portal);
|
||||
else
|
||||
|
@ -417,8 +417,8 @@ void HWDrawInfo::CreateScene(bool portal)
|
|||
if (eff.geosector[i] == drawsectp) drawsectp = eff.geosectorwarp[i];
|
||||
}
|
||||
|
||||
if (a1 != 0xffffffff) mDrawer.Init(this, mClipper, vp.Pos, vp.RotAngle - a1, vp.RotAngle + a1);
|
||||
else mDrawer.Init(this, mClipper, vp.Pos, 0, 0);
|
||||
if (a1 != 0xffffffff) mDrawer.Init(this, mClipper, vp.Pos.XY(), vp.RotAngle - a1, vp.RotAngle + a1);
|
||||
else mDrawer.Init(this, mClipper, vp.Pos.XY(), 0, 0);
|
||||
|
||||
int drawsect = sectindex(drawsectp);
|
||||
mDrawer.RenderScene(&drawsect, 1, false);
|
||||
|
@ -449,8 +449,8 @@ void HWDrawInfo::CreateScene(bool portal)
|
|||
if (eff.geosector[i] == orgdrawsectp) drawsectp = eff.geosectorwarp2[i];
|
||||
}
|
||||
|
||||
if (a1 != 0xffffffff) mDrawer.Init(this, mClipper, vp.Pos, vp.RotAngle - a1, vp.RotAngle + a1);
|
||||
else mDrawer.Init(this, mClipper, vp.Pos, 0, 0);
|
||||
if (a1 != 0xffffffff) mDrawer.Init(this, mClipper, vp.Pos.XY(), vp.RotAngle - a1, vp.RotAngle + a1);
|
||||
else mDrawer.Init(this, mClipper, vp.Pos.XY(), 0, 0);
|
||||
drawsect = sectindex(drawsectp);
|
||||
mDrawer.RenderScene(&drawsect, 1, false);
|
||||
|
||||
|
|
|
@ -472,7 +472,7 @@ bool P_ClipLineToPortal(walltype* line, walltype* portal, DVector2 view)
|
|||
|
||||
int HWLinePortal::ClipSeg(walltype *seg, const DVector3 &viewpos)
|
||||
{
|
||||
return P_ClipLineToPortal(seg, line, viewpos) ? PClip_InFront : PClip_Inside;
|
||||
return P_ClipLineToPortal(seg, line, viewpos.XY()) ? PClip_InFront : PClip_Inside;
|
||||
}
|
||||
|
||||
int HWLinePortal::ClipSector(sectortype *sub)
|
||||
|
@ -607,7 +607,7 @@ bool HWLineToLinePortal::Setup(HWDrawInfo *di, FRenderState &rstate, Clipper *cl
|
|||
auto destcenter = line->center();
|
||||
destcenter.Y = -destcenter.Y;
|
||||
|
||||
DVector2 npos = vp.Pos - srccenter + destcenter;
|
||||
DVector2 npos = vp.Pos.XY() - srccenter + destcenter;
|
||||
|
||||
#if 0 // Blood does not rotate these. Needs map checking to make sure it can be added.
|
||||
int dx = origin->point2Wall()->x - origin->x;
|
||||
|
@ -674,7 +674,7 @@ bool HWLineToSpritePortal::Setup(HWDrawInfo* di, FRenderState& rstate, Clipper*
|
|||
auto srccenter = origin->center();
|
||||
srccenter.Y = -srccenter.Y;
|
||||
DVector2 destcenter = { camera->spr.pos.X, -camera->spr.pos.Y };
|
||||
DVector2 npos = vp.Pos - srccenter + destcenter;
|
||||
DVector2 npos = vp.Pos.XY() - srccenter + destcenter;
|
||||
|
||||
double origx = vp.Pos.X;
|
||||
double origy = vp.Pos.Y;
|
||||
|
|
|
@ -5085,11 +5085,11 @@ void MoveDude(DBloodActor* actor)
|
|||
switch (tileGetSurfType(floorColl))
|
||||
{
|
||||
case kSurfWater:
|
||||
gFX.fxSpawnActor(FX_9, actor->sector(), DVector3(actor->spr.pos, floorZ));
|
||||
gFX.fxSpawnActor(FX_9, actor->sector(), DVector3(actor->spr.pos.XY(), floorZ));
|
||||
break;
|
||||
case kSurfLava:
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_10, actor->sector(), DVector3(actor->spr.pos, floorZ));
|
||||
auto pFX = gFX.fxSpawnActor(FX_10, actor->sector(), DVector3(actor->spr.pos.XY(), floorZ));
|
||||
if (pFX)
|
||||
{
|
||||
for (int i = 0; i < 7; i++)
|
||||
|
|
|
@ -278,7 +278,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && getPlayer(target->spr.type - kDudePlayer1)->isRunning
|
||||
&& Chance(0x8000))
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -299,7 +299,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
}
|
||||
else if (nDist < 0x460 && nDeltaAngle < DAngle1 * 5)
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -346,7 +346,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
&& (target->spr.flags & 2) && gGameOptions.nDifficulty >= 2 && target->IsPlayerActor() && !getPlayer(target->spr.type - kDudePlayer1)->isRunning
|
||||
&& Chance(0x8000))
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -367,7 +367,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
}
|
||||
else if (nDist < 0x320 && nDeltaAngle < DAngle1 * 5)
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -414,7 +414,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && getPlayer(target->spr.type - kDudePlayer1)->isRunning
|
||||
&& Chance(0x8000))
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -436,7 +436,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
else if (nDist < 0x320 && nDeltaAngle < DAngle1 * 5)
|
||||
{
|
||||
AISTATE *pCultistTsProneFire = !cl_bloodvanillaenemies && !VanillaMode() ? &cultistTsProneFireFixed : &cultistTsProneFire;
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -481,7 +481,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
case kDudeCultistTNT:
|
||||
if (nDist < 0x2c0 && nDist > 0x140 && nDeltaAngle < DAngle15 && (target->spr.flags & 2) && target->IsPlayerActor())
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -501,7 +501,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
}
|
||||
else if (nDist < 0x140 && nDeltaAngle < DAngle15 && (target->spr.flags & 2) && target->IsPlayerActor())
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -525,7 +525,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && getPlayer(target->spr.type - kDudePlayer1)->isRunning
|
||||
&& Chance(0x8000))
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -546,7 +546,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
}
|
||||
else if (nDist < 0x320 && abs(nDeltaAngle) < DAngle1 * 5)
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
|
|
@ -486,7 +486,7 @@ static void unicultThinkChase(DBloodActor* actor)
|
|||
if (inAttack(actor->xspr.aiState))
|
||||
velocity.X = velocity.Y = max(actor->clipdist, 0.5) / 32768;
|
||||
|
||||
aiGenDudeChooseDirection(actor, nAngle, velocity);
|
||||
aiGenDudeChooseDirection(actor, nAngle, velocity.XY());
|
||||
|
||||
GENDUDEEXTRA* pExtra = &actor->genDudeExtra;
|
||||
if (!pExtra->canAttack)
|
||||
|
|
|
@ -136,7 +136,7 @@ static void zombfThinkChase(DBloodActor* actor)
|
|||
aiSetTarget(actor, actor->GetTarget());
|
||||
if (nDist < 0x100 && nDist > 0xe0 && abs(nDeltaAngle) < DAngle15)
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dv, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dv.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -155,7 +155,7 @@ static void zombfThinkChase(DBloodActor* actor)
|
|||
}
|
||||
else if (nDist < 0x140 && nDist > 0x60 && nDeltaAngle < DAngle15)
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dv, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dv.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
@ -174,7 +174,7 @@ static void zombfThinkChase(DBloodActor* actor)
|
|||
}
|
||||
else if (nDist < 0x40 && nDeltaAngle < DAngle15)
|
||||
{
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dv, 0), CLIPMASK1, 0);
|
||||
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dv.XY(), 0), CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
case -1:
|
||||
|
|
|
@ -452,7 +452,7 @@ void fxBloodBits(DBloodActor* actor, sectortype*) // 14
|
|||
DAngle nAngle = RandomAngle();
|
||||
int nDist = Random(16);
|
||||
auto pos = actor->spr.pos + nAngle.ToVector() * nDist * 4;
|
||||
gFX.fxSpawnActor(FX_48, actor->sector(), DVector3(pos, actor->spr.pos.Z));
|
||||
gFX.fxSpawnActor(FX_48, actor->sector(), DVector3(pos.XY(), actor->spr.pos.Z));
|
||||
if (actor->spr.Angles.Yaw == DAngle180)
|
||||
{
|
||||
int nChannel = 28 + (actor->GetIndex() & 2); // this is a little stupid...
|
||||
|
@ -460,7 +460,7 @@ void fxBloodBits(DBloodActor* actor, sectortype*) // 14
|
|||
}
|
||||
if (Chance(0x5000))
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_36, actor->sector(), DVector3(pos, floorZ - 0.25));
|
||||
auto pFX = gFX.fxSpawnActor(FX_36, actor->sector(), DVector3(pos.XY(), floorZ - 0.25));
|
||||
if (pFX)
|
||||
pFX->spr.Angles.Yaw = nAngle;
|
||||
}
|
||||
|
|
|
@ -1833,7 +1833,7 @@ void debrisMove(int listIndex)
|
|||
|
||||
if ((floorColl.actor()->spr.cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0)
|
||||
{
|
||||
actor->vel.XY() += (actor->spr.pos - floorColl.actor()->spr.pos) / 4096.;
|
||||
actor->vel.XY() += (actor->spr.pos.XY() - floorColl.actor()->spr.pos.XY()) / 4096.;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -8234,10 +8234,10 @@ void aiPatrolAlarmLite(DBloodActor* actor, DBloodActor* targetactor)
|
|||
|
||||
double eaz2 = (getDudeInfo(targetactor->spr.type)->eyeHeight * targetactor->spr.scale.Y);
|
||||
double nDist = (dudeactor->spr.pos.XY() - actor->spr.pos.XY()).LengthSquared();
|
||||
if (nDist >= kPatrolAlarmSeeDistSq || !cansee(DVector3(actor->spr.pos, zt1), actor->sector(), dudeactor->spr.pos.plusZ(-eaz2), dudeactor->sector()))
|
||||
if (nDist >= kPatrolAlarmSeeDistSq || !cansee(DVector3(actor->spr.pos.XY(), zt1), actor->sector(), dudeactor->spr.pos.plusZ(-eaz2), dudeactor->sector()))
|
||||
{
|
||||
nDist = (dudeactor->spr.pos.XY() - targetactor->spr.pos.XY()).LengthSquared();
|
||||
if (nDist >= kPatrolAlarmSeeDistSq || !cansee(DVector3(targetactor->spr.pos, zt2), targetactor->sector(), dudeactor->spr.pos.plusZ(-eaz2), dudeactor->sector()))
|
||||
if (nDist >= kPatrolAlarmSeeDistSq || !cansee(DVector3(targetactor->spr.pos.XY(), zt2), targetactor->sector(), dudeactor->spr.pos.plusZ(-eaz2), dudeactor->sector()))
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -906,7 +906,7 @@ void TranslateSector(sectortype* pSector, double wave1, double wave2, const DVec
|
|||
|
||||
if (actor->spr.cstat & CSTAT_SPRITE_MOVE_FORWARD)
|
||||
{
|
||||
auto spot = rotatepoint(pivot, actor->basePoint, ptang_w2);
|
||||
auto spot = rotatepoint(pivot, actor->basePoint.XY(), ptang_w2);
|
||||
viewBackupSpriteLoc(actor);
|
||||
actor->spr.pos.XY() = spot + pt_w2 - pivot;
|
||||
actor->spr.Angles.Yaw += angleofs;
|
||||
|
@ -917,7 +917,7 @@ void TranslateSector(sectortype* pSector, double wave1, double wave2, const DVec
|
|||
// fix Y arg in RotatePoint for reverse (green) moving sprites. (Original Blood bug?)
|
||||
DVector2 pivotDy(pivot.X, gModernMap ? pivot.Y : pivot.X);
|
||||
|
||||
auto spot = rotatepoint(pivotDy, actor->basePoint, ptang_w2);
|
||||
auto spot = rotatepoint(pivotDy, actor->basePoint.XY(), ptang_w2);
|
||||
viewBackupSpriteLoc(actor);
|
||||
actor->spr.pos.XY() = spot - pt_w2 + pivot;
|
||||
actor->spr.Angles.Yaw += angleofs;
|
||||
|
@ -956,7 +956,7 @@ void TranslateSector(sectortype* pSector, double wave1, double wave2, const DVec
|
|||
|
||||
if (ac->spr.cstat & CSTAT_SPRITE_MOVE_FORWARD)
|
||||
{
|
||||
auto spot = rotatepoint(pivot, ac->basePoint, ptang_w2);
|
||||
auto spot = rotatepoint(pivot, ac->basePoint.XY(), ptang_w2);
|
||||
viewBackupSpriteLoc(ac);
|
||||
ac->spr.pos.XY() = spot + pt_w2 - pivot;
|
||||
ac->spr.Angles.Yaw += angleofs;
|
||||
|
@ -964,7 +964,7 @@ void TranslateSector(sectortype* pSector, double wave1, double wave2, const DVec
|
|||
}
|
||||
else if (ac->spr.cstat & CSTAT_SPRITE_MOVE_REVERSE)
|
||||
{
|
||||
auto spot = rotatepoint(pivot, ac->basePoint, ptang_w2);
|
||||
auto spot = rotatepoint(pivot, ac->basePoint.XY(), ptang_w2);
|
||||
viewBackupSpriteLoc(ac);
|
||||
ac->spr.pos.XY() = spot - pt_w2 + pivot;
|
||||
ac->spr.Angles.Yaw += angleofs;
|
||||
|
@ -1360,7 +1360,7 @@ int HDoorBusy(sectortype* pSector, unsigned int a2, DBloodActor* initiator)
|
|||
if (!pXSector->marker0 || !pXSector->marker1) return 0;
|
||||
auto marker0 = pXSector->marker0;
|
||||
auto marker1 = pXSector->marker1;
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), marker0->spr.pos, marker0->spr.pos, marker0->spr.Angles.Yaw, marker1->spr.pos, marker1->spr.Angles.Yaw, pSector->type == kSectorSlide);
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), marker0->spr.pos.XY(), marker0->spr.pos.XY(), marker0->spr.Angles.Yaw, marker1->spr.pos.XY(), marker1->spr.Angles.Yaw, pSector->type == kSectorSlide);
|
||||
ZTranslateSector(pSector, pXSector, a2, nWave);
|
||||
pXSector->busy = a2;
|
||||
if (pXSector->command == kCmdLink && pXSector->txID)
|
||||
|
@ -1391,7 +1391,7 @@ int RDoorBusy(sectortype* pSector, unsigned int a2, DBloodActor* initiator)
|
|||
nWave = pXSector->busyWaveB;
|
||||
if (!pXSector->marker0) return 0;
|
||||
auto marker0 = pXSector->marker0;
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), marker0->spr.pos, marker0->spr.pos, nullAngle, marker0->spr.pos, marker0->spr.Angles.Yaw, pSector->type == kSectorRotate);
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), marker0->spr.pos.XY(), marker0->spr.pos.XY(), nullAngle, marker0->spr.pos.XY(), marker0->spr.Angles.Yaw, pSector->type == kSectorRotate);
|
||||
ZTranslateSector(pSector, pXSector, a2, nWave);
|
||||
pXSector->busy = a2;
|
||||
if (pXSector->command == kCmdLink && pXSector->txID)
|
||||
|
@ -1424,13 +1424,13 @@ int StepRotateBusy(sectortype* pSector, unsigned int a2, DBloodActor* initiator)
|
|||
{
|
||||
ang2 = ang1 + marker0->spr.Angles.Yaw;
|
||||
int nWave = pXSector->busyWaveA;
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), marker0->spr.pos, marker0->spr.pos, ang1, marker0->spr.pos, ang2, true);
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), marker0->spr.pos.XY(), marker0->spr.pos.XY(), ang1, marker0->spr.pos.XY(), ang2, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
ang2 = ang1 - marker0->spr.Angles.Yaw;
|
||||
int nWave = pXSector->busyWaveB;
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), marker0->spr.pos, marker0->spr.pos, ang2, marker0->spr.pos, ang1, true);
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), marker0->spr.pos.XY(), marker0->spr.pos.XY(), ang2, marker0->spr.pos.XY(), ang1, true);
|
||||
}
|
||||
pXSector->busy = a2;
|
||||
if (pXSector->command == kCmdLink && pXSector->txID)
|
||||
|
@ -1484,7 +1484,7 @@ int PathBusy(sectortype* pSector, unsigned int a2, DBloodActor* initiator)
|
|||
if (!basepath || !marker0 || !marker1) return 0;
|
||||
|
||||
int nWave = marker0->xspr.wave;
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), basepath->spr.pos, marker0->spr.pos, marker0->spr.Angles.Yaw, marker1->spr.pos, marker1->spr.Angles.Yaw, true);
|
||||
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), basepath->spr.pos.XY(), marker0->spr.pos.XY(), marker0->spr.Angles.Yaw, marker1->spr.pos.XY(), marker1->spr.Angles.Yaw, true);
|
||||
ZTranslateSector(pSector, pXSector, a2, nWave);
|
||||
pXSector->busy = a2;
|
||||
if ((a2 & 0xffff) == 0)
|
||||
|
@ -2324,9 +2324,9 @@ void trInit(TArray<DBloodActor*>& actors)
|
|||
{
|
||||
auto marker0 = pXSector->marker0;
|
||||
auto marker1 = pXSector->marker1;
|
||||
TranslateSector(pSector, 0, -1, marker0->spr.pos, marker0->spr.pos, marker0->spr.Angles.Yaw, marker1->spr.pos, marker1->spr.Angles.Yaw, pSector->type == kSectorSlide);
|
||||
TranslateSector(pSector, 0, -1, marker0->spr.pos.XY(), marker0->spr.pos.XY(), marker0->spr.Angles.Yaw, marker1->spr.pos.XY(), marker1->spr.Angles.Yaw, pSector->type == kSectorSlide);
|
||||
UpdateBasePoints(pSector);
|
||||
TranslateSector(pSector, 0, FixedToFloat(pXSector->busy), marker0->spr.pos, marker0->spr.pos, marker0->spr.Angles.Yaw, marker1->spr.pos, marker1->spr.Angles.Yaw, pSector->type == kSectorSlide);
|
||||
TranslateSector(pSector, 0, FixedToFloat(pXSector->busy), marker0->spr.pos.XY(), marker0->spr.pos.XY(), marker0->spr.Angles.Yaw, marker1->spr.pos.XY(), marker1->spr.Angles.Yaw, pSector->type == kSectorSlide);
|
||||
ZTranslateSector(pSector, pXSector, pXSector->busy, 1);
|
||||
break;
|
||||
}
|
||||
|
@ -2334,9 +2334,9 @@ void trInit(TArray<DBloodActor*>& actors)
|
|||
case kSectorRotate:
|
||||
{
|
||||
auto marker0 = pXSector->marker0;
|
||||
TranslateSector(pSector, 0, -1, marker0->spr.pos, marker0->spr.pos, nullAngle, marker0->spr.pos, marker0->spr.Angles.Yaw, pSector->type == kSectorRotate);
|
||||
TranslateSector(pSector, 0, -1, marker0->spr.pos.XY(), marker0->spr.pos.XY(), nullAngle, marker0->spr.pos.XY(), marker0->spr.Angles.Yaw, pSector->type == kSectorRotate);
|
||||
UpdateBasePoints(pSector);
|
||||
TranslateSector(pSector, 0, FixedToFloat(pXSector->busy), marker0->spr.pos, marker0->spr.pos, nullAngle, marker0->spr.pos, marker0->spr.Angles.Yaw, pSector->type == kSectorRotate);
|
||||
TranslateSector(pSector, 0, FixedToFloat(pXSector->busy), marker0->spr.pos.XY(), marker0->spr.pos.XY(), nullAngle, marker0->spr.pos.XY(), marker0->spr.Angles.Yaw, pSector->type == kSectorRotate);
|
||||
ZTranslateSector(pSector, pXSector, pXSector->busy, 1);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1224,7 +1224,7 @@ int movesprite_ex(DDukeActor* actor, const DVector3& change, unsigned int clipty
|
|||
if (bg)
|
||||
{
|
||||
if (actor->spr.scale.X > 0.9375)
|
||||
clipmove(ppos, &dasectp, change * 0.5, 64., 4., 4., cliptype, result);
|
||||
clipmove(ppos, &dasectp, change.XY() * 0.5, 64., 4., 4., cliptype, result);
|
||||
else
|
||||
{
|
||||
// todo: move this mess to the actor definitions once we have them all available.
|
||||
|
@ -1237,7 +1237,7 @@ int movesprite_ex(DDukeActor* actor, const DVector3& change, unsigned int clipty
|
|||
clipdist = 12;
|
||||
}
|
||||
|
||||
clipmove(ppos, &dasectp, change * 0.5, clipdist, 4., 4., cliptype, result);
|
||||
clipmove(ppos, &dasectp, change.XY() * 0.5, clipdist, 4., 4., cliptype, result);
|
||||
}
|
||||
|
||||
// conditional code from hell...
|
||||
|
@ -1262,9 +1262,9 @@ int movesprite_ex(DDukeActor* actor, const DVector3& change, unsigned int clipty
|
|||
else
|
||||
{
|
||||
if (actor->spr.statnum == STAT_PROJECTILE)
|
||||
clipmove(ppos, &dasectp, change * 0.5, 0.5, 4., 4., cliptype, result);
|
||||
clipmove(ppos, &dasectp, change.XY() * 0.5, 0.5, 4., 4., cliptype, result);
|
||||
else
|
||||
clipmove(ppos, &dasectp, change * 0.5, actor->clipdist, 4., 4., cliptype, result);
|
||||
clipmove(ppos, &dasectp, change.XY() * 0.5, actor->clipdist, 4., 4., cliptype, result);
|
||||
}
|
||||
actor->spr.pos.XY() = ppos.XY();
|
||||
|
||||
|
@ -1640,7 +1640,7 @@ void handle_se00(DDukeActor* actor)
|
|||
pact->spr.Angles.Yaw += ang_amount * direction;
|
||||
pact->spr.pos.Z += zchange;
|
||||
|
||||
auto result = rotatepoint(Owner->spr.pos, pact->spr.pos.XY(), ang_amount * direction);
|
||||
auto result = rotatepoint(Owner->spr.pos.XY(), pact->spr.pos.XY(), ang_amount * direction);
|
||||
p->bobpos += (result - pact->spr.pos.XY());
|
||||
pact->spr.pos.XY() = result;
|
||||
}
|
||||
|
@ -1660,7 +1660,7 @@ void handle_se00(DDukeActor* actor)
|
|||
|
||||
act2->spr.pos.Z += zchange;
|
||||
|
||||
auto pos = rotatepoint(Owner->spr.pos, act2->spr.pos.XY(), ang_amount * direction);
|
||||
auto pos = rotatepoint(Owner->spr.pos.XY(), act2->spr.pos.XY(), ang_amount * direction);
|
||||
act2->spr.pos.X = pos.X;
|
||||
act2->spr.pos.Y = pos.Y;
|
||||
}
|
||||
|
|
|
@ -1451,7 +1451,7 @@ int ifcansee(DDukeActor* actor, DDukePlayer* p)
|
|||
{
|
||||
// else, they did see it.
|
||||
// save where we were looking..
|
||||
actor->ovel = tosee->spr.pos;
|
||||
actor->ovel = tosee->spr.pos.XY();
|
||||
}
|
||||
|
||||
if (j == 1 && (actor->spr.statnum == STAT_ACTOR || actor->spr.statnum == STAT_STANDABLE))
|
||||
|
|
|
@ -1840,7 +1840,7 @@ HORIZONLY:
|
|||
ChangeActorSect(pact, p->cursector);
|
||||
}
|
||||
else
|
||||
clipmove(p->GetActor()->spr.pos.XY(), p->GetActor()->getOffsetZ(), &p->cursector, p->vel, 10.25, 4., iif, CLIPMASK0, clip);
|
||||
clipmove(p->GetActor()->spr.pos.XY(), p->GetActor()->getOffsetZ(), &p->cursector, p->vel.XY(), 10.25, 4., iif, CLIPMASK0, clip);
|
||||
|
||||
if (p->jetpack_on == 0 && psectlotag != 2 && psectlotag != 1 && shrunk)
|
||||
p->GetActor()->spr.pos.Z += 32;
|
||||
|
|
|
@ -2722,7 +2722,7 @@ HORIZONLY:
|
|||
ChangeActorSect(pact, p->cursector);
|
||||
}
|
||||
else
|
||||
clipmove(p->GetActor()->spr.pos.XY(), p->GetActor()->getOffsetZ(), &p->cursector, p->vel, 10.25, 4., iif, CLIPMASK0, clip);
|
||||
clipmove(p->GetActor()->spr.pos.XY(), p->GetActor()->getOffsetZ(), &p->cursector, p->vel.XY(), 10.25, 4., iif, CLIPMASK0, clip);
|
||||
|
||||
if (p->jetpack_on == 0 && psectlotag != 2 && psectlotag != 1 && shrunk)
|
||||
p->GetActor()->spr.pos.Z += 32;
|
||||
|
|
|
@ -173,7 +173,7 @@ static int BelowNear(DExhumedActor* pActor, const Collision& loHit, double walld
|
|||
{
|
||||
if (!search.Check(wal.nextSector()))
|
||||
{
|
||||
if (IsCloseToWall(pActor->spr.pos, &wal, walldist) != EClose::Outside)
|
||||
if (IsCloseToWall(pActor->spr.pos.XY(), &wal, walldist) != EClose::Outside)
|
||||
{
|
||||
search.Add(wal.nextSector());
|
||||
}
|
||||
|
|
|
@ -2317,7 +2317,7 @@ void ProcessTrailSprite(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
{
|
||||
auto nPoint = sTrailPoint.Reserve(1);
|
||||
|
||||
sTrailPoint[nPoint].pos = pActor->spr.pos;
|
||||
sTrailPoint[nPoint].pos = pActor->spr.pos.XY();
|
||||
|
||||
int nTrail = FindTrail(nHitag);
|
||||
|
||||
|
|
|
@ -573,7 +573,7 @@ DSWActor* ConnectCopySprite(spritetypebase const* tsp)
|
|||
testz = GetSpriteZOfTop(tsp) - 10;
|
||||
|
||||
if (testz < tsp->sectp->ceilingz)
|
||||
updatesectorz(DVector3(tsp->pos, testz), &newsector);
|
||||
updatesectorz(DVector3(tsp->pos.XY(), testz), &newsector);
|
||||
|
||||
if (newsector != nullptr && newsector != tsp->sectp)
|
||||
{
|
||||
|
@ -587,7 +587,7 @@ DSWActor* ConnectCopySprite(spritetypebase const* tsp)
|
|||
testz = GetSpriteZOfBottom(tsp) + 10;
|
||||
|
||||
if (testz > tsp->sectp->floorz)
|
||||
updatesectorz(DVector3(tsp->pos, testz), &newsector);
|
||||
updatesectorz(DVector3(tsp->pos.XY(), testz), &newsector);
|
||||
|
||||
if (newsector != nullptr && newsector != tsp->sectp)
|
||||
{
|
||||
|
|
|
@ -451,7 +451,7 @@ void JS_DrawCameras(DSWPlayer* pp, const DVector3& campos, double smoothratio)
|
|||
if (tex && tex->isSeen(true))
|
||||
{
|
||||
DSWActor* camactor = mirror[cnt].camspriteActor;
|
||||
DVector2 vec = camactor->spr.pos - campos.XY();
|
||||
DVector2 vec = camactor->spr.pos.XY() - campos.XY();
|
||||
dist = abs(vec.X) + abs(vec.Y);
|
||||
|
||||
|
||||
|
|
|
@ -1215,7 +1215,7 @@ int SpawnRadiationCloud(DSWActor* actor)
|
|||
|
||||
int DoRadiationCloud(DSWActor* actor)
|
||||
{
|
||||
actor->spr.pos.XY() += actor->user.change;
|
||||
actor->spr.pos.XY() += actor->user.change.XY();
|
||||
actor->spr.pos.Z -= actor->vel.Z;
|
||||
|
||||
if (actor->user.ID)
|
||||
|
|
|
@ -60,7 +60,7 @@ Collision MultiClipMove(DSWPlayer* pp, double zz, double floordist)
|
|||
// move the box to position instead of using offset- this prevents small rounding errors
|
||||
// allowing you to move through wall
|
||||
DAngle ang = (pp->GetActor()->spr.Angles.Yaw + sop->clipbox_ang[i]);
|
||||
DVector3 spos(pp->GetActor()->getPosWithOffsetZ(), zz);
|
||||
DVector3 spos(pp->GetActor()->spr.pos.XY(), zz);
|
||||
|
||||
DVector2 vect = ang.ToVector() * sop->clipbox_vdist[i];
|
||||
Collision coll;
|
||||
|
@ -73,7 +73,7 @@ Collision MultiClipMove(DSWPlayer* pp, double zz, double floordist)
|
|||
min_dist = 0;
|
||||
min_ndx = i;
|
||||
// ox is where it should be
|
||||
opos[i].XY() = pp->GetActor()->getPosWithOffsetZ() + ang.ToVector() * sop->clipbox_vdist[i];
|
||||
opos[i].XY() = pp->GetActor()->spr.pos.XY() + ang.ToVector() * sop->clipbox_vdist[i];
|
||||
|
||||
// spos.x is where it hit
|
||||
pos[i].XY() = spos.XY();
|
||||
|
@ -133,7 +133,7 @@ int MultiClipTurn(DSWPlayer* pp, DAngle new_ang, double zz, double floordist)
|
|||
{
|
||||
DAngle ang = new_ang + sop->clipbox_ang[i];
|
||||
|
||||
DVector3 spos(pp->GetActor()->getPosWithOffsetZ(), zz);
|
||||
DVector3 spos(pp->GetActor()->spr.pos.XY(), zz);
|
||||
|
||||
DVector2 vect = ang.ToVector() * sop->clipbox_vdist[i];
|
||||
Collision coll;
|
||||
|
|
|
@ -326,7 +326,7 @@ void MorphTornado(SECTOR_OBJECT* sop)
|
|||
return;
|
||||
|
||||
// place at correct x,y offset from center
|
||||
DVector2 pos = sop->pmid - sop->morph_off;
|
||||
DVector2 pos = sop->pmid.XY() - sop->morph_off;
|
||||
DVector2 spos = pos;
|
||||
|
||||
// move it from last x,y
|
||||
|
@ -343,7 +343,7 @@ void MorphTornado(SECTOR_OBJECT* sop)
|
|||
}
|
||||
|
||||
// save x,y back as offset info
|
||||
sop->morph_off = sop->pmid - mpos;
|
||||
sop->morph_off = sop->pmid.XY() - mpos;
|
||||
|
||||
if ((RANDOM_P2(1024<<4)>>4) < sop->morph_rand_freq)
|
||||
sop->morph_ang = RandomAngle();
|
||||
|
@ -399,10 +399,10 @@ void MorphFloor(SECTOR_OBJECT* sop)
|
|||
auto pos = sop->pmid - sop->morph_off;
|
||||
|
||||
// move it from last x,y
|
||||
DVector2 mpos = pos + sop->morph_ang.ToVector() * sop->morph_speed;
|
||||
DVector2 mpos = pos.XY() + sop->morph_ang.ToVector() * sop->morph_speed;
|
||||
|
||||
// save x,y back as offset info
|
||||
sop->morph_off = sop->pmid - mpos;
|
||||
sop->morph_off = sop->pmid.XY() - mpos;
|
||||
|
||||
// bound check radius
|
||||
if ((sop->pmid - mpos).Length() > sop->morph_dist_max)
|
||||
|
@ -411,8 +411,8 @@ void MorphFloor(SECTOR_OBJECT* sop)
|
|||
sop->morph_ang = sop->morph_ang + DAngle180;
|
||||
|
||||
// back it up and save it off
|
||||
mpos = pos + sop->morph_ang.ToVector() * sop->morph_speed;
|
||||
sop->morph_off = sop->pmid - mpos;
|
||||
mpos = pos.XY() + sop->morph_ang.ToVector() * sop->morph_speed;
|
||||
sop->morph_off = sop->pmid.XY() - mpos;
|
||||
}
|
||||
|
||||
if ((RANDOM_P2(1024<<4)>>4) < sop->morph_rand_freq)
|
||||
|
|
|
@ -2239,7 +2239,7 @@ void DriveCrush(DSWPlayer* pp, DVector2* quad)
|
|||
SWSectIterator it(sop->op_main_sector);
|
||||
while (auto actor = it.Next())
|
||||
{
|
||||
if (testpointinquad(actor->spr.pos, quad))
|
||||
if (testpointinquad(actor->spr.pos.XY(), quad))
|
||||
{
|
||||
if ((actor->spr.extra & SPRX_BREAKABLE) && HitBreakSprite(actor, 0))
|
||||
continue;
|
||||
|
@ -2274,7 +2274,7 @@ void DriveCrush(DSWPlayer* pp, DVector2* quad)
|
|||
SWStatIterator it2(STAT_ENEMY);
|
||||
while (auto actor = it.Next())
|
||||
{
|
||||
if (testpointinquad(actor->spr.pos, quad))
|
||||
if (testpointinquad(actor->spr.pos.XY(), quad))
|
||||
{
|
||||
//if (actor->spr.z < pp->posz)
|
||||
if (actor->spr.pos.Z < sop->crush_z)
|
||||
|
@ -2301,7 +2301,7 @@ void DriveCrush(DSWPlayer* pp, DVector2* quad)
|
|||
it2.Reset(STAT_DEAD_ACTOR);
|
||||
while (auto actor = it.Next())
|
||||
{
|
||||
if (testpointinquad(actor->spr.pos, quad))
|
||||
if (testpointinquad(actor->spr.pos.XY(), quad))
|
||||
{
|
||||
if (actor->spr.pos.Z < sop->crush_z)
|
||||
continue;
|
||||
|
@ -2323,7 +2323,7 @@ void DriveCrush(DSWPlayer* pp, DVector2* quad)
|
|||
if (actor->user.PlayerP == pp)
|
||||
continue;
|
||||
|
||||
if (testpointinquad(actor->spr.pos, quad))
|
||||
if (testpointinquad(actor->spr.pos.XY(), quad))
|
||||
{
|
||||
int damage;
|
||||
|
||||
|
@ -2437,7 +2437,7 @@ void DoPlayerMoveVehicle(DSWPlayer* pp)
|
|||
if (wal.extra && (wal.extra & (WALLFX_LOOP_OUTER|WALLFX_LOOP_OUTER_SECONDARY)) == WALLFX_LOOP_OUTER)
|
||||
{
|
||||
pos[count] = wal.pos;
|
||||
opos[count] = sop->pmid - sop->orig[wallcount];
|
||||
opos[count] = sop->pmid.XY() - sop->orig[wallcount];
|
||||
count++;
|
||||
}
|
||||
|
||||
|
@ -2613,7 +2613,7 @@ void DoPlayerMoveTurret(DSWPlayer* pp)
|
|||
pact->spr.Angles.Yaw = new_ang;
|
||||
}
|
||||
|
||||
OperateSectorObject(pp->sop, pact->spr.Angles.Yaw, pp->sop->pmid);
|
||||
OperateSectorObject(pp->sop, pact->spr.Angles.Yaw, pp->sop->pmid.XY());
|
||||
|
||||
if (PLAYER_MOVING(pp) == 0)
|
||||
pp->Flags &= ~(PF_PLAYER_MOVED);
|
||||
|
@ -3626,7 +3626,7 @@ bool PlayerOnLadder(DSWPlayer* pp)
|
|||
// set players "view" distance from the ladder - needs to be farther than
|
||||
// the sprite
|
||||
|
||||
pp->LadderPosition = lActor->spr.pos + npos;
|
||||
pp->LadderPosition = lActor->spr.pos.XY() + npos;
|
||||
pp->GetActor()->spr.Angles.Yaw = lActor->spr.Angles.Yaw + DAngle180;
|
||||
|
||||
return true;
|
||||
|
@ -3975,7 +3975,7 @@ void DoPlayerWarpToUnderwater(DSWPlayer* pp)
|
|||
auto over = over_act->sector();
|
||||
auto under = under_act->sector();
|
||||
|
||||
if (GetOverlapSector(pp->GetActor()->getPosWithOffsetZ(), &over, &under) == 2)
|
||||
if (GetOverlapSector(pp->GetActor()->spr.pos.XY(), &over, &under) == 2)
|
||||
{
|
||||
pp->setcursector(under);
|
||||
}
|
||||
|
@ -4047,7 +4047,7 @@ void DoPlayerWarpToSurface(DSWPlayer* pp)
|
|||
auto over = over_act->sector();
|
||||
auto under = under_act->sector();
|
||||
|
||||
if (GetOverlapSector(pp->GetActor()->getPosWithOffsetZ(), &over, &under))
|
||||
if (GetOverlapSector(pp->GetActor()->spr.pos.XY(), &over, &under))
|
||||
{
|
||||
pp->setcursector(over);
|
||||
}
|
||||
|
@ -4378,7 +4378,7 @@ void DoPlayerDive(DSWPlayer* pp)
|
|||
auto sect = pp->cursector;
|
||||
|
||||
// check for sector above to see if it is an underwater sector also
|
||||
updatesectorz(DVector3(pp->GetActor()->getPosWithOffsetZ(), pp->cursector->ceilingz - 8), §);
|
||||
updatesectorz(DVector3(plActor->spr.pos.XY(), pp->cursector->ceilingz - 8), §);
|
||||
|
||||
if (!SectorIsUnderwaterArea(sect))
|
||||
{
|
||||
|
|
|
@ -396,7 +396,7 @@ int DoRotator(DSWActor* actor)
|
|||
ndx = 0;
|
||||
for(auto& wal : actor->sector()->walls)
|
||||
{
|
||||
auto nxy = rotatepoint(pivot->spr.pos, r->orig[ndx], DAngle::fromBuild(r->pos));
|
||||
auto nxy = rotatepoint(pivot->spr.pos.XY(), r->orig[ndx], DAngle::fromBuild(r->pos));
|
||||
|
||||
dragpoint(&wal, nxy);
|
||||
ndx++;
|
||||
|
|
|
@ -1150,7 +1150,7 @@ bool TestKillSectorObject(SECTOR_OBJECT* sop)
|
|||
{
|
||||
KillMatchingCrackSprites(sop->match_event);
|
||||
// get new sectnums
|
||||
CollapseSectorObject(sop, sop->pmid);
|
||||
CollapseSectorObject(sop, sop->pmid.XY());
|
||||
DoSpawnSpotsForKill(sop->match_event);
|
||||
KillSectorObjectSprites(sop);
|
||||
return true;
|
||||
|
@ -1315,7 +1315,7 @@ void DoDeleteSpriteMatch(short match)
|
|||
if (actor->spr.lotag == match)
|
||||
{
|
||||
found = actor;
|
||||
del = actor->spr.pos;
|
||||
del = actor->spr.pos.XY();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1328,7 +1328,7 @@ void DoDeleteSpriteMatch(short match)
|
|||
it.Reset(StatList[stat]);
|
||||
while (auto actor = it.Next())
|
||||
{
|
||||
if (del == actor->spr.pos)
|
||||
if (del == actor->spr.pos.XY())
|
||||
{
|
||||
// special case lighting delete of Fade On/off after fades
|
||||
if (StatList[stat] == STAT_LIGHTING)
|
||||
|
|
|
@ -6232,7 +6232,7 @@ Collision move_sprite(DSWActor* actor, const DVector3& change, double ceildist,
|
|||
}
|
||||
|
||||
|
||||
clipmove(clip_pos, &dasect, change * numtics * 0.125, actor->clipdist, ceildist, flordist, cliptype, retval, 1);
|
||||
clipmove(clip_pos, &dasect, change.XY() * numtics * 0.125, actor->clipdist, ceildist, flordist, cliptype, retval, 1);
|
||||
|
||||
|
||||
actor->spr.pos.XY() = clip_pos.XY();
|
||||
|
@ -6451,7 +6451,7 @@ Collision move_missile(DSWActor* actor, const DVector3& change, double ceil_dist
|
|||
}
|
||||
|
||||
|
||||
clipmove(clip_pos, &dasect, change * numtics * 0.125, actor->clipdist, ceil_dist, flor_dist, cliptype, retval, 1);
|
||||
clipmove(clip_pos, &dasect, change.XY() * numtics * 0.125, actor->clipdist, ceil_dist, flor_dist, cliptype, retval, 1);
|
||||
actor->spr.pos.XY() = clip_pos.XY();
|
||||
|
||||
if (dasect == nullptr)
|
||||
|
|
|
@ -599,7 +599,7 @@ void TrackSetup(void)
|
|||
it.Reset(STAT_TRACK + ndx);
|
||||
while (auto actor = it.Next())
|
||||
{
|
||||
dist = Distance((tp + t->NumPoints - 1)->pos, actor->spr.pos);
|
||||
dist = Distance((tp + t->NumPoints - 1)->pos.XY(), actor->spr.pos.XY());
|
||||
|
||||
if (dist < low_dist)
|
||||
{
|
||||
|
@ -683,7 +683,7 @@ void SectorObjectSetupBounds(SECTOR_OBJECT* sop)
|
|||
I_Error("SOP bound sprite with hitag %d not found", 500 + (int(sop - SectorObject) * 5));
|
||||
}
|
||||
|
||||
DVector2 vlow = BoundActor->spr.pos;
|
||||
DVector2 vlow = BoundActor->spr.pos.XY();
|
||||
|
||||
KillActor(BoundActor);
|
||||
|
||||
|
@ -692,7 +692,7 @@ void SectorObjectSetupBounds(SECTOR_OBJECT* sop)
|
|||
{
|
||||
I_Error("SOP bound sprite with hitag %d not found", 501 + (int(sop - SectorObject) * 5));
|
||||
}
|
||||
DVector2 vhigh = BoundActor->spr.pos;
|
||||
DVector2 vhigh = BoundActor->spr.pos.XY();
|
||||
|
||||
KillActor(BoundActor);
|
||||
|
||||
|
@ -1348,7 +1348,7 @@ void PlaceSectorObjectsOnTracks(void)
|
|||
// move all walls in sectors
|
||||
for (auto& wal : sop->sectp[j]->walls)
|
||||
{
|
||||
sop->orig[sop->num_walls] = sop->pmid - wal.pos;
|
||||
sop->orig[sop->num_walls] = sop->pmid.XY() - wal.pos;
|
||||
sop->num_walls++;
|
||||
}
|
||||
}
|
||||
|
@ -1367,7 +1367,7 @@ void PlaceSectorObjectsOnTracks(void)
|
|||
{
|
||||
tpoint = Track[sop->track].TrackPoint;
|
||||
|
||||
dist = Distance((tpoint + j)->pos, sop->pmid);
|
||||
dist = Distance((tpoint + j)->pos.XY(), sop->pmid.XY());
|
||||
|
||||
if (dist < low_dist)
|
||||
{
|
||||
|
@ -1430,7 +1430,7 @@ void PlaceActorsOnTracks(void)
|
|||
{
|
||||
tpoint = Track[actor->user.track].TrackPoint;
|
||||
|
||||
dist = Distance((tpoint + j)->pos, actor->spr.pos);
|
||||
dist = Distance((tpoint + j)->pos.XY(), actor->spr.pos.XY());
|
||||
|
||||
if (dist < low_dist)
|
||||
{
|
||||
|
@ -2655,7 +2655,7 @@ void DoTornadoObject(SECTOR_OBJECT* sop)
|
|||
}
|
||||
|
||||
TornadoSpin(sop);
|
||||
RefreshPoints(sop, pos - sop->pmid.XY(), true);
|
||||
RefreshPoints(sop, pos.XY() - sop->pmid.XY(), true);
|
||||
}
|
||||
|
||||
void DoAutoTurretObject(SECTOR_OBJECT* sop)
|
||||
|
@ -2744,7 +2744,7 @@ void DoAutoTurretObject(SECTOR_OBJECT* sop)
|
|||
}
|
||||
}
|
||||
|
||||
OperateSectorObjectForTics(sop, sop->ang, sop->pmid, 2*synctics);
|
||||
OperateSectorObjectForTics(sop, sop->ang, sop->pmid.XY(), 2*synctics);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -123,7 +123,7 @@ int DoWallMove(DSWActor* actor)
|
|||
}
|
||||
else
|
||||
{
|
||||
wal.move(actor->spr.pos + nvec);
|
||||
wal.move(actor->spr.pos.XY() + nvec);
|
||||
}
|
||||
|
||||
if (shade1)
|
||||
|
|
|
@ -3571,7 +3571,7 @@ int DoVomit(DSWActor* actor)
|
|||
{
|
||||
actor->user.Counter = NORM_ANGLE(actor->user.Counter + (30*MISSILEMOVETICS));
|
||||
// notreallypos
|
||||
auto v = actor->user.pos + mapangle(actor->user.Counter).ToVector() * 12 * REPEAT_SCALE;
|
||||
auto v = actor->user.pos.XY() + mapangle(actor->user.Counter).ToVector() * 12 * REPEAT_SCALE;
|
||||
actor->spr.scale = v;
|
||||
if (actor->user.Flags & (SPR_JUMPING))
|
||||
{
|
||||
|
@ -11791,7 +11791,7 @@ int InitEnemyNapalm(DSWActor* actor)
|
|||
for (i = 0; i < SIZ(mp); i++)
|
||||
{
|
||||
auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL1, s_Napalm, actor->sector(),
|
||||
DVector3(actor->spr.pos, ActorZOfTop(actor) + (ActorSizeZ(actor) * 0.25)), actor->spr.Angles.Yaw, NAPALM_VELOCITY);
|
||||
DVector3(actor->spr.pos.XY(), ActorZOfTop(actor) + (ActorSizeZ(actor) * 0.25)), actor->spr.Angles.Yaw, NAPALM_VELOCITY);
|
||||
|
||||
actorNew->spr.hitag = LUMINOUS; //Always full brightness
|
||||
if (i==0) // Only attach sound to first projectile
|
||||
|
@ -11893,7 +11893,7 @@ int InitEnemyMirv(DSWActor* actor)
|
|||
PlaySound(DIGI_MIRVFIRE, actor, v3df_none);
|
||||
|
||||
auto actorNew = SpawnActor(STAT_MISSILE, MIRV_METEOR, s_Mirv, actor->sector(),
|
||||
DVector3(actor->spr.pos, ActorZOfTop(actor) + (ActorSizeZ(actor) * 0.25)), actor->spr.Angles.Yaw, MIRV_VELOCITY);
|
||||
DVector3(actor->spr.pos.XY(), ActorZOfTop(actor) + (ActorSizeZ(actor) * 0.25)), actor->spr.Angles.Yaw, MIRV_VELOCITY);
|
||||
|
||||
PlaySound(DIGI_MIRVWIZ, actorNew, v3df_follow);
|
||||
|
||||
|
@ -13975,7 +13975,7 @@ int InitSerpSlash(DSWActor* actor)
|
|||
bool WallSpriteInsideSprite(DSWActor* wactor, DSWActor* actor)
|
||||
{
|
||||
DVector2 out[2];
|
||||
GetWallSpritePosition(&wactor->spr, wactor->spr.pos, out);
|
||||
GetWallSpritePosition(&wactor->spr, wactor->spr.pos.XY(), out);
|
||||
return IsCloseToLine(actor->spr.pos.XY(), out[0], out[1], actor->clipdist) != EClose::Outside;
|
||||
}
|
||||
|
||||
|
@ -16758,7 +16758,7 @@ int InitEnemyFireball(DSWActor* actor)
|
|||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
auto actorNew = SpawnActor(STAT_MISSILE, GORO_FIREBALL, s_Fireball, actor->sector(),
|
||||
DVector3(actor->spr.pos, nz), actor->spr.Angles.Yaw, GORO_FIREBALL_VELOCITY);
|
||||
DVector3(actor->spr.pos.XY(), nz), actor->spr.Angles.Yaw, GORO_FIREBALL_VELOCITY);
|
||||
|
||||
actorNew->spr.hitag = LUMINOUS; //Always full brightness
|
||||
actorNew->spr.scale = DVector2(0.3125, 0.3125);
|
||||
|
@ -16858,7 +16858,7 @@ bool WarpToUnderwater(DVector3& pos, sectortype** psectu)
|
|||
spos = overActor->spr.pos.XY() - pos.XY();
|
||||
|
||||
// update to the new x y position
|
||||
pos.XY() = underActor->spr.pos - spos;
|
||||
pos.XY() = underActor->spr.pos.XY() - spos;
|
||||
|
||||
auto over = overActor->sector();
|
||||
auto under = underActor->sector();
|
||||
|
@ -17001,7 +17001,7 @@ bool SpriteWarpToUnderwater(DSWActor* actor)
|
|||
auto over = overActor->sector();
|
||||
auto under = underActor->sector();
|
||||
|
||||
if (GetOverlapSector(actor->spr.pos, &over, &under) == 2)
|
||||
if (GetOverlapSector(actor->spr.pos.XY(), &over, &under) == 2)
|
||||
{
|
||||
ChangeActorSect(actor, under);
|
||||
}
|
||||
|
@ -17077,7 +17077,7 @@ bool SpriteWarpToSurface(DSWActor* actor)
|
|||
auto over = overActor->sector();
|
||||
auto under = underActor->sector();
|
||||
|
||||
if (GetOverlapSector(actor->spr.pos, &over, &under))
|
||||
if (GetOverlapSector(actor->spr.pos.XY(), &over, &under))
|
||||
{
|
||||
ChangeActorSect(actor, over);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue