- got rid of bsinf and bcosf.

This commit is contained in:
Christoph Oelckers 2022-09-25 12:47:07 +02:00
parent 6dd7fac902
commit 243c071834
10 changed files with 26 additions and 44 deletions

View file

@ -1629,7 +1629,7 @@ struct TRotator
TRotator &operator/= (const Angle &scalar)
{
Angle mul(1 / scalar.Degrees_);
Pitch *= scalar, Yaw *= scalar, Roll *= scalar;
Pitch *= mul, Yaw *= mul, Roll *= mul;
return *this;
}

View file

@ -524,9 +524,6 @@ DEFINE_FIELD_NAMED(DCoreActor, spr.yoffset, yoffset)
DEFINE_FIELD_NAMED(DCoreActor, spr.intowner, owner)
DEFINE_FIELD_NAMED(DCoreActor, sprext.mdanimtims, mdanimtims)
DEFINE_FIELD_NAMED(DCoreActor, sprext.mdanimcur, mdanimcur)
DEFINE_FIELD_NAMED(DCoreActor, sprext.angoff, angoff)
DEFINE_FIELD_NAMED(DCoreActor, sprext.pitch, pitch)
DEFINE_FIELD_NAMED(DCoreActor, sprext.roll, roll)
DEFINE_FIELD_NAMED(DCoreActor, sprext.renderflags, renderflags)
DEFINE_FIELD_NAMED(DCoreActor, sprext.alpha, alpha)
DEFINE_FIELD_NAMED(DCoreActor, time, spawnindex)

View file

@ -186,19 +186,14 @@ inline constexpr double sinscale(const int shift)
//
//---------------------------------------------------------------------------
inline double bsinf(const double ang, const int shift = 0)
{
return g_sinbam(ang * BAMUNIT) * sinscale(shift);
}
inline int bsin(const int ang, int shift = 0)
{
return (int)bsinf(ang, shift);
return int(g_sinbam(ang * BAMUNIT) * sinscale(shift));
}
inline int Sin(int ang)
{
return (int)bsinf(ang, 16);
return bsin(ang, 16);
}
//---------------------------------------------------------------------------
@ -214,19 +209,14 @@ inline int Sin(int ang)
//
//---------------------------------------------------------------------------
inline double bcosf(const double ang, const int shift = 0)
{
return g_cosbam(ang * BAMUNIT) * sinscale(shift);
}
inline int bcos(const int ang, int shift = 0)
{
return (int)bcosf(ang, shift);
return int(g_cosbam(ang * BAMUNIT) * sinscale(shift));
}
inline int Cos(int ang)
{
return (int)bcosf(ang, 16);
return bcos(ang, 16);
}
//---------------------------------------------------------------------------

View file

@ -257,7 +257,7 @@ static int32_t LoadMapHack(const char *filename, SpawnSpriteDef& sprites)
else if (sc.Compare("angleoff") || sc.Compare("angoff"))
{
if (sc.CheckNumber() && validateSprite())
sprites.sprext[currentsprite].angoff = (int16_t)sc.Number;
sprites.sprext[currentsprite].rot.Yaw = mapangle(sc.Number);
}
else if (sc.Compare("notmd") || sc.Compare("notmd2") || sc.Compare("notmd3"))
{
@ -272,12 +272,12 @@ static int32_t LoadMapHack(const char *filename, SpawnSpriteDef& sprites)
else if (sc.Compare("pitch"))
{
if (sc.CheckNumber() && validateSprite())
sprites.sprext[currentsprite].pitch = (int16_t)sc.Number;
sprites.sprext[currentsprite].rot.Pitch = mapangle(sc.Number);
}
else if (sc.Compare("roll"))
{
if (sc.CheckNumber() && validateSprite())
sprites.sprext[currentsprite].roll = (int16_t)sc.Number;
sprites.sprext[currentsprite].rot.Roll = mapangle(sc.Number);
}
else if (sc.Compare("mdxoff") || sc.Compare("mdpivxoff") || sc.Compare("mdpivotxoff"))
{
@ -324,10 +324,8 @@ static int32_t LoadMapHack(const char *filename, SpawnSpriteDef& sprites)
if (validateSprite())
{
auto& sx = sprites.sprext[currentsprite];
sx.angoff = 0;
sx.rot = {};
sx.renderflags &= ~(SPREXT_NOTMD | SPREXT_NOMDANIM | SPREXT_AWAY1 | SPREXT_AWAY2);
sx.pitch = 0;
sx.roll = 0;
sx.pivot_offset = {};
sx.position_offset = {};
}

View file

@ -691,7 +691,7 @@ struct spriteext_t
{
uint32_t mdanimtims;
int16_t mdanimcur;
int16_t angoff, pitch, roll;
DRotator rot;
vec3_t pivot_offset;
DVector3 position_offset;
uint8_t renderflags;

View file

@ -460,11 +460,11 @@ bool HWSprite::ProcessVoxel(HWDrawInfo* di, voxmodel_t* vox, tspritetype* spr, s
visibility = sectorVisibility(sector);
voxel = vox;
auto ang = spr->int_ang() + ownerActor->sprext.angoff;
auto ang = spr->angle + ownerActor->sprext.rot.Yaw;
if ((spr->clipdist & TSPR_MDLROTATE) || rotate)
{
int myclock = (PlayClock << 3) + MulScale(4 << 3, (int)di->Viewpoint.TicFrac, 16);
ang = (ang + myclock) & 2047;
ang += DAngle::fromBuild(myclock);
}
@ -481,8 +481,9 @@ bool HWSprite::ProcessVoxel(HWDrawInfo* di, voxmodel_t* vox, tspritetype* spr, s
if ((spr->ownerActor->spr.cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == CSTAT_SPRITE_ALIGNMENT_WALL)
{
sprxscale *= 1.25f;
translatevec.Y -= spr->xoffset * bcosf(ownerActor->sprext.angoff, -20);
translatevec.X += spr->xoffset * bsinf(ownerActor->sprext.angoff, -20);
auto rvec = ownerActor->sprext.rot.Yaw.ToVector();
translatevec.Y -= spr->xoffset * rvec.X / 64;
translatevec.X += spr->xoffset * rvec.Y / 64;
}
if (spr->cstat & CSTAT_SPRITE_YFLIP)
@ -525,7 +526,7 @@ bool HWSprite::ProcessVoxel(HWDrawInfo* di, voxmodel_t* vox, tspritetype* spr, s
rotmat.loadIdentity();
rotmat.translate(x + translatevec.X, z - translatevec.Z, y - translatevec.Y);
rotmat.rotate(DAngle::fromBuild(ang).Degrees() - 90.f, 0, 1, 0);
rotmat.rotate(ang.Degrees() - 90., 0, 1, 0);
rotmat.scale(scalevec.X, scalevec.Z, scalevec.Y);
// Apply pivot last
rotmat.translate(-voxel->piv.X, zoff, voxel->piv.Y);

View file

@ -490,9 +490,7 @@ FSerializer& Serialize(FSerializer& arc, const char* key, spriteext_t& c, sprite
{
arc("mdanimtims", c.mdanimtims, def->mdanimtims)
("mdanimcur", c.mdanimcur, def->mdanimcur)
("angoff", c.angoff, def->angoff)
("pitch", c.pitch, def->pitch)
("roll", c.roll, def->roll)
("rot", c.rot, def->rot)
("pivot_offset", c.pivot_offset, def->pivot_offset)
("position_offset", c.position_offset, def->position_offset)
("flags", c.renderflags, def->renderflags)

View file

@ -220,9 +220,9 @@ static void fakeProcessInput(PLAYER* pPlayer, InputPacket* pInput)
predict.at20 = clamp(predict.at20 + pInput->horz, IntToFixed(-60), IntToFixed(60));
if (predict.at20 > 0)
predict.at24 = FloatToFixed(MulScaleF(120., bsinf(FixedToFloat(predict.at20) * 8., 16)), 30);
predict.at24 = FloatToFixed(MulScaleF(120., bsin f(FixedToFloat(predict.at20) * 8., 16)), 30);
else if (predict.at20 < 0)
predict.at24 = FloatToFixed(MulScaleF(180., bsinf(FixedToFloat(predict.at20) * 8., 16)), 30);
predict.at24 = FloatToFixed(MulScaleF(180., bsin f(FixedToFloat(predict.at20) * 8., 16)), 30);
else
predict.at24 = 0;
#endif

View file

@ -797,12 +797,12 @@ bool WeaponOK(PLAYER* pp)
inline double pspSinVel(PANEL_SPRITE* const psp, int const ang = INT_MAX)
{
return psp->vel * synctics * bsinf(ang == INT_MAX ? psp->ang : ang, -22);
return psp->vel * synctics * BobVal(ang == INT_MAX ? psp->ang : ang) / 256.;
}
inline double pspCosVel(PANEL_SPRITE* const psp, int const ang = INT_MAX)
{
return psp->vel * synctics * bcosf(ang == INT_MAX ? psp->ang : ang, -22);
return psp->vel * synctics * BobVal((ang == INT_MAX ? psp->ang : ang) + 512) / 256.;
}
inline double pspPresentRetractScale(int const picnum, double const defaultheight)
@ -2170,8 +2170,8 @@ void pUziClip(PANEL_SPRITE* oclip)
// so it will end up the same for all synctic values
for (oclip->pos.X = oclip->opos.X, oclip->pos.Y = oclip->opos.Y; oclip->pos.Y < UZI_RELOAD_YOFF; )
{
oclip->pos.X += oclip->vel * bcosf(oclip->ang, -22);
oclip->pos.Y -= oclip->vel * bsinf(oclip->ang, -22);
oclip->pos.X += oclip->vel * BobVal(oclip->ang + 512) / 256.;
oclip->pos.Y -= oclip->vel * BobVal(oclip->ang) / 256.;
}
oclip->opos.X = oclip->pos.X;
@ -2755,7 +2755,7 @@ void pUziShell(PANEL_SPRITE* psp)
// get height
psp->opos.Y = psp->pos.Y = psp->bobpos.Y;
psp->pos.Y += psp->sin_amt * -bsinf(psp->sin_ndx, -14);
psp->pos.Y += psp->sin_amt * -BobVal(psp->sin_ndx);
// if off of the screen kill them
if (psp->pos.X > 330 || psp->pos.X < -10)
@ -7386,7 +7386,7 @@ void pWeaponBob(PANEL_SPRITE* psp, short condition)
psp->sin_ndx = (psp->sin_ndx + (synctics << 3) + (cl_swsmoothsway ? (synctics << 2) : RANDOM_P2(8) * synctics)) & 2047;
// get height
xdiff = psp->sin_amt * bsinf(psp->sin_ndx, -14);
xdiff = psp->sin_amt * BobVal(psp->sin_ndx);
// //
// bob_xxx moves the weapon up-down
@ -7398,7 +7398,7 @@ void pWeaponBob(PANEL_SPRITE* psp, short condition)
// base bob amt on the players velocity - Max of 128
double bobamt = bobvel / psp->bob_height_divider;
ydiff = bobamt * bsinf(bob_ndx, -14);
ydiff = bobamt * BobVal(bob_ndx);
}
// Back up current coordinates for interpolating.

View file

@ -29,8 +29,6 @@ class CoreActor native
native uint mdanimtims;
native int16 mdanimcur;
native int16 angoff, pitch, roll;
//native vec3 pivot_offset, position_offset; // no access needed - these are display only.
native uint8 renderflags;
native float alpha;