Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= 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 ) ); } }
|