Fixed in_strafe and others
since CL_ExtraMouseUpdate is called before CreateMove now
This commit is contained in:
parent
6e5facd8cc
commit
497a61b029
8 changed files with 24 additions and 14 deletions
|
@ -2099,8 +2099,10 @@ void CL_ExtraMouseUpdate( float frametime )
|
|||
return;
|
||||
#endif
|
||||
|
||||
int nextcommandnr = cl.lastoutgoingcommand + cl.chokedcommands + 1;
|
||||
|
||||
// Have client .dll create and store usercmd structure
|
||||
g_ClientDLL->ExtraMouseSample( frametime, !cl.m_bPaused );
|
||||
g_ClientDLL->ExtraMouseSample( nextcommandnr, frametime, !cl.m_bPaused );
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -3246,6 +3246,7 @@ void _Host_RunFrame (float time)
|
|||
// continuous controllers affecting the view are also simulated this way
|
||||
// but they have a cap applied by IN_SetSampleTime() so they are not also
|
||||
// simulated during input gathering
|
||||
g_ClientGlobalVariables.frametime = host_frametime;
|
||||
CL_ExtraMouseUpdate( host_frametime );
|
||||
#endif
|
||||
for ( int tick = 0; tick < numticks; tick++ )
|
||||
|
@ -3432,7 +3433,17 @@ void _Host_RunFrame (float time)
|
|||
serverticks = numticks;
|
||||
g_ClientGlobalVariables.simTicksThisFrame = clientticks;
|
||||
g_ServerGlobalVariables.simTicksThisFrame = serverticks;
|
||||
g_ServerGlobalVariables.tickcount = sv.m_nTickCount;
|
||||
g_ServerGlobalVariables.tickcount = sv.m_nTickCount;
|
||||
|
||||
// TODO_ENHANCED:
|
||||
// Update the mouse as last so we can get the right viewangles while taking screenshot.
|
||||
// The mouse is always simulated for the current frame's time
|
||||
// This makes updates smooth in every case
|
||||
// continuous controllers affecting the view are also simulated this way
|
||||
// but they have a cap applied by IN_SetSampleTime() so they are not also
|
||||
// simulated during input gathering
|
||||
g_ClientGlobalVariables.frametime = host_frametime;
|
||||
CL_ExtraMouseUpdate( host_frametime );
|
||||
|
||||
// THREADED: Run Client
|
||||
// -------------------
|
||||
|
|
|
@ -630,7 +630,7 @@ public:
|
|||
virtual void IN_SetSampleTime( float frametime );
|
||||
// Create movement command
|
||||
virtual void CreateMove ( int sequence_number, float input_sample_frametime, bool active );
|
||||
virtual void ExtraMouseSample( float frametime, bool active );
|
||||
virtual void ExtraMouseSample( int sequence_number, float frametime, bool active );
|
||||
virtual bool WriteUsercmdDeltaToBuffer( bf_write *buf, int from, int to, bool isnewcommand );
|
||||
virtual void EncodeUserCmdToBuffer( bf_write& buf, int slot );
|
||||
virtual void DecodeUserCmdFromBuffer( bf_read& buf, int slot );
|
||||
|
@ -1419,7 +1419,7 @@ int CHLClient::IN_KeyEvent( int eventcode, ButtonCode_t keynum, const char *pszC
|
|||
return input->KeyEvent( eventcode, keynum, pszCurrentBinding );
|
||||
}
|
||||
|
||||
void CHLClient::ExtraMouseSample( float frametime, bool active )
|
||||
void CHLClient::ExtraMouseSample( int sequence_number, float frametime, bool active )
|
||||
{
|
||||
Assert( C_BaseEntity::IsAbsRecomputationsEnabled() );
|
||||
Assert( C_BaseEntity::IsAbsQueriesValid() );
|
||||
|
@ -1427,7 +1427,7 @@ void CHLClient::ExtraMouseSample( float frametime, bool active )
|
|||
C_BaseAnimating::AutoAllowBoneAccess boneaccess( true, false );
|
||||
|
||||
MDLCACHE_CRITICAL_SECTION();
|
||||
input->ExtraMouseSample( frametime, active );
|
||||
input->ExtraMouseSample( sequence_number, frametime, active );
|
||||
}
|
||||
|
||||
void CHLClient::IN_SetSampleTime( float frametime )
|
||||
|
|
|
@ -37,7 +37,7 @@ public:
|
|||
virtual int GetButtonBits( int ) = 0;
|
||||
// Create movement command
|
||||
virtual void CreateMove ( int sequence_number, float input_sample_frametime, bool active ) = 0;
|
||||
virtual void ExtraMouseSample( float frametime, bool active ) = 0;
|
||||
virtual void ExtraMouseSample( int sequence_number, float frametime, bool active ) = 0;
|
||||
virtual bool WriteUsercmdDeltaToBuffer( bf_write *buf, int from, int to, bool isnewcommand ) = 0;
|
||||
virtual void EncodeUserCmdToBuffer( bf_write& buf, int slot ) = 0;
|
||||
virtual void DecodeUserCmdFromBuffer( bf_read& buf, int slot ) = 0;
|
||||
|
|
|
@ -1016,12 +1016,11 @@ if active == 1 then we are 1) not playing back demos ( where our commands are ig
|
|||
================
|
||||
*/
|
||||
|
||||
void CInput::ExtraMouseSample( float frametime, bool active )
|
||||
void CInput::ExtraMouseSample( int sequence_number, float frametime, bool active )
|
||||
{
|
||||
VPROF( "CInput::ExtraMouseSample" );
|
||||
|
||||
CUserCmd dummy;
|
||||
CUserCmd *cmd = &dummy;
|
||||
CUserCmd *cmd = &m_pCommands[sequence_number % MULTIPLAYER_BACKUP];
|
||||
|
||||
cmd->Reset();
|
||||
|
||||
|
@ -1132,8 +1131,6 @@ void CInput::CreateMove ( int sequence_number, float input_sample_frametime, boo
|
|||
CUserCmd *cmd = &m_pCommands[ sequence_number % MULTIPLAYER_BACKUP ];
|
||||
CVerifiedUserCmd *pVerified = &m_pVerifiedCommands[ sequence_number % MULTIPLAYER_BACKUP ];
|
||||
|
||||
cmd->Reset();
|
||||
|
||||
cmd->command_number = sequence_number;
|
||||
|
||||
QAngle viewangles;
|
||||
|
|
|
@ -47,7 +47,7 @@ public:
|
|||
virtual void Shutdown_All( void );
|
||||
virtual int GetButtonBits( int );
|
||||
virtual void CreateMove ( int sequence_number, float input_sample_frametime, bool active );
|
||||
virtual void ExtraMouseSample( float frametime, bool active );
|
||||
virtual void ExtraMouseSample( int sequence_number, float frametime, bool active );
|
||||
virtual bool WriteUsercmdDeltaToBuffer( bf_write *buf, int from, int to, bool isnewcommand );
|
||||
virtual void EncodeUserCmdToBuffer( bf_write& buf, int slot );
|
||||
virtual void DecodeUserCmdFromBuffer( bf_read& buf, int slot );
|
||||
|
|
|
@ -150,7 +150,7 @@ static void CalcDemoViewOverride( Vector &origin, QAngle &angles )
|
|||
{
|
||||
engine->SetViewAngles( s_DemoAngle );
|
||||
|
||||
input->ExtraMouseSample( gpGlobals->absoluteframetime, true );
|
||||
input->ExtraMouseSample( 0, gpGlobals->absoluteframetime, true );
|
||||
|
||||
engine->GetViewAngles( s_DemoAngle );
|
||||
|
||||
|
|
|
@ -653,7 +653,7 @@ public:
|
|||
|
||||
// If the game is running faster than the tick_interval framerate, then we do extra mouse sampling to avoid jittery input
|
||||
// This code path is much like the normal move creation code, except no move is created
|
||||
virtual void ExtraMouseSample( float frametime, bool active ) = 0;
|
||||
virtual void ExtraMouseSample( int sequence_number, float frametime, bool active ) = 0;
|
||||
|
||||
// Encode the delta (changes) between the CUserCmd in slot from vs the one in slot to. The game code will have
|
||||
// matching logic to read the delta.
|
||||
|
|
Loading…
Reference in a new issue