You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.2 KiB
86 lines
2.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
|
|
#include "cbase.h" |
|
#include "hl1_basecombatweapon_shared.h" |
|
#include "effect_dispatch_data.h" |
|
#include "te_effect_dispatch.h" |
|
|
|
|
|
BEGIN_DATADESC( CBaseHL1CombatWeapon ) |
|
DEFINE_THINKFUNC( FallThink ), |
|
END_DATADESC(); |
|
|
|
|
|
void CBaseHL1CombatWeapon::Precache() |
|
{ |
|
BaseClass::Precache(); |
|
|
|
PrecacheScriptSound( "BaseCombatWeapon.WeaponDrop" ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CBaseHL1CombatWeapon::FallInit( void ) |
|
{ |
|
SetModel( GetWorldModel() ); |
|
SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE ); |
|
SetSolid( SOLID_BBOX ); |
|
AddSolidFlags( FSOLID_TRIGGER ); |
|
AddSolidFlags( FSOLID_NOT_SOLID ); |
|
|
|
SetPickupTouch(); |
|
|
|
SetThink( &CBaseHL1CombatWeapon::FallThink ); |
|
|
|
SetNextThink( gpGlobals->curtime + 0.1f ); |
|
|
|
// HACKHACK - On ground isn't always set, so look for ground underneath |
|
trace_t tr; |
|
UTIL_TraceLine( GetAbsOrigin(), GetAbsOrigin() - Vector(0,0,2), MASK_SOLID_BRUSHONLY, this, COLLISION_GROUP_NONE, &tr ); |
|
|
|
if ( tr.fraction < 1.0 ) |
|
{ |
|
SetGroundEntity( tr.m_pEnt ); |
|
} |
|
|
|
SetViewOffset( Vector(0,0,8) ); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Items that have just spawned run this think to catch them when |
|
// they hit the ground. Once we're sure that the object is grounded, |
|
// we change its solid type to trigger and set it in a large box that |
|
// helps the player get it. |
|
//----------------------------------------------------------------------------- |
|
void CBaseHL1CombatWeapon::FallThink ( void ) |
|
{ |
|
SetNextThink( gpGlobals->curtime + 0.1f ); |
|
|
|
if ( GetFlags() & FL_ONGROUND ) |
|
{ |
|
// clatter if we have an owner (i.e., dropped by someone) |
|
// don't clatter if the gun is waiting to respawn (if it's waiting, it is invisible!) |
|
if ( GetOwnerEntity() ) |
|
{ |
|
EmitSound( "BaseCombatWeapon.WeaponDrop" ); |
|
} |
|
|
|
// lie flat |
|
QAngle ang = GetAbsAngles(); |
|
ang.x = 0; |
|
ang.z = 0; |
|
SetAbsAngles( ang ); |
|
|
|
Materialize(); |
|
|
|
SetSize( Vector( -24, -24, 0 ), Vector( 24, 24, 16 ) ); |
|
} |
|
} |
|
|
|
|