initial
This commit is contained in:
87
game/shared/cstrike15/player_pickup.h
Normal file
87
game/shared/cstrike15/player_pickup.h
Normal file
@@ -0,0 +1,87 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: APIs for player pickup of physics objects
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef PLAYER_PICKUP_H
|
||||
#define PLAYER_PICKUP_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
// Reasons behind a pickup
|
||||
enum PhysGunPickup_t
|
||||
{
|
||||
PICKED_UP_BY_CANNON,
|
||||
PUNTED_BY_CANNON,
|
||||
PICKED_UP_BY_PLAYER, // Picked up by +USE, not physgun.
|
||||
};
|
||||
|
||||
// Reasons behind a drop
|
||||
enum PhysGunDrop_t
|
||||
{
|
||||
DROPPED_BY_PLAYER,
|
||||
THROWN_BY_PLAYER,
|
||||
DROPPED_BY_CANNON,
|
||||
LAUNCHED_BY_CANNON,
|
||||
};
|
||||
|
||||
enum PhysGunForce_t
|
||||
{
|
||||
PHYSGUN_FORCE_DROPPED, // Dropped by +USE
|
||||
PHYSGUN_FORCE_THROWN, // Thrown from +USE
|
||||
PHYSGUN_FORCE_PUNTED, // Punted by cannon
|
||||
PHYSGUN_FORCE_LAUNCHED, // Launched by cannon
|
||||
};
|
||||
|
||||
void PlayerPickupObject( CBasePlayer *pPlayer, CBaseEntity *pObject );
|
||||
void Pickup_ForcePlayerToDropThisObject( CBaseEntity *pTarget );
|
||||
|
||||
void Pickup_OnPhysGunDrop( CBaseEntity *pDroppedObject, CBasePlayer *pPlayer, PhysGunDrop_t reason );
|
||||
void Pickup_OnPhysGunPickup( CBaseEntity *pPickedUpObject, CBasePlayer *pPlayer, PhysGunPickup_t reason = PICKED_UP_BY_CANNON );
|
||||
bool Pickup_OnAttemptPhysGunPickup( CBaseEntity *pPickedUpObject, CBasePlayer *pPlayer, PhysGunPickup_t reason = PICKED_UP_BY_CANNON );
|
||||
bool Pickup_GetPreferredCarryAngles( CBaseEntity *pObject, CBasePlayer *pPlayer, matrix3x4_t &localToWorld, QAngle &outputAnglesWorldSpace );
|
||||
bool Pickup_ForcePhysGunOpen( CBaseEntity *pObject, CBasePlayer *pPlayer );
|
||||
bool Pickup_ShouldPuntUseLaunchForces( CBaseEntity *pObject, PhysGunForce_t reason );
|
||||
AngularImpulse Pickup_PhysGunLaunchAngularImpulse( CBaseEntity *pObject, PhysGunForce_t reason );
|
||||
Vector Pickup_DefaultPhysGunLaunchVelocity( const Vector &vecForward, float flMass );
|
||||
Vector Pickup_PhysGunLaunchVelocity( CBaseEntity *pObject, const Vector &vecForward, PhysGunForce_t reason );
|
||||
|
||||
CBaseEntity *Pickup_OnFailedPhysGunPickup( CBaseEntity *pPickedUpObject, Vector vPhysgunPos );
|
||||
|
||||
abstract_class IPlayerPickupVPhysics
|
||||
{
|
||||
public:
|
||||
// Callbacks for the physgun/cannon picking up an entity
|
||||
virtual bool OnAttemptPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason = PICKED_UP_BY_CANNON ) = 0;
|
||||
virtual CBaseEntity *OnFailedPhysGunPickup( Vector vPhysgunPos ) = 0;
|
||||
virtual void OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason = PICKED_UP_BY_CANNON ) = 0;
|
||||
virtual void OnPhysGunDrop( CBasePlayer *pPhysGunUser, PhysGunDrop_t Reason ) = 0;
|
||||
virtual bool HasPreferredCarryAnglesForPlayer( CBasePlayer *pPlayer = NULL ) = 0;
|
||||
virtual QAngle PreferredCarryAngles( void ) = 0;
|
||||
virtual bool ForcePhysgunOpen( CBasePlayer *pPlayer ) = 0;
|
||||
virtual AngularImpulse PhysGunLaunchAngularImpulse() = 0;
|
||||
virtual bool ShouldPuntUseLaunchForces( PhysGunForce_t reason ) = 0;
|
||||
virtual Vector PhysGunLaunchVelocity( const Vector &vecForward, float flMass ) = 0;
|
||||
};
|
||||
|
||||
class CDefaultPlayerPickupVPhysics : public IPlayerPickupVPhysics
|
||||
{
|
||||
public:
|
||||
virtual bool OnAttemptPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason = PICKED_UP_BY_CANNON ) { return true; }
|
||||
virtual CBaseEntity *OnFailedPhysGunPickup( Vector vPhysgunPos ) { return NULL; }
|
||||
virtual void OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason = PICKED_UP_BY_CANNON ) {}
|
||||
virtual void OnPhysGunDrop( CBasePlayer *pPhysGunUser, PhysGunDrop_t reason ) {}
|
||||
virtual bool HasPreferredCarryAnglesForPlayer( CBasePlayer *pPlayer ) { return false; }
|
||||
virtual QAngle PreferredCarryAngles( void ) { return vec3_angle; }
|
||||
virtual bool ForcePhysgunOpen( CBasePlayer *pPlayer ) { return false; }
|
||||
virtual AngularImpulse PhysGunLaunchAngularImpulse() { return RandomAngularImpulse( -600, 600 ); }
|
||||
virtual bool ShouldPuntUseLaunchForces( PhysGunForce_t reason ) { return false; }
|
||||
virtual Vector PhysGunLaunchVelocity( const Vector &vecForward, float flMass )
|
||||
{
|
||||
return Pickup_DefaultPhysGunLaunchVelocity( vecForward, flMass );
|
||||
}
|
||||
};
|
||||
|
||||
#endif // PLAYER_PICKUP_H
|
||||
Reference in New Issue
Block a user