[HL25] Backport monsters framerate depend turn speed fix
Updated already did it but this is to make more consistent with HL25's SDK.
This commit is contained in:
parent
f2c917f1f8
commit
95fdebe75c
4 changed files with 51 additions and 49 deletions
|
@ -84,13 +84,18 @@ void CFlyingMonster::Stop()
|
|||
}
|
||||
|
||||
|
||||
float CFlyingMonster::ChangeYaw(int speed)
|
||||
float CFlyingMonster::ChangeYaw(int yawSpeed)
|
||||
{
|
||||
if (pev->movetype == MOVETYPE_FLY)
|
||||
{
|
||||
float diff = FlYawDiff();
|
||||
float target = 0;
|
||||
|
||||
if (m_flLastZYawTime == 0.0f)
|
||||
{
|
||||
m_flLastZYawTime = gpGlobals->time - gpGlobals->frametime;
|
||||
}
|
||||
|
||||
if (m_IdealActivity != GetStoppedActivity())
|
||||
{
|
||||
if (diff < -20)
|
||||
|
@ -99,23 +104,17 @@ float CFlyingMonster::ChangeYaw(int speed)
|
|||
target = -90;
|
||||
}
|
||||
|
||||
if (m_flLastZYawTime == 0)
|
||||
{
|
||||
m_flLastZYawTime = gpGlobals->time - gpGlobals->frametime;
|
||||
}
|
||||
|
||||
float delta = gpGlobals->time - m_flLastZYawTime;
|
||||
|
||||
m_flLastZYawTime = gpGlobals->time;
|
||||
|
||||
if (delta > 0.25)
|
||||
{
|
||||
delta = 0.25;
|
||||
}
|
||||
// Clamp delta like the engine does with frametime
|
||||
if (delta > 0.25f)
|
||||
delta = 0.25f;
|
||||
|
||||
pev->angles.z = UTIL_Approach(target, pev->angles.z, 220.0 * delta);
|
||||
float speed = 220.0f * delta;
|
||||
pev->angles.z = UTIL_Approach(target, pev->angles.z, 220.0 * speed);
|
||||
}
|
||||
return CBaseMonster::ChangeYaw(speed);
|
||||
return CBaseMonster::ChangeYaw(yawSpeed);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ public:
|
|||
Activity GetStoppedActivity() override;
|
||||
void Killed(entvars_t* pevAttacker, int iGib) override;
|
||||
void Stop() override;
|
||||
float ChangeYaw(int speed) override;
|
||||
float ChangeYaw(int yawSpeed) override;
|
||||
void HandleAnimEvent(MonsterEvent_t* pEvent) override;
|
||||
void MoveExecute(CBaseEntity* pTargetEnt, const Vector& vecDir, float flInterval) override;
|
||||
void Move(float flInterval = 0.1) override;
|
||||
|
|
|
@ -75,7 +75,7 @@ public:
|
|||
bool CheckMeleeAttack1(float flDot, float flDist) override;
|
||||
bool CheckRangeAttack1(float flDot, float flDist) override;
|
||||
|
||||
float ChangeYaw(int speed) override;
|
||||
float ChangeYaw(int yawSpeed) override;
|
||||
Activity GetStoppedActivity() override;
|
||||
void SetActivity(Activity NewActivity) override;
|
||||
|
||||
|
@ -88,7 +88,7 @@ public:
|
|||
|
||||
float VectorToPitch(const Vector& vec);
|
||||
float FlPitchDiff();
|
||||
float ChangePitch(int speed);
|
||||
float ChangePitch(int pitchSpeed);
|
||||
|
||||
Vector m_SaveVelocity;
|
||||
float m_idealDist;
|
||||
|
@ -106,7 +106,8 @@ public:
|
|||
|
||||
float m_flNextAlert;
|
||||
|
||||
float m_flLastPitchTime;
|
||||
float m_flLastPitchTime; // Last frame time pitch was changed
|
||||
float m_flLastZYawTime; // Last frame time Z was changed when yaw was changed
|
||||
|
||||
static const char* pIdleSounds[];
|
||||
static const char* pAlertSounds[];
|
||||
|
@ -806,12 +807,18 @@ float CIchthyosaur::FlPitchDiff()
|
|||
return flPitchDiff;
|
||||
}
|
||||
|
||||
float CIchthyosaur::ChangePitch(int speed)
|
||||
float CIchthyosaur::ChangePitch(int pitchSpeed)
|
||||
{
|
||||
if (pev->movetype == MOVETYPE_FLY)
|
||||
{
|
||||
float diff = FlPitchDiff();
|
||||
float target = 0;
|
||||
|
||||
if (m_flLastPitchTime == 0.0f)
|
||||
{
|
||||
m_flLastPitchTime = gpGlobals->time - gpGlobals->frametime;
|
||||
}
|
||||
|
||||
if (m_IdealActivity != GetStoppedActivity())
|
||||
{
|
||||
if (diff < -20)
|
||||
|
@ -820,32 +827,31 @@ float CIchthyosaur::ChangePitch(int speed)
|
|||
target = -45;
|
||||
}
|
||||
|
||||
if (m_flLastPitchTime == 0)
|
||||
{
|
||||
m_flLastPitchTime = gpGlobals->time - gpGlobals->frametime;
|
||||
}
|
||||
|
||||
float delta = gpGlobals->time - m_flLastPitchTime;
|
||||
|
||||
m_flLastPitchTime = gpGlobals->time;
|
||||
|
||||
if (delta > 0.25)
|
||||
{
|
||||
delta = 0.25;
|
||||
}
|
||||
// Clamp delta like the engine does with frametime
|
||||
if (delta > 0.25f)
|
||||
delta = 0.25f;
|
||||
|
||||
pev->angles.x = UTIL_Approach(target, pev->angles.x, 220.0 * delta);
|
||||
float speed = 220.0f * delta;
|
||||
pev->angles.x = UTIL_Approach(target, pev->angles.x, speed);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
float CIchthyosaur::ChangeYaw(int speed)
|
||||
float CIchthyosaur::ChangeYaw(int yawSpeed)
|
||||
{
|
||||
if (pev->movetype == MOVETYPE_FLY)
|
||||
{
|
||||
float diff = FlYawDiff();
|
||||
float target = 0;
|
||||
|
||||
if (m_flLastZYawTime == 0.0f)
|
||||
{
|
||||
m_flLastZYawTime = gpGlobals->time - gpGlobals->frametime;
|
||||
}
|
||||
|
||||
if (m_IdealActivity != GetStoppedActivity())
|
||||
{
|
||||
if (diff < -20)
|
||||
|
@ -854,23 +860,17 @@ float CIchthyosaur::ChangeYaw(int speed)
|
|||
target = -20;
|
||||
}
|
||||
|
||||
if (m_flLastZYawTime == 0)
|
||||
{
|
||||
m_flLastZYawTime = gpGlobals->time - gpGlobals->frametime;
|
||||
}
|
||||
|
||||
float delta = gpGlobals->time - m_flLastZYawTime;
|
||||
|
||||
m_flLastZYawTime = gpGlobals->time;
|
||||
|
||||
if (delta > 0.25)
|
||||
{
|
||||
delta = 0.25;
|
||||
}
|
||||
// Clamp delta like the engine does with frametime
|
||||
if (delta > 0.25f)
|
||||
delta = 0.25f;
|
||||
|
||||
pev->angles.z = UTIL_Approach(target, pev->angles.z, 220.0 * delta);
|
||||
float speed = 220.f * delta;
|
||||
pev->angles.z = UTIL_Approach(target, pev->angles.z, speed);
|
||||
}
|
||||
return CFlyingMonster::ChangeYaw(speed);
|
||||
return CFlyingMonster::ChangeYaw(yawSpeed);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2527,16 +2527,19 @@ float CBaseMonster::ChangeYaw(int yawSpeed)
|
|||
ideal = pev->ideal_yaw;
|
||||
if (current != ideal)
|
||||
{
|
||||
float delta = gpGlobals->time - m_flLastYawTime;
|
||||
|
||||
m_flLastYawTime = gpGlobals->time;
|
||||
|
||||
if (delta > 0.25)
|
||||
if (m_flLastYawTime == 0.0f)
|
||||
{
|
||||
delta = 0.25;
|
||||
m_flLastYawTime = gpGlobals->time - gpGlobals->frametime;
|
||||
}
|
||||
|
||||
speed = yawSpeed * delta * 2;
|
||||
float delta = gpGlobals->time - m_flLastYawTime;
|
||||
m_flLastYawTime = gpGlobals->time;
|
||||
|
||||
// Clamp delta like the engine does with frametime
|
||||
if (delta > 0.25)
|
||||
delta = 0.25;
|
||||
|
||||
speed = (float)yawSpeed * delta * 2;
|
||||
move = ideal - current;
|
||||
|
||||
if (ideal > current)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue