--
[ Picked text/plain from multipart/alternative ]
Hey Half-Life 2 coders!

I have a question about models on the client and server, specifically what
is required to have a different model than the server but keep things
running smoothly.
I have managed to get the client side player model different than the server
side model. At this point I only need the server side to be static, and only
for animation updates etc for the client. The rigs on the models on the
client and server are the same including the hitbox model, the only
difference would be that the client side will use its own mesh different
from the server. The problem is by having a player model different from the
server on other clients, the model no longer updates its origin, angles, or
animation. Turning interpolation off fixes the problem but interpolation is
important. :P
Anyway, we are still working on this but if anyone has had this problem
before and knows what changes on the client are required to have a different
model then the server but keep the interpolation intact, we would be most
greatful.

Here is the code we use for changing the client side model, the code I
haven't included is mostly changes to prevent the client from updating the
model in a server update.

This function is in void C_HL2MP_Player::ClientThink( void ) so it happens a
lot.
Just checking if the player is requesting a client model change.
    if ( Q_strcmp( m_cMyCurrentModel, m_szClientModel ) != 0 )
    {
        // Precache Model.
        model_t    *m_pPlayerModel = (model_t *) engine->LoadModel(
m_szClientModel );

        if ( m_pPlayerModel == NULL )
        {
            // If NULL then change to a static model which comes with the
mod.
            m_pPlayerModel = (model_t *) engine->LoadModel(
"models/Player/Male_01.mdl" );
        }

        // Clear out and renew.
        DestroyModelInstance();

        SetModelPointer( m_pPlayerModel );
        // Copy for model change check.
        Q_strcpy( m_cMyCurrentModel, m_szClientModel );
    }

This is called on new model atm, creates a new model instance for decals and
such as it should.
CStudioHdr *C_HL2MP_Player::OnNewModel( void )
{
    CStudioHdr *hdr = BaseClass::OnNewModel();

    Initialize( );
    CreateModelInstance();

    return hdr;
}

Anything else you need to know please ask.

Thanks all :)
--

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to