mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-28 15:02:39 +00:00
Fix some issues with changing player viewheight at runtime
- Viewheight change was delayed: Viewheight must be copied to player structure as well as the PlayerPawn. Not sure if should actually use deltaviewheight to spread the change out over a few tics instead of being instant. - Viewheight not preserved when travelling: player->viewheight must be restored from pawn->ViewHeight, because the temporary player set it back to the default viewheight.
This commit is contained in:
parent
ca16d99445
commit
8d501fdb9f
3 changed files with 8 additions and 0 deletions
|
@ -169,6 +169,7 @@ void FS_EmulateCmd(char * string)
|
||||||
{
|
{
|
||||||
// No, this is not correct. But this is the way Legacy WADs expect it to be handled!
|
// No, this is not correct. But this is the way Legacy WADs expect it to be handled!
|
||||||
if (players[i].mo != NULL) players[i].mo->ViewHeight = playerviewheight;
|
if (players[i].mo != NULL) players[i].mo->ViewHeight = playerviewheight;
|
||||||
|
players[i].viewheight = playerviewheight;
|
||||||
players[i].Uncrouch();
|
players[i].Uncrouch();
|
||||||
}
|
}
|
||||||
while (sc.GetString())
|
while (sc.GetString())
|
||||||
|
|
|
@ -1229,6 +1229,7 @@ void G_FinishTravel ()
|
||||||
pawn->lastenemy = NULL;
|
pawn->lastenemy = NULL;
|
||||||
pawn->player->mo = pawn;
|
pawn->player->mo = pawn;
|
||||||
pawn->player->camera = pawn;
|
pawn->player->camera = pawn;
|
||||||
|
pawn->player->viewheight = pawn->ViewHeight;
|
||||||
pawn->flags2 &= ~MF2_BLASTED;
|
pawn->flags2 &= ~MF2_BLASTED;
|
||||||
DObject::StaticPointerSubstitution (oldpawn, pawn);
|
DObject::StaticPointerSubstitution (oldpawn, pawn);
|
||||||
oldpawn->Destroy();
|
oldpawn->Destroy();
|
||||||
|
|
|
@ -3899,7 +3899,13 @@ void DLevelScript::DoSetActorProperty (AActor *actor, int property, int value)
|
||||||
|
|
||||||
case APROP_ViewHeight:
|
case APROP_ViewHeight:
|
||||||
if (actor->IsKindOf (RUNTIME_CLASS (APlayerPawn)))
|
if (actor->IsKindOf (RUNTIME_CLASS (APlayerPawn)))
|
||||||
|
{
|
||||||
static_cast<APlayerPawn *>(actor)->ViewHeight = value;
|
static_cast<APlayerPawn *>(actor)->ViewHeight = value;
|
||||||
|
if (actor->player != NULL)
|
||||||
|
{
|
||||||
|
actor->player->viewheight = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case APROP_AttackZOffset:
|
case APROP_AttackZOffset:
|
||||||
|
|
Loading…
Reference in a new issue