Skip to content

Commit

Permalink
- Blood: Migrate to new actor viewzoffset property (sort of).
Browse files Browse the repository at this point in the history
* The way this game does it player Z in a distinct variable needs to be maintained as it's impossible to maintain proper Z velocities when trying to do without it.
  • Loading branch information
mjr4077au committed Nov 26, 2022
1 parent 5c623eb commit 71df589
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 2 deletions.
4 changes: 4 additions & 0 deletions source/games/blood/src/blood.cpp
Expand Up @@ -457,6 +457,10 @@ void GameInterface::Ticker()
}
thinktime.Unclock();

// update console player's viewzoffset at the end of the tic.
pPlayer->actor->oviewzoffset = pPlayer->actor->viewzoffset;
pPlayer->actor->viewzoffset = pPlayer->zView - pPlayer->actor->spr.pos.Z;

gFrameCount++;
PlayClock += kTicsPerFrame;
if (PlayClock == 8) gameaction = ga_autosave; // let the game run for 1 frame before saving.
Expand Down
2 changes: 2 additions & 0 deletions source/games/blood/src/player.cpp
Expand Up @@ -715,6 +715,7 @@ void playerResetInertia(PLAYER* pPlayer)
POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture];
pPlayer->zView = pPlayer->actor->spr.pos.Z - pPosture->eyeAboveZ;
pPlayer->zWeapon = pPlayer->actor->spr.pos.Z - pPosture->weaponAboveZ;
pPlayer->actor->oviewzoffset = pPlayer->actor->viewzoffset = pPlayer->zView - pPlayer->actor->spr.pos.Z;
viewBackupView(pPlayer->nPlayer);
}

Expand All @@ -725,6 +726,7 @@ void playerCorrectInertia(PLAYER* pPlayer, const DVector3& oldpos)
pPlayer->zWeapon += zAdj;
pPlayer->actor->opos.XY() += pPlayer->actor->spr.pos.XY() - oldpos.XY();
pPlayer->ozView += zAdj;
pPlayer->actor->opos.Z += zAdj;
}

void playerResetPowerUps(PLAYER* pPlayer)
Expand Down
3 changes: 1 addition & 2 deletions source/games/blood/src/view.cpp
Expand Up @@ -492,8 +492,7 @@ static void SetupView(PLAYER* pPlayer, DVector3& cPos, DAngle& cA, DAngle& cH, s
else
#endif
{
cPos.XY() = pPlayer->actor->interpolatedpos(interpfrac).XY();
cPos.Z = interpolatedvalue(pPlayer->ozView, pPlayer->zView, interpfrac);
cPos = pPlayer->actor->getRenderPos(interpfrac);
zDelta = interpolatedvalue(pPlayer->ozWeapon, pPlayer->zWeapon - pPlayer->zView - 12, interpfrac);
bobWidth = interpolatedvalue(pPlayer->obobWidth, pPlayer->bobWidth, interpfrac);
bobHeight = interpolatedvalue(pPlayer->obobHeight, pPlayer->bobHeight, interpfrac);
Expand Down

0 comments on commit 71df589

Please sign in to comment.