float PlayerPickupGetHeldObjectMass( CBaseEntity *pPickupControllerEntity, IPhysicsObject *pHeldObject ) { float mass = 0.0f; CPlayerPickupController *pController = dynamic_cast<CPlayerPickupController *>(pPickupControllerEntity); if ( pController ) { CGrabController &grab = pController->GetGrabController(); mass = grab.GetSavedMass( pHeldObject ); } return mass; }
CBaseEntity *GetPlayerHeldEntity( CBasePlayer *pPlayer ) { CBaseEntity *pObject = NULL; CPlayerPickupController *pPlayerPickupController = (CPlayerPickupController *)(pPlayer->GetUseEntity()); if ( pPlayerPickupController ) { pObject = pPlayerPickupController->GetGrabController().GetAttached(); } return pObject; }
void PlayerPickupObject( CBasePlayer *pPlayer, CBaseEntity *pObject ) { //Don't pick up if we don't have a phys object. if ( pObject->VPhysicsGetObject() == NULL ) return; CPlayerPickupController *pController = (CPlayerPickupController *)CBaseEntity::Create( "player_pickup", pObject->GetAbsOrigin(), vec3_angle, pPlayer ); if ( !pController ) return; pController->Init( pPlayer, pObject ); }
void PlayerPickupObject( CBasePlayer *pPlayer, CBaseEntity *pObject ) { Vector forward; trace_t tr; pPlayer->GetVectors( &forward, NULL, NULL ); CTraceFilterPickup filter( pPlayer ); Ray_t ray; ray.Init( pPlayer->EyePosition(), pPlayer->EyePosition() + forward * 180 ); enginetrace->TraceRay( ray, MASK_SOLID, &filter, &tr ); if ( !tr.DidHit() || tr.m_pEnt != pObject ) return; CPlayerPickupController *pController = (CPlayerPickupController *)CBaseEntity::Create( "player_pickup", pObject->GetAbsOrigin(), vec3_angle, pPlayer ); if ( !pController ) return; pController->Init( pPlayer, pObject ); }
void ShutdownPickupController( CBaseEntity *pPickupControllerEntity ) { CPlayerPickupController *pController = dynamic_cast<CPlayerPickupController *>(pPickupControllerEntity); pController->Shutdown( false ); }
bool PlayerPickupControllerIsHoldingEntity( CBaseEntity *pPickupControllerEntity, CBaseEntity *pHeldEntity ) { CPlayerPickupController *pController = dynamic_cast<CPlayerPickupController *>(pPickupControllerEntity); return pController ? pController->IsHoldingEntity( pHeldEntity ) : false; }