Yo folks,

Is it possible to grab an IPhysicsObject for a bone on the client from a
server-side ragdoll? Or does the physics object simply not exist on the
client?

I have a nice function here that sorta takes care of it, but I'm under the
impression you can't retrieve it simply because it's a server-side ragdoll,
so the physics aren't initialized on the client as well.

The code seems unnecessarily long, I could probably at least remove the
else after physicsbone >= 0, but here it is. physicsbone is obtained from a
trace.

IPhysicsObject *GetPhysObjFromPhysicsBone( CBaseEntity *pEntity, short
physicsbone )
{
CBaseAnimating *pModel = static_cast< CBaseAnimating * >( pEntity );
if ( pModel == NULL )
 {
return pEntity->VPhysicsGetObject();
}
 else
{
IPhysicsObject *pPhysicsObject = NULL;
 //Find the real object we hit.
if( physicsbone >= 0 )
 {
#ifdef CLIENT_DLL
if ( pModel->m_pRagdoll )
{
 CRagdoll *pCRagdoll = dynamic_cast < CRagdoll * > ( pModel->m_pRagdoll );
#else
// Affect the object
 CRagdollProp *pCRagdoll = dynamic_cast<CRagdollProp*>( pEntity );
#endif
if ( pCRagdoll )
 {
ragdoll_t *pRagdollT = pCRagdoll->GetRagdoll();

 if ( physicsbone < pRagdollT->listCount )
{
pPhysicsObject = pRagdollT->list[physicsbone].pObject;
 }
return pPhysicsObject;
}
 else
{
return pEntity->VPhysicsGetObject();
 }
#ifdef CLIENT_DLL
}
else
 {
return pEntity->VPhysicsGetObject();
}
#endif
}
else
{
 return pEntity->VPhysicsGetObject();
}
}
}

Holla,
Andrew
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlcoders

Reply via email to