void CPlayerPickupController::Shutdown() { m_pPlayer->SetUseEntity( NULL ); m_grabController.DetachEntity(); if ( m_pPlayer->GetActiveWeapon() ) { m_pPlayer->GetActiveWeapon()->Deploy(); } m_pPlayer->m_Local.m_iHideHUD &= ~HIDEHUD_WEAPONS; Remove(); }
//----------------------------------------------------------------------------- // Purpose: // Input : bool - //----------------------------------------------------------------------------- void CPlayerPickupController::Shutdown( bool bThrown ) { CBaseEntity *pObject = m_grabController.GetAttached(); bool bClearVelocity = false; if ( !bThrown && pObject && pObject->VPhysicsGetObject() && pObject->VPhysicsGetObject()->GetContactPoint(NULL,NULL) ) { bClearVelocity = true; } CSDKPlayer *pOwner = (CSDKPlayer *)To_SDKPlayer( m_pPlayer ); pOwner->ClearUsePickup(); m_grabController.DetachEntity( bClearVelocity ); if ( pObject != NULL ) { Pickup_OnPhysGunDrop( pObject, m_pPlayer, bThrown ? THROWN_BY_PLAYER : DROPPED_BY_PLAYER ); } if ( m_pPlayer ) { m_pPlayer->SetUseEntity( NULL ); if ( m_pPlayer->GetActiveWeapon() ) { if ( !m_pPlayer->GetActiveWeapon()->Deploy() ) { // We tried to restore the player's weapon, but we couldn't. // This usually happens when they're holding an empty weapon that doesn't // autoswitch away when out of ammo. Switch to next best weapon. m_pPlayer->SwitchToNextBestWeapon( NULL ); } } m_pPlayer->m_Local.m_iHideHUD &= ~HIDEHUD_WEAPONSELECTION; } Remove(); }