diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/server/player_pickup.cpp | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/server/player_pickup.cpp')
| -rw-r--r-- | mp/src/game/server/player_pickup.cpp | 350 |
1 files changed, 175 insertions, 175 deletions
diff --git a/mp/src/game/server/player_pickup.cpp b/mp/src/game/server/player_pickup.cpp index d1d1c230..c0892f1a 100644 --- a/mp/src/game/server/player_pickup.cpp +++ b/mp/src/game/server/player_pickup.cpp @@ -1,175 +1,175 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//
-//=============================================================================//
-#include "cbase.h"
-#include "player_pickup.h"
-
-// memdbgon must be the last include file in a .cpp file!!!
-#include "tier0/memdbgon.h"
-
-// player pickup utility routine
-void Pickup_ForcePlayerToDropThisObject( CBaseEntity *pTarget )
-{
- if ( pTarget == NULL )
- return;
-
- IPhysicsObject *pPhysics = pTarget->VPhysicsGetObject();
-
- if ( pPhysics == NULL )
- return;
-
- if ( pPhysics->GetGameFlags() & FVPHYSICS_PLAYER_HELD )
- {
- CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
- pPlayer->ForceDropOfCarriedPhysObjects( pTarget );
- }
-}
-
-
-void Pickup_OnPhysGunDrop( CBaseEntity *pDroppedObject, CBasePlayer *pPlayer, PhysGunDrop_t Reason )
-{
- IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pDroppedObject);
- if ( pPickup )
- {
- pPickup->OnPhysGunDrop( pPlayer, Reason );
- }
-}
-
-
-void Pickup_OnPhysGunPickup( CBaseEntity *pPickedUpObject, CBasePlayer *pPlayer, PhysGunPickup_t reason )
-{
- IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pPickedUpObject);
- if ( pPickup )
- {
- pPickup->OnPhysGunPickup( pPlayer, reason );
- }
-
- // send phys gun pickup item event, but only in single player
- if ( !g_pGameRules->IsMultiplayer() )
- {
- IGameEvent *event = gameeventmanager->CreateEvent( "physgun_pickup" );
- if ( event )
- {
- event->SetInt( "entindex", pPickedUpObject->entindex() );
- gameeventmanager->FireEvent( event );
- }
- }
-}
-
-bool Pickup_OnAttemptPhysGunPickup( CBaseEntity *pPickedUpObject, CBasePlayer *pPlayer, PhysGunPickup_t reason )
-{
- IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pPickedUpObject);
- if ( pPickup )
- {
- return pPickup->OnAttemptPhysGunPickup( pPlayer, reason );
- }
- return true;
-}
-
-CBaseEntity *Pickup_OnFailedPhysGunPickup( CBaseEntity *pPickedUpObject, Vector vPhysgunPos )
-{
- IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pPickedUpObject);
- if ( pPickup )
- {
- return pPickup->OnFailedPhysGunPickup( vPhysgunPos );
- }
-
- return NULL;
-}
-
-bool Pickup_GetPreferredCarryAngles( CBaseEntity *pObject, CBasePlayer *pPlayer, matrix3x4_t &localToWorld, QAngle &outputAnglesWorldSpace )
-{
- IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject);
- if ( pPickup )
- {
- if ( pPickup->HasPreferredCarryAnglesForPlayer( pPlayer ) )
- {
- outputAnglesWorldSpace = TransformAnglesToWorldSpace( pPickup->PreferredCarryAngles(), localToWorld );
- return true;
- }
- }
- return false;
-}
-
-bool Pickup_ForcePhysGunOpen( CBaseEntity *pObject, CBasePlayer *pPlayer )
-{
- IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject);
- if ( pPickup )
- {
- return pPickup->ForcePhysgunOpen( pPlayer );
- }
- return false;
-}
-
-AngularImpulse Pickup_PhysGunLaunchAngularImpulse( CBaseEntity *pObject, PhysGunForce_t reason )
-{
- IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject);
- if ( pPickup != NULL && pPickup->ShouldPuntUseLaunchForces( reason ) )
- {
- return pPickup->PhysGunLaunchAngularImpulse();
- }
- return RandomAngularImpulse( -600, 600 );
-}
-
-Vector Pickup_DefaultPhysGunLaunchVelocity( const Vector &vecForward, float flMass )
-{
-#ifdef HL2_DLL
- // Calculate the velocity based on physcannon rules
- float flForceMax = physcannon_maxforce.GetFloat();
- float flForce = flForceMax;
-
- float mass = flMass;
- if ( mass > 100 )
- {
- mass = MIN( mass, 1000 );
- float flForceMin = physcannon_minforce.GetFloat();
- flForce = SimpleSplineRemapValClamped( mass, 100, 600, flForceMax, flForceMin );
- }
-
- return ( vecForward * flForce );
-#endif
-
- // Do the simple calculation
- return ( vecForward * flMass );
-}
-
-Vector Pickup_PhysGunLaunchVelocity( CBaseEntity *pObject, const Vector &vecForward, PhysGunForce_t reason )
-{
- // The object must be valid
- if ( pObject == NULL )
- {
- Assert( 0 );
- return vec3_origin;
- }
-
- // Shouldn't ever get here with a non-vphysics object.
- IPhysicsObject *pPhysicsObject = pObject->VPhysicsGetObject();
- if ( pPhysicsObject == NULL )
- {
- Assert( 0 );
- return vec3_origin;
- }
-
- // Call the pickup entity's callback
- IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject);
- if ( pPickup != NULL && pPickup->ShouldPuntUseLaunchForces( reason ) )
- return pPickup->PhysGunLaunchVelocity( vecForward, pPhysicsObject->GetMass() );
-
- // Do our default behavior
- return Pickup_DefaultPhysGunLaunchVelocity( vecForward, pPhysicsObject->GetMass() );
-}
-
-bool Pickup_ShouldPuntUseLaunchForces( CBaseEntity *pObject, PhysGunForce_t reason )
-{
- IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject);
- if ( pPickup )
- {
- return pPickup->ShouldPuntUseLaunchForces( reason );
- }
- return false;
-}
-
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +#include "cbase.h" +#include "player_pickup.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +// player pickup utility routine +void Pickup_ForcePlayerToDropThisObject( CBaseEntity *pTarget ) +{ + if ( pTarget == NULL ) + return; + + IPhysicsObject *pPhysics = pTarget->VPhysicsGetObject(); + + if ( pPhysics == NULL ) + return; + + if ( pPhysics->GetGameFlags() & FVPHYSICS_PLAYER_HELD ) + { + CBasePlayer *pPlayer = UTIL_GetLocalPlayer(); + pPlayer->ForceDropOfCarriedPhysObjects( pTarget ); + } +} + + +void Pickup_OnPhysGunDrop( CBaseEntity *pDroppedObject, CBasePlayer *pPlayer, PhysGunDrop_t Reason ) +{ + IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pDroppedObject); + if ( pPickup ) + { + pPickup->OnPhysGunDrop( pPlayer, Reason ); + } +} + + +void Pickup_OnPhysGunPickup( CBaseEntity *pPickedUpObject, CBasePlayer *pPlayer, PhysGunPickup_t reason ) +{ + IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pPickedUpObject); + if ( pPickup ) + { + pPickup->OnPhysGunPickup( pPlayer, reason ); + } + + // send phys gun pickup item event, but only in single player + if ( !g_pGameRules->IsMultiplayer() ) + { + IGameEvent *event = gameeventmanager->CreateEvent( "physgun_pickup" ); + if ( event ) + { + event->SetInt( "entindex", pPickedUpObject->entindex() ); + gameeventmanager->FireEvent( event ); + } + } +} + +bool Pickup_OnAttemptPhysGunPickup( CBaseEntity *pPickedUpObject, CBasePlayer *pPlayer, PhysGunPickup_t reason ) +{ + IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pPickedUpObject); + if ( pPickup ) + { + return pPickup->OnAttemptPhysGunPickup( pPlayer, reason ); + } + return true; +} + +CBaseEntity *Pickup_OnFailedPhysGunPickup( CBaseEntity *pPickedUpObject, Vector vPhysgunPos ) +{ + IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pPickedUpObject); + if ( pPickup ) + { + return pPickup->OnFailedPhysGunPickup( vPhysgunPos ); + } + + return NULL; +} + +bool Pickup_GetPreferredCarryAngles( CBaseEntity *pObject, CBasePlayer *pPlayer, matrix3x4_t &localToWorld, QAngle &outputAnglesWorldSpace ) +{ + IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject); + if ( pPickup ) + { + if ( pPickup->HasPreferredCarryAnglesForPlayer( pPlayer ) ) + { + outputAnglesWorldSpace = TransformAnglesToWorldSpace( pPickup->PreferredCarryAngles(), localToWorld ); + return true; + } + } + return false; +} + +bool Pickup_ForcePhysGunOpen( CBaseEntity *pObject, CBasePlayer *pPlayer ) +{ + IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject); + if ( pPickup ) + { + return pPickup->ForcePhysgunOpen( pPlayer ); + } + return false; +} + +AngularImpulse Pickup_PhysGunLaunchAngularImpulse( CBaseEntity *pObject, PhysGunForce_t reason ) +{ + IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject); + if ( pPickup != NULL && pPickup->ShouldPuntUseLaunchForces( reason ) ) + { + return pPickup->PhysGunLaunchAngularImpulse(); + } + return RandomAngularImpulse( -600, 600 ); +} + +Vector Pickup_DefaultPhysGunLaunchVelocity( const Vector &vecForward, float flMass ) +{ +#ifdef HL2_DLL + // Calculate the velocity based on physcannon rules + float flForceMax = physcannon_maxforce.GetFloat(); + float flForce = flForceMax; + + float mass = flMass; + if ( mass > 100 ) + { + mass = MIN( mass, 1000 ); + float flForceMin = physcannon_minforce.GetFloat(); + flForce = SimpleSplineRemapValClamped( mass, 100, 600, flForceMax, flForceMin ); + } + + return ( vecForward * flForce ); +#endif + + // Do the simple calculation + return ( vecForward * flMass ); +} + +Vector Pickup_PhysGunLaunchVelocity( CBaseEntity *pObject, const Vector &vecForward, PhysGunForce_t reason ) +{ + // The object must be valid + if ( pObject == NULL ) + { + Assert( 0 ); + return vec3_origin; + } + + // Shouldn't ever get here with a non-vphysics object. + IPhysicsObject *pPhysicsObject = pObject->VPhysicsGetObject(); + if ( pPhysicsObject == NULL ) + { + Assert( 0 ); + return vec3_origin; + } + + // Call the pickup entity's callback + IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject); + if ( pPickup != NULL && pPickup->ShouldPuntUseLaunchForces( reason ) ) + return pPickup->PhysGunLaunchVelocity( vecForward, pPhysicsObject->GetMass() ); + + // Do our default behavior + return Pickup_DefaultPhysGunLaunchVelocity( vecForward, pPhysicsObject->GetMass() ); +} + +bool Pickup_ShouldPuntUseLaunchForces( CBaseEntity *pObject, PhysGunForce_t reason ) +{ + IPlayerPickupVPhysics *pPickup = dynamic_cast<IPlayerPickupVPhysics *>(pObject); + if ( pPickup ) + { + return pPickup->ShouldPuntUseLaunchForces( reason ); + } + return false; +} + |