Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 0 additions & 44 deletions src/game/client/neo/c_neo_player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1366,16 +1366,6 @@ void C_NEO_Player::PostThink(void)
.a = 255,
};
vieweffects->Fade(sfade);

auto target = GetObserverTarget();
if (!IsValidObserverTarget(target))
{
auto nextTarget = FindNextObserverTarget(false);
if (nextTarget && nextTarget != target)
{
SetObserverTarget(nextTarget);
}
}
}
return;
}
Expand Down Expand Up @@ -1743,40 +1733,6 @@ float C_NEO_Player::GetSprintSpeed(void) const
}
}

void C_NEO_Player::CalcChaseCamView(Vector& eyeOrigin, QAngle& eyeAngles, float& fov)
{
if (!HandleDeathSpecCamSwitch(eyeOrigin, eyeAngles, fov))
{
BaseClass::CalcChaseCamView(eyeOrigin, eyeAngles, fov);
}
}

void C_NEO_Player::CalcInEyeCamView(Vector& eyeOrigin, QAngle& eyeAngles, float& fov)
{
if (!HandleDeathSpecCamSwitch(eyeOrigin, eyeAngles, fov))
{
BaseClass::CalcInEyeCamView(eyeOrigin, eyeAngles, fov);
}
}

bool C_NEO_Player::HandleDeathSpecCamSwitch(Vector& eyeOrigin, QAngle& eyeAngles, float& fov)
{
fov = GetFOV(); // jic the caller relies on us initializing this
auto target = GetObserverTarget();
if (!IsValidObserverTarget(target))
{
auto nextTarget = FindNextObserverTarget(false);
if (nextTarget && nextTarget != target)
{
SetObserverTarget(nextTarget);
}
VectorCopy(EyePosition(), eyeOrigin);
VectorCopy(EyeAngles(), eyeAngles);
return true;
}
return false;
}

float C_NEO_Player::GetActiveWeaponSpeedScale() const
{
auto pWep = static_cast<C_NEOBaseCombatWeapon *>(GetActiveWeapon());
Expand Down
5 changes: 0 additions & 5 deletions src/game/client/neo/c_neo_player.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,6 @@ class C_NEO_Player : public C_HL2MP_Player
virtual const Vector GetPlayerMins(void) const OVERRIDE;
virtual const Vector GetPlayerMaxs(void) const OVERRIDE;

virtual void CalcChaseCamView(Vector& eyeOrigin, QAngle& eyeAngles, float& fov) override;
virtual void CalcInEyeCamView(Vector& eyeOrigin, QAngle& eyeAngles, float& fov) override;

float CloakPower_CurrentVisualPercentage(void) const;

float GetNormSpeed_WithActiveWepEncumberment(void) const;
Expand All @@ -126,8 +123,6 @@ class C_NEO_Player : public C_HL2MP_Player
private:
float GetActiveWeaponSpeedScale() const;

bool HandleDeathSpecCamSwitch(Vector& eyeOrigin, QAngle& eyeAngles, float& fov);

public:
float m_flSpecFOV = 0.0f;
bool ShouldDrawHL2StyleQuickHud( void );
Expand Down
29 changes: 29 additions & 0 deletions src/game/server/neo/neo_player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1316,6 +1316,35 @@ void CNEO_Player::PostThink(void)
m_bInLean = NEO_LEAN_NONE;
}

auto observerMode = GetObserverMode();
if (observerMode == OBS_MODE_CHASE || observerMode == OBS_MODE_IN_EYE)
{
auto target = GetObserverTarget();
if (!IsValidObserverTarget(target))
{
auto nextTarget = FindNextObserverTarget(false);
if (nextTarget && nextTarget != target)
{
SetObserverTarget(nextTarget);
}
}
}

if ((observerMode == OBS_MODE_DEATHCAM || observerMode == OBS_MODE_NONE) && gpGlobals->curtime >= (GetDeathTime() + DEATH_ANIMATION_TIME))
{ // We switch observer mode to none to view own body in third person so assume should still be changing observer targets
auto target = GetObserverTarget();
if (!IsValidObserverTarget(target))
{
auto nextTarget = FindNextObserverTarget(false);
if (nextTarget && nextTarget != target)
{
SetObserverTarget(nextTarget);
}
}
SetObserverMode(OBS_MODE_IN_EYE);
}


return;
}
else
Expand Down
5 changes: 5 additions & 0 deletions src/game/server/player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2782,7 +2782,12 @@ bool CBasePlayer::IsValidObserverTarget(CBaseEntity * target)

if ( player->m_lifeState == LIFE_DEAD || player->m_lifeState == LIFE_DYING )
{
#ifdef NEO
constexpr int DEATH_SPEC_TIME = 3.0f; // OGNT switches spectator targets much faster than the DEATH_ANIMATION_TIME
if ((player->m_flDeathTime + DEATH_SPEC_TIME) < gpGlobals->curtime)
#else
if ( (player->m_flDeathTime + DEATH_ANIMATION_TIME ) < gpGlobals->curtime )
#endif // NEO
{
return false; // allow watching until 3 seconds after death to see death animation
}
Expand Down