--
[ Picked text/plain from multipart/alternative ]
Can I ask what benefits this would serve?
On 3/23/06, Jorge Rodriguez <[EMAIL PROTECTED]> wrote:
>
> Client-side touch prediction is disabled in the standard SDK. I had some
> need for it, so I stuck it in. Since it's non-trivial, and something
> that shouldn't have to be written twice, I'm posting it here for
> opinions and corrections. It's mostly just copied from the equivalent
> server code. This patch is from my version control system, so it might
> not fit so cleanly into the patch utility. And those line numbers might
> not be totally accurate, if I've edited those files before.
>
> cl_dll/movehelper_client.cpp
> ===================================================================
> --- cl_dll/movehelper_client.cpp
> +++ cl_dll/movehelper_client.cpp
> @@ -128,6 +128,38 @@
>
> void CMoveHelperClient::ProcessImpacts( void )
> {
> + // Don't bother if the player ain't solid
> + if ( g_pLocalPlayer->IsSolidFlagSet( FSOLID_NOT_SOLID ) )
> + return;
> +
> + // Save off the velocity, cause we need to temporarily reset it
> + Vector vel = g_pLocalPlayer->GetAbsVelocity();
> +
> + // Touch other objects that were intersected during the movement.
> + for (int i = 0 ; i < m_TouchList.Size(); i++)
> + {
> + C_BaseEntity *pEnt = ClientEntityList().GetEnt(
> m_TouchList[i].trace.m_pEnt->entindex() );
> + if (!pEnt)
> + continue;
> +
> + // Don't ever collide with self!!!!
> + if ( pEnt == g_pLocalPlayer )
> + continue;
> +
> + // Reconstruct trace results.
> + m_TouchList[i].trace.m_pEnt = pEnt;
> +
> + // Use the velocity we had when we collided, so boxes will
> move, etc.
> + g_pLocalPlayer->SetAbsVelocity( m_TouchList[i].deltavelocity );
> +
> + pEnt->PhysicsImpact( g_pLocalPlayer, m_TouchList[i].trace );
> + }
> +
> + // Restore the velocity
> + g_pLocalPlayer->SetAbsVelocity( vel );
> +
> + // So no stuff is ever left over, sigh...
> + ResetTouchList();
> }
>
> void CMoveHelperClient::StartSound( const Vector& origin, const char
> *soundname )
>
> cl_dll/prediction.cpp
> ===================================================================
> --- cl_dll/prediction.cpp
> +++ cl_dll/prediction.cpp
> @@ -837,9 +837,7 @@
>
> RunPostThink( player );
>
> -// TODO: Predict impacts?
> -// // Let server invoke any needed impact functions
> -// moveHelper->ProcessImpacts();
> + moveHelper->ProcessImpacts();
>
> FinishCommand( player );
>
> So far this code works for my purposes. Has anybody else done this, or
> want to try this and provide some input? Maybe Valve has some pointers,
> or a reason why they didn't do it in the first place?
>
> Thanks.
>
> --
> Jorge "Vino" Rodriguez
>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>
>
--
- Benjamin Davison
--
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders