void CWeaponGravityGun::DetachObject( void ) { m_pelletHeld = -1; m_pelletAttract = -1; m_glueTouching = false; SetObjectPelletsColor( 255, 0, 0 ); m_objectPelletCount = 0; if ( m_hObject ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); Pickup_OnPhysGunDrop( m_hObject, pOwner, DROPPED_BY_CANNON ); m_gravCallback.DetachEntity(); m_hObject = NULL; } }
void CWeaponGravityGun::DetachObject( void ) { if ( m_hObject ) { #ifndef CLIENT_DLL CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); Pickup_OnPhysGunDrop( m_hObject, pOwner, DROPPED_BY_CANNON ); #endif IPhysicsObject *pPhysics = m_hObject->VPhysicsGetObject(); if ( pPhysics ) { PhysClearGameFlags( pPhysics, FVPHYSICS_PLAYER_HELD ); } m_gravCallback.DetachEntity(); m_hObject = NULL; } }
void CWeaponGravityGun::DetachObject( void ) { if ( m_hObject ) { #ifndef CLIENT_DLL CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); Pickup_OnPhysGunDrop( m_hObject, pOwner, DROPPED_BY_CANNON ); #endif IPhysicsObject *pList[VPHYSICS_MAX_OBJECT_LIST_COUNT]; int count = m_hObject->VPhysicsGetObjectList( pList, ARRAYSIZE(pList) ); for ( int i = 0; i < count; i++ ) { PhysClearGameFlags( pList[i], FVPHYSICS_PLAYER_HELD ); } m_gravCallback.DetachEntity(); m_hObject = NULL; m_physicsBone = 0; } }
//----------------------------------------------------------------------------- // 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(); }