mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-08 00:32:28 +00:00
- Clean up chase cam backwards scaling since we're now using floats of the same scale.
This commit is contained in:
parent
3db6a38b4b
commit
fc8c0b80aa
11 changed files with 11 additions and 16 deletions
|
@ -37,12 +37,12 @@ IntRect viewport3d;
|
||||||
|
|
||||||
double cameradist, cameraclock;
|
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;
|
if (!*psect) return false;
|
||||||
|
|
||||||
// Calculate new pos to shoot backwards
|
// Calculate new pos to shoot backwards
|
||||||
DVector3 npos = gi->chaseCamPos(ang, horiz);
|
DVector3 npos = DVector3(-ang.ToVector(), horiz.Tan()) * backamp;
|
||||||
|
|
||||||
HitInfoBase hitinfo;
|
HitInfoBase hitinfo;
|
||||||
auto bakcstat = act->spr.cstat;
|
auto bakcstat = act->spr.cstat;
|
||||||
|
@ -78,7 +78,7 @@ bool calcChaseCamPos(DVector3& ppos, DCoreActor* act, sectortype** psect, DAngle
|
||||||
{
|
{
|
||||||
bakcstat = hitinfo.hitActor->spr.cstat;
|
bakcstat = hitinfo.hitActor->spr.cstat;
|
||||||
hitinfo.hitActor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
|
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;
|
hitinfo.hitActor->spr.cstat = bakcstat;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -240,7 +240,7 @@ extern double cameradist, cameraclock;
|
||||||
|
|
||||||
void loaddefinitionsfile(const char* fn, bool cumulative = false, bool maingrp = false);
|
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);
|
int getslopeval(sectortype* sect, const DVector3& pos, double bazez);
|
||||||
bool cansee(const DVector3& start, sectortype* sect1, const DVector3& end, sectortype* sect2);
|
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);
|
double intersectSprite(DCoreActor* actor, const DVector3& start, const DVector3& direction, DVector3& result, double maxfactor);
|
||||||
|
|
|
@ -115,7 +115,6 @@ struct GameInterface
|
||||||
virtual void ToggleThirdPerson() { }
|
virtual void ToggleThirdPerson() { }
|
||||||
virtual void SwitchCoopView() { Printf("Unsupported command\n"); }
|
virtual void SwitchCoopView() { Printf("Unsupported command\n"); }
|
||||||
virtual void ToggleShowWeapon() { 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 processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) = 0;
|
||||||
virtual void UpdateCameras(double smoothratio) {}
|
virtual void UpdateCameras(double smoothratio) {}
|
||||||
virtual void EnterPortal(DCoreActor* viewer, int type) {}
|
virtual void EnterPortal(DCoreActor* viewer, int type) {}
|
||||||
|
|
|
@ -139,7 +139,6 @@ struct GameInterface : public ::GameInterface
|
||||||
void ToggleThirdPerson() override;
|
void ToggleThirdPerson() override;
|
||||||
void SwitchCoopView() override;
|
void SwitchCoopView() override;
|
||||||
void ToggleShowWeapon() 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 processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) override;
|
||||||
void EnterPortal(DCoreActor* viewer, int type) override;
|
void EnterPortal(DCoreActor* viewer, int type) override;
|
||||||
void LeavePortal(DCoreActor* viewer, int type) override;
|
void LeavePortal(DCoreActor* viewer, int type) override;
|
||||||
|
|
|
@ -529,7 +529,7 @@ static void SetupView(PLAYER* pPlayer, DVector3& cPos, DAngle& cA, DAngle& cH, s
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
calcChaseCamPos(cPos, pPlayer->actor, &pSector, cA, cH, interpfrac);
|
calcChaseCamPos(cPos, pPlayer->actor, &pSector, cA, cH, interpfrac, 80.);
|
||||||
}
|
}
|
||||||
if (pSector != nullptr)
|
if (pSector != nullptr)
|
||||||
CheckLink(cPos, &pSector);
|
CheckLink(cPos, &pSector);
|
||||||
|
|
|
@ -55,7 +55,6 @@ struct GameInterface : public ::GameInterface
|
||||||
void ToggleThirdPerson() override;
|
void ToggleThirdPerson() override;
|
||||||
void SwitchCoopView() override;
|
void SwitchCoopView() override;
|
||||||
void ToggleShowWeapon() 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 processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) override;
|
||||||
void UpdateCameras(double smoothratio) override;
|
void UpdateCameras(double smoothratio) override;
|
||||||
void EnterPortal(DCoreActor* viewer, int type) override;
|
void EnterPortal(DCoreActor* viewer, int type) override;
|
||||||
|
|
|
@ -328,10 +328,10 @@ void displayrooms(int snum, double interpfrac, bool sceneonly)
|
||||||
cpos.Z -= adjustment;
|
cpos.Z -= adjustment;
|
||||||
|
|
||||||
viewer = p->GetActor();
|
viewer = p->GetActor();
|
||||||
if (!calcChaseCamPos(cpos, viewer, §, cang, choriz, interpfrac))
|
if (!calcChaseCamPos(cpos, viewer, §, cang, choriz, interpfrac, 64.))
|
||||||
{
|
{
|
||||||
cpos.Z += adjustment;
|
cpos.Z += adjustment;
|
||||||
calcChaseCamPos(cpos, viewer, §, cang, choriz, interpfrac);
|
calcChaseCamPos(cpos, viewer, §, cang, choriz, interpfrac, 64.);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -235,7 +235,6 @@ struct GameInterface : public ::GameInterface
|
||||||
DAngle playerPitchMax() override { return DAngle::fromDeg(49.5); }
|
DAngle playerPitchMax() override { return DAngle::fromDeg(49.5); }
|
||||||
void WarpToCoords(double x, double y, double z, DAngle ang) override;
|
void WarpToCoords(double x, double y, double z, DAngle ang) override;
|
||||||
void ToggleThirdPerson() 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;
|
void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) override;
|
||||||
int GetCurrentSkill() override;
|
int GetCurrentSkill() override;
|
||||||
std::pair<DVector3, DAngle> GetCoordinates() override;
|
std::pair<DVector3, DAngle> GetCoordinates() override;
|
||||||
|
|
|
@ -269,10 +269,10 @@ void DrawView(double interpfrac, bool sceneonly)
|
||||||
if (bCamera)
|
if (bCamera)
|
||||||
{
|
{
|
||||||
nCamerapos.Z -= 10;
|
nCamerapos.Z -= 10;
|
||||||
if (!calcChaseCamPos(nCamerapos, pPlayerActor, &pSector, nCameraang, nCamerapan, interpfrac))
|
if (!calcChaseCamPos(nCamerapos, pPlayerActor, &pSector, nCameraang, nCamerapan, interpfrac, 96.))
|
||||||
{
|
{
|
||||||
nCamerapos.Z += 10;
|
nCamerapos.Z += 10;
|
||||||
calcChaseCamPos(nCamerapos, pPlayerActor, &pSector, nCameraang, nCamerapan, interpfrac);
|
calcChaseCamPos(nCamerapos, pPlayerActor, &pSector, nCameraang, nCamerapan, interpfrac, 96.);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1295,10 +1295,10 @@ void drawscreen(PLAYER* pp, double interpfrac, bool sceneonly)
|
||||||
{
|
{
|
||||||
tpos.Z -= 33;
|
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;
|
tpos.Z += 33;
|
||||||
calcChaseCamPos(tpos, pp->actor, &tsect, tang, thoriz, interpfrac);
|
calcChaseCamPos(tpos, pp->actor, &tsect, tang, thoriz, interpfrac, 128.);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1885,7 +1885,6 @@ struct GameInterface : public ::GameInterface
|
||||||
void WarpToCoords(double x, double y, double z, DAngle ang) override;
|
void WarpToCoords(double x, double y, double z, DAngle ang) override;
|
||||||
void ToggleThirdPerson() override;
|
void ToggleThirdPerson() override;
|
||||||
void SwitchCoopView() 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 processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double smoothRatio) override;
|
||||||
void UpdateCameras(double smoothratio) override;
|
void UpdateCameras(double smoothratio) override;
|
||||||
void EnterPortal(DCoreActor* viewer, int type) override;
|
void EnterPortal(DCoreActor* viewer, int type) override;
|
||||||
|
|
Loading…
Reference in a new issue