- Clean up chase cam backwards scaling since we're now using floats of the same scale.

This commit is contained in:
Mitchell Richters 2022-09-30 14:28:16 +10:00 committed by Christoph Oelckers
parent 3db6a38b4b
commit fc8c0b80aa
11 changed files with 11 additions and 16 deletions

View file

@ -37,12 +37,12 @@ IntRect viewport3d;
double cameradist, cameraclock;
bool calcChaseCamPos(DVector3& ppos, DCoreActor* act, sectortype** psect, DAngle ang, DAngle horiz, double const interpfrac)
bool calcChaseCamPos(DVector3& ppos, DCoreActor* act, sectortype** psect, DAngle ang, DAngle horiz, double const interpfrac, double const backamp)
{
if (!*psect) return false;
// Calculate new pos to shoot backwards
DVector3 npos = gi->chaseCamPos(ang, horiz);
DVector3 npos = DVector3(-ang.ToVector(), horiz.Tan()) * backamp;
HitInfoBase hitinfo;
auto bakcstat = act->spr.cstat;
@ -78,7 +78,7 @@ bool calcChaseCamPos(DVector3& ppos, DCoreActor* act, sectortype** psect, DAngle
{
bakcstat = hitinfo.hitActor->spr.cstat;
hitinfo.hitActor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
calcChaseCamPos(ppos, act, psect, ang, horiz, interpfrac);
calcChaseCamPos(ppos, act, psect, ang, horiz, interpfrac, backamp);
hitinfo.hitActor->spr.cstat = bakcstat;
return false;
}

View file

@ -240,7 +240,7 @@ extern double cameradist, cameraclock;
void loaddefinitionsfile(const char* fn, bool cumulative = false, bool maingrp = false);
bool calcChaseCamPos(DVector3& ppos, DCoreActor* pspr, sectortype** psectnum, DAngle ang, DAngle horiz, double const interpfrac);
bool calcChaseCamPos(DVector3& ppos, DCoreActor* pspr, sectortype** psectnum, DAngle ang, DAngle horiz, double const interpfrac, double const backamp);
int getslopeval(sectortype* sect, const DVector3& pos, double bazez);
bool cansee(const DVector3& start, sectortype* sect1, const DVector3& end, sectortype* sect2);
double intersectSprite(DCoreActor* actor, const DVector3& start, const DVector3& direction, DVector3& result, double maxfactor);

View file

@ -115,7 +115,6 @@ struct GameInterface
virtual void ToggleThirdPerson() { }
virtual void SwitchCoopView() { Printf("Unsupported command\n"); }
virtual void ToggleShowWeapon() { Printf("Unsupported command\n"); }
virtual DVector3 chaseCamPos(DAngle ang, DAngle horiz) { return DVector3(0,0,0); }
virtual void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) = 0;
virtual void UpdateCameras(double smoothratio) {}
virtual void EnterPortal(DCoreActor* viewer, int type) {}

View file

@ -139,7 +139,6 @@ struct GameInterface : public ::GameInterface
void ToggleThirdPerson() override;
void SwitchCoopView() override;
void ToggleShowWeapon() override;
DVector3 chaseCamPos(DAngle ang, DAngle horiz) { return DVector3(-ang.ToVector() * 80., horiz.Tan() * 80.); }
void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) override;
void EnterPortal(DCoreActor* viewer, int type) override;
void LeavePortal(DCoreActor* viewer, int type) override;

View file

@ -529,7 +529,7 @@ static void SetupView(PLAYER* pPlayer, DVector3& cPos, DAngle& cA, DAngle& cH, s
}
else
{
calcChaseCamPos(cPos, pPlayer->actor, &pSector, cA, cH, interpfrac);
calcChaseCamPos(cPos, pPlayer->actor, &pSector, cA, cH, interpfrac, 80.);
}
if (pSector != nullptr)
CheckLink(cPos, &pSector);

View file

@ -55,7 +55,6 @@ struct GameInterface : public ::GameInterface
void ToggleThirdPerson() override;
void SwitchCoopView() override;
void ToggleShowWeapon() override;
DVector3 chaseCamPos(DAngle ang, DAngle horiz) { return DVector3(-ang.ToVector() * 64., horiz.Tan() * 64.); }
void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) override;
void UpdateCameras(double smoothratio) override;
void EnterPortal(DCoreActor* viewer, int type) override;

View file

@ -328,10 +328,10 @@ void displayrooms(int snum, double interpfrac, bool sceneonly)
cpos.Z -= adjustment;
viewer = p->GetActor();
if (!calcChaseCamPos(cpos, viewer, &sect, cang, choriz, interpfrac))
if (!calcChaseCamPos(cpos, viewer, &sect, cang, choriz, interpfrac, 64.))
{
cpos.Z += adjustment;
calcChaseCamPos(cpos, viewer, &sect, cang, choriz, interpfrac);
calcChaseCamPos(cpos, viewer, &sect, cang, choriz, interpfrac, 64.);
}
}

View file

@ -235,7 +235,6 @@ struct GameInterface : public ::GameInterface
DAngle playerPitchMax() override { return DAngle::fromDeg(49.5); }
void WarpToCoords(double x, double y, double z, DAngle ang) override;
void ToggleThirdPerson() override;
DVector3 chaseCamPos(DAngle ang, DAngle horiz) { return DVector3(-ang.ToVector() * 96., horiz.Tan() * 96.); }
void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) override;
int GetCurrentSkill() override;
std::pair<DVector3, DAngle> GetCoordinates() override;

View file

@ -269,10 +269,10 @@ void DrawView(double interpfrac, bool sceneonly)
if (bCamera)
{
nCamerapos.Z -= 10;
if (!calcChaseCamPos(nCamerapos, pPlayerActor, &pSector, nCameraang, nCamerapan, interpfrac))
if (!calcChaseCamPos(nCamerapos, pPlayerActor, &pSector, nCameraang, nCamerapan, interpfrac, 96.))
{
nCamerapos.Z += 10;
calcChaseCamPos(nCamerapos, pPlayerActor, &pSector, nCameraang, nCamerapan, interpfrac);
calcChaseCamPos(nCamerapos, pPlayerActor, &pSector, nCameraang, nCamerapan, interpfrac, 96.);
}
}
}

View file

@ -1295,10 +1295,10 @@ void drawscreen(PLAYER* pp, double interpfrac, bool sceneonly)
{
tpos.Z -= 33;
if (!calcChaseCamPos(tpos, pp->actor, &tsect, tang, thoriz, interpfrac))
if (!calcChaseCamPos(tpos, pp->actor, &tsect, tang, thoriz, interpfrac, 128.))
{
tpos.Z += 33;
calcChaseCamPos(tpos, pp->actor, &tsect, tang, thoriz, interpfrac);
calcChaseCamPos(tpos, pp->actor, &tsect, tang, thoriz, interpfrac, 128.);
}
}

View file

@ -1885,7 +1885,6 @@ struct GameInterface : public ::GameInterface
void WarpToCoords(double x, double y, double z, DAngle ang) override;
void ToggleThirdPerson() override;
void SwitchCoopView() override;
DVector3 chaseCamPos(DAngle ang, DAngle horiz) { return DVector3(-ang.ToVector() * 128., horiz.Tan() * 128.); }
void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double smoothRatio) override;
void UpdateCameras(double smoothratio) override;
void EnterPortal(DCoreActor* viewer, int type) override;