Merge pull request #332 from edward-san/pitch_fix

- Fixed SetActorPitch and ChangeActorPitch issue.
This commit is contained in:
coelckers 2015-05-28 09:04:55 +02:00
commit 7f68d88268
3 changed files with 19 additions and 19 deletions

View file

@ -823,7 +823,7 @@ public:
} }
// These also set CF_INTERPVIEW for players. // These also set CF_INTERPVIEW for players.
void SetPitch(int p, bool interpolate); void SetPitch(int p, bool interpolate, bool forceclamp = false);
void SetAngle(angle_t ang, bool interpolate); void SetAngle(angle_t ang, bool interpolate);
void SetRoll(angle_t roll, bool interpolate); void SetRoll(angle_t roll, bool interpolate);

View file

@ -3115,8 +3115,24 @@ void AActor::SetShade (int r, int g, int b)
fillcolor = MAKEARGB(ColorMatcher.Pick (r, g, b), r, g, b); fillcolor = MAKEARGB(ColorMatcher.Pick (r, g, b), r, g, b);
} }
void AActor::SetPitch(int p, bool interpolate) void AActor::SetPitch(int p, bool interpolate, bool forceclamp)
{ {
if (player != NULL || forceclamp)
{ // clamp the pitch we set
int min, max;
if (player != NULL)
{
min = player->MinPitch;
max = player->MaxPitch;
}
else
{
min = -ANGLE_90 + (1 << ANGLETOFINESHIFT);
max = ANGLE_90 - (1 << ANGLETOFINESHIFT);
}
p = clamp<int>(p, min, max);
}
if (p != pitch) if (p != pitch)
{ {
pitch = p; pitch = p;

View file

@ -3989,23 +3989,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetPitch)
return; return;
} }
if (ref->player != NULL || (flags & SPF_FORCECLAMP)) ref->SetPitch(pitch, !!(flags & SPF_INTERPOLATE), !!(flags & SPF_FORCECLAMP));
{ // clamp the pitch we set
int min, max;
if (ref->player != NULL)
{
min = ref->player->MinPitch;
max = ref->player->MaxPitch;
}
else
{
min = -ANGLE_90 + (1 << ANGLETOFINESHIFT);
max = ANGLE_90 - (1 << ANGLETOFINESHIFT);
}
pitch = clamp<int>(pitch, min, max);
}
ref->SetPitch(pitch, !!(flags & SPF_INTERPOLATE));
} }
//=========================================================================== //===========================================================================