Merge pull request #120 from Mauler125/bot_timebase_fix

Bot player timebase fix
This commit is contained in:
Kawe Mazidjatari 2024-05-26 13:31:46 +02:00 committed by GitHub
commit be24ccf8ac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 23 deletions

View File

@ -60,37 +60,29 @@ QAngle* CPlayer::EyeAngles(QAngle* pAngles)
//------------------------------------------------------------------------------
inline void CPlayer::SetTimeBase(float flTimeBase)
{
float flTime = float(TIME_TO_TICKS(flTimeBase));
const int nRemainderTime = Max(TIME_TO_TICKS(flTimeBase), 0);
SetLastUCmdSimulationRemainderTime(nRemainderTime);
if (flTime < 0.0f)
flTime = 0.0f;
SetLastUCmdSimulationRemainderTime(flTime);
float flSimulationTime = flTimeBase - m_lastUCmdSimulationRemainderTime * TICK_INTERVAL;
if (flSimulationTime >= 0.0f)
{
flTime = flSimulationTime;
}
SetTotalExtraClientCmdTimeAttempted(flTime);
const float flAttemptedTime = Max(flTimeBase - (m_lastUCmdSimulationRemainderTime * TICK_INTERVAL), 0.0f);
SetTotalExtraClientCmdTimeAttempted(flAttemptedTime);
}
//------------------------------------------------------------------------------
// Purpose: sets the last user cmd simulation remainder time
// Input : flRemainderTime -
// Input : nRemainderTime -
//------------------------------------------------------------------------------
void CPlayer::SetLastUCmdSimulationRemainderTime(float flRemainderTime)
void CPlayer::SetLastUCmdSimulationRemainderTime(int nRemainderTime)
{
if (m_lastUCmdSimulationRemainderTime != flRemainderTime)
if (m_lastUCmdSimulationRemainderTime != nRemainderTime)
{
edict_t nEdict = NetworkProp()->GetEdict();
const edict_t nEdict = NetworkProp()->GetEdict();
if (nEdict != FL_EDICT_INVALID)
{
_InterlockedOr16((SHORT*)(*g_pGlobals)->m_pEdicts + nEdict + 32, 0x200u);
}
m_lastUCmdSimulationRemainderTime = flRemainderTime;
m_lastUCmdSimulationRemainderTime = nRemainderTime;
}
}
@ -102,7 +94,8 @@ void CPlayer::SetTotalExtraClientCmdTimeAttempted(float flAttemptedTime)
{
if (m_totalExtraClientCmdTimeAttempted != flAttemptedTime)
{
edict_t nEdict = NetworkProp()->GetEdict();
const edict_t nEdict = NetworkProp()->GetEdict();
if (nEdict != FL_EDICT_INVALID)
{
_InterlockedOr16((SHORT*)(*g_pGlobals)->m_pEdicts + nEdict + 32, 0x200u);

View File

@ -247,14 +247,12 @@ public:
QAngle* EyeAngles(QAngle* pAngles);
void SetTimeBase(float flTimeBase);
void SetLastUCmdSimulationRemainderTime(float flRemainderTime);
void SetLastUCmdSimulationRemainderTime(int nRemainderTime);
void SetTotalExtraClientCmdTimeAttempted(float flAttemptedTime);
void ProcessUserCmds(CUserCmd* cmds, int numCmds, int totalCmds,
int droppedPackets, bool paused);
void ClampUnlag(CUserCmd* cmd);
void PlayerRunCommand(CUserCmd* pUserCmd, IMoveHelper* pMover);
void SetLastUserCommand(CUserCmd* pUserCmd);
@ -576,7 +574,7 @@ private:
float m_totalFrameTime;
float m_joinFrameTime;
int m_lastUCmdSimulationTicks;
float m_lastUCmdSimulationRemainderTime;
int m_lastUCmdSimulationRemainderTime; // Originally float???
float m_totalExtraClientCmdTimeAttempted;
int m_hPlayerViewEntity;
bool m_atLeastOneCommandRunThisServerFrame;