- convert all set/add_int_x/yvel calls

This commit is contained in:
Christoph Oelckers 2022-09-09 19:24:25 +02:00
parent 39d8591ffc
commit 47ad4fccdc
13 changed files with 44 additions and 171 deletions

View file

@ -149,16 +149,6 @@ public:
return vel.Y * worldtoint;
}
void set_int_yvel(int v)
{
vel.Y = v * inttoworld;
}
void add_int_yvel(int v)
{
vel.Y += v * inttoworld;
}
vec3_t int_vel() const
{
return vec3_t(FloatToFixed(vel.X), FloatToFixed(vel.Y), FloatToFixed(vel.Z));

View file

@ -207,7 +207,6 @@ extern Collision hiHit;
extern TObjPtr<DExhumedActor*> nChunkSprite[];
extern TObjPtr<DExhumedActor*> nBodySprite[];
signed int lsqrt(int a1);
void MoveThings();
void ResetMoveFifo();
void InitChunks();

View file

@ -223,23 +223,18 @@ void BulletHitsSprite(Bullet *pBullet, DExhumedActor* pBulletActor, DExhumedActo
if (nStat == kStatAnubisDrum)
{
int nAngle = (pActor->int_ang() + 256) - RandomSize(9);
auto nAngle = (pActor->spr.angle + DAngle22_5) - DAngle::fromBuild(RandomSize(9));
pHitActor->set_int_xvel(bcos(nAngle, 1));
pHitActor->set_int_yvel(bsin(nAngle, 1));
pHitActor->set_int_zvel((-(RandomSize(3) + 1)) << 8);
pHitActor->vel.XY() = nAngle.ToVector() * 2048;
pHitActor->vel.Z = -(RandomSize(3) + 1);
}
else
{
int xVel = pHitActor->int_xvel();
int yVel = pHitActor->int_yvel();
auto Vel = pHitActor->vel.XY();
pHitActor->VelFromAngle(-2);
MoveCreature(pHitActor);
pHitActor->set_int_xvel(xVel);
pHitActor->set_int_yvel(yVel);
pHitActor->vel.XY() = Vel;
}
break;

View file

@ -51,8 +51,8 @@ void BuildFishLimb(DExhumedActor* pActor, int anim)
pChunkActor->spr.cstat = 0;
pChunkActor->spr.shade = -12;
pChunkActor->spr.pal = 0;
pChunkActor->set_int_xvel((RandomSize(5) - 16) << 8);
pChunkActor->set_int_yvel((RandomSize(5) - 16) << 8);
pChunkActor->vel.X = ((RandomSize(5) - 16) << 4);
pChunkActor->vel.Y = ((RandomSize(5) - 16) << 4);
pChunkActor->spr.xrepeat = 64;
pChunkActor->spr.yrepeat = 64;
pChunkActor->spr.xoffset = 0;

View file

@ -45,9 +45,9 @@ DExhumedActor* BuildLavaLimb(DExhumedActor* pActor, int move, int ebx)
pLimbActor->spr.cstat = 0;
pLimbActor->spr.shade = -127;
pLimbActor->spr.pal = 1;
pLimbActor->set_int_xvel((RandomSize(5) - 16) << 8);
pLimbActor->set_int_yvel((RandomSize(5) - 16) << 8);
pLimbActor->set_int_zvel(2560 - (RandomSize(5) << 8));
pLimbActor->vel.X = ((RandomSize(5) - 16) << 4);
pLimbActor->vel.Y = ((RandomSize(5) - 16) << 4);
pLimbActor->vel.Z = 10 - RandomSize(5);
pLimbActor->spr.xoffset = 0;
pLimbActor->spr.yoffset = 0;
pLimbActor->spr.xrepeat = 90;

View file

@ -276,13 +276,11 @@ void AILion::Tick(RunListEvent* ev)
if (pActor->spr.cstat & CSTAT_SPRITE_INVISIBLE)
{
pActor->set_int_xvel(bcos(nAng, 1));
pActor->set_int_yvel(bsin(nAng, 1));
pActor->vel.XY() = pActor->spr.angle.ToVector() * 2048;
}
else
{
pActor->set_int_xvel(bcos(nAng, -1));
pActor->set_int_yvel(bsin(nAng, -1));
pActor->vel.XY() = pActor->spr.angle.ToVector() * 512;
}
}

View file

@ -92,98 +92,6 @@ void SerializeMove(FSerializer& arc)
}
}
signed int lsqrt(int a1)
{
int v1;
int v2;
signed int result;
v1 = a1;
v2 = a1 - 0x40000000;
result = 0;
if (v2 >= 0)
{
result = 32768;
v1 = v2;
}
if (v1 - ((result << 15) + 0x10000000) >= 0)
{
v1 -= (result << 15) + 0x10000000;
result += 16384;
}
if (v1 - ((result << 14) + 0x4000000) >= 0)
{
v1 -= (result << 14) + 0x4000000;
result += 8192;
}
if (v1 - ((result << 13) + 0x1000000) >= 0)
{
v1 -= (result << 13) + 0x1000000;
result += 4096;
}
if (v1 - ((result << 12) + 0x400000) >= 0)
{
v1 -= (result << 12) + 0x400000;
result += 2048;
}
if (v1 - ((result << 11) + 0x100000) >= 0)
{
v1 -= (result << 11) + 0x100000;
result += 1024;
}
if (v1 - ((result << 10) + 0x40000) >= 0)
{
v1 -= (result << 10) + 0x40000;
result += 512;
}
if (v1 - ((result << 9) + 0x10000) >= 0)
{
v1 -= (result << 9) + 0x10000;
result += 256;
}
if (v1 - ((result << 8) + 0x4000) >= 0)
{
v1 -= (result << 8) + 0x4000;
result += 128;
}
if (v1 - ((result << 7) + 4096) >= 0)
{
v1 -= (result << 7) + 4096;
result += 64;
}
if (v1 - ((result << 6) + 1024) >= 0)
{
v1 -= (result << 6) + 1024;
result += 32;
}
if (v1 - (32 * result + 256) >= 0)
{
v1 -= 32 * result + 256;
result += 16;
}
if (v1 - (16 * result + 64) >= 0)
{
v1 -= 16 * result + 64;
result += 8;
}
if (v1 - (8 * result + 16) >= 0)
{
v1 -= 8 * result + 16;
result += 4;
}
if (v1 - (4 * result + 4) >= 0)
{
v1 -= 4 * result + 4;
result += 2;
}
if (v1 - (2 * result + 1) >= 0)
result += 1;
return result;
}
void MoveThings()
{
thinktime.Reset();
@ -1275,9 +1183,9 @@ DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, int nPic, bool bSpecial)
pActor->spr.shade = -12;
pActor->spr.pal = 0;
pActor->set_int_xvel((RandomSize(5) - 16) << 7);
pActor->set_int_yvel((RandomSize(5) - 16) << 7);
pActor->set_int_zvel((-(RandomSize(8) + 512)) << 3);
pActor->vel.X = ((RandomSize(5) - 16) << 3);
pActor->vel.Y = ((RandomSize(5) - 16) << 3);
pActor->vel.Z = -(RandomSize(8) / 32. + 16);
if (bSpecial)
{
@ -1330,7 +1238,7 @@ void AICreatureChunk::Tick(RunListEvent* ev)
if (!nVal.type && !nVal.exbits)
return;
int nAngle;
DAngle nAngle;
if (nVal.exbits & kHitAux2)
{
@ -1347,11 +1255,11 @@ void AICreatureChunk::Tick(RunListEvent* ev)
}
else if (nVal.type == kHitSprite)
{
nAngle = nVal.actor()->int_ang();
nAngle = nVal.actor()->spr.angle;
}
else if (nVal.type == kHitWall)
{
nAngle = GetWallNormal(nVal.hitWall);
nAngle = DAngle::fromBuild(GetWallNormal(nVal.hitWall));
}
else
{
@ -1359,11 +1267,10 @@ void AICreatureChunk::Tick(RunListEvent* ev)
}
// loc_16E0C
int nSqrt = lsqrt(((pActor->int_yvel() >> 10) * (pActor->int_yvel() >> 10)
+ (pActor->int_xvel() >> 10) * (pActor->int_xvel() >> 10)) >> 8);
double nSqrt = pActor->vel.Length();
pActor->set_int_xvel(bcos(nAngle) * (nSqrt >> 1));
pActor->set_int_yvel(bsin(nAngle) * (nSqrt >> 1));
pActor->vel.XY() = nAngle.ToVector() * nSqrt * 0.5;
return;
}
}

View file

@ -1380,20 +1380,18 @@ DExhumedActor* BuildSpark(DExhumedActor* pActor, int nVal)
}
else
{
int nAngle = (pActor->int_ang() + 256) - RandomSize(9);
auto nAngle = (pActor->spr.angle + DAngle22_5) - DAngle::fromBuild(RandomSize(9));
if (nVal)
{
pSpark->set_int_xvel(bcos(nAngle, -5));
pSpark->set_int_yvel(bsin(nAngle, -5));
pSpark->vel.XY() = nAngle.ToVector() * 32;
}
else
{
pSpark->set_int_xvel(bcos(nAngle, -6));
pSpark->set_int_yvel(bsin(nAngle, -6));
pSpark->vel.XY() = nAngle.ToVector() * 16;
}
pSpark->set_int_zvel(-(RandomSize(4) << 7));
pSpark->vel.Z = -RandomSize(4) * 0.5;
pSpark->spr.picnum = kTile985 + nVal;
}

View file

@ -737,8 +737,8 @@ void AIPlayer::Tick(RunListEvent* ev)
PlayerList[nPlayer].horizon.resetadjustment();
PlayerList[nPlayer].oeyelevel = PlayerList[nPlayer].eyelevel;
pPlayerActor->set_int_xvel(sPlayerInput[nPlayer].xVel >> 14);
pPlayerActor->set_int_yvel(sPlayerInput[nPlayer].yVel >> 14);
pPlayerActor->vel.X = FixedToFloat<18>(sPlayerInput[nPlayer].xVel);
pPlayerActor->vel.Y = FixedToFloat<18>(sPlayerInput[nPlayer].yVel);
if (sPlayerInput[nPlayer].nItem > -1)
{

View file

@ -278,10 +278,7 @@ void DestroyAllEggs()
void SetHeadVel(DExhumedActor* pActor)
{
int nAngle = pActor->int_ang();
pActor->set_int_xvel(bcos(nAngle, nVelShift));
pActor->set_int_yvel(bsin(nAngle, nVelShift));
pActor->vel.XY() = pActor->spr.angle.ToVector() * 1024 * (1 << nVelShift);
}
Collision QueenAngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int val1, int val2)
@ -570,8 +567,7 @@ void AIQueenEgg::Tick(RunListEvent* ev)
}
pActor->set_int_ang(nAngle);
pActor->set_int_xvel(bcos(nAngle, -1));
pActor->set_int_yvel(bsin(nAngle, -1));
pActor->vel.XY() = pActor->spr.angle.ToVector() * 512;
}
break;

View file

@ -253,9 +253,7 @@ void AIRex::Tick(RunListEvent* ev)
{
if (((PlotCourseToSprite(pActor, pTarget) >> 8) >= 60) || pActor->nCount > 0)
{
int nAngle = pActor->int_ang() & 0xFFF8;
pActor->set_int_xvel(bcos(nAngle, -2));
pActor->set_int_yvel(bsin(nAngle, -2));
pActor->vel.XY() = pActor->spr.angle.ToVector() * 256;
}
else
{
@ -331,25 +329,21 @@ void AIRex::Tick(RunListEvent* ev)
if (pHitActor->spr.statnum && pHitActor->spr.statnum < 107)
{
int nAngle = pActor->int_ang();
runlist_DamageEnemy(nMov.actor(), pActor, 15);
int xVel = bcos(nAngle) * 15;
int yVel = bsin(nAngle) * 15;
auto vel = pActor->spr.angle.ToVector() * 1024 * 15;
if (pHitActor->spr.statnum == 100)
{
auto nPlayer = GetPlayerFromActor(nMov.actor());
PlayerList[nPlayer].nDamage.X += (xVel << 4);
PlayerList[nPlayer].nDamage.Y += (yVel << 4);
pHitActor->set_int_zvel(-3584);
PlayerList[nPlayer].nDamage.X += (int(vel.X * worldtoint) << 4);
PlayerList[nPlayer].nDamage.Y += (int(vel.Y * worldtoint) << 4);
pHitActor->vel.Z = -14;
}
else
{
pHitActor->add_int_xvel( (xVel >> 3));
pHitActor->add_int_yvel((yVel >> 3));
pHitActor->set_int_zvel(-2880);
pHitActor->vel.XY() = vel / 8.;
pHitActor->vel.Z = 11.25;
}
}

View file

@ -1606,7 +1606,6 @@ int runlist_CheckRadialDamage(DExhumedActor* pActor)
auto pos = (pActor->spr.pos - pRadialActor->spr.pos) / 16.;
int edi = 0;
if (abs(pos.X) > nDamageRadius) {
return 0;
@ -1622,6 +1621,7 @@ int runlist_CheckRadialDamage(DExhumedActor* pActor)
double nDist = pos.XY().Length();
int edi = 0;
if (nDist < nDamageRadius)
{
auto nCStat = pActor->spr.cstat;
@ -1633,22 +1633,20 @@ int runlist_CheckRadialDamage(DExhumedActor* pActor)
pActor->spr.pos.plusZ(-32),
pActor->sector()))
{
edi = int((nRadialDamage * (nDamageRadius - nDist)) / (nDamageRadius));
edi = int((nRadialDamage * (nDamageRadius - nDist)) / nDamageRadius);
if (edi < 0) {
edi = 0;
}
else if (edi > 20)
{
int nAngle = getangle(pos);
auto nAngle = VecToAngle(pos);
pActor->vel.XY() += nAngle.ToVector() * edi * 128;
pActor->add_int_xvel( (edi * bcos(nAngle)) >> 3);
pActor->add_int_yvel((edi * bsin(nAngle)) >> 3);
pActor->add_int_zvel(- edi * 24);
pActor->vel.Z = (- edi * 24) / 256.;
if (pActor->vel.Z < -14) {
pActor->set_int_zvel(-3584);
}
if (pActor->vel.Z < -14)
pActor->vel.Z = -14;
}
}

View file

@ -387,9 +387,7 @@ void AISet::Tick(RunListEvent* ev)
}
// loc_338E2
int nAngle = pActor->int_ang() & 0xFFF8;
pActor->set_int_xvel(bcos(nAngle, -1));
pActor->set_int_yvel(bsin(nAngle, -1));
pActor->vel.XY() = pActor->spr.angle.ToVector() * 512;
if (pActor->nIndex2)
{