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.
103 lines
2.5 KiB
103 lines
2.5 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
|
||
|
#include "cbase.h"
|
||
|
#include "rotorwash.h"
|
||
|
|
||
|
// memdbgon must be the last include file in a .cpp file!!!
|
||
|
#include "tier0/memdbgon.h"
|
||
|
|
||
|
// ==============================================
|
||
|
// Rotorwash entity
|
||
|
// ==============================================
|
||
|
|
||
|
class CRotorWashEmitter : public CBaseEntity
|
||
|
{
|
||
|
public:
|
||
|
DECLARE_CLASS( CRotorWashEmitter, CBaseEntity );
|
||
|
DECLARE_SERVERCLASS();
|
||
|
DECLARE_DATADESC();
|
||
|
|
||
|
void SetAltitude( float flAltitude ) { m_flAltitude = flAltitude; }
|
||
|
void SetEmit( bool state ) { m_bEmit = state; }
|
||
|
void Spawn ( void );
|
||
|
void Precache( void );
|
||
|
int ShouldTransmit( const CCheckTransmitInfo *pInfo );
|
||
|
int UpdateTransmitState( void );
|
||
|
|
||
|
protected:
|
||
|
|
||
|
CNetworkVar( bool, m_bEmit );
|
||
|
CNetworkVar( float, m_flAltitude );
|
||
|
};
|
||
|
|
||
|
IMPLEMENT_SERVERCLASS_ST( CRotorWashEmitter, DT_RotorWashEmitter )
|
||
|
SendPropFloat(SENDINFO(m_flAltitude), -1, SPROP_NOSCALE ),
|
||
|
END_SEND_TABLE()
|
||
|
|
||
|
LINK_ENTITY_TO_CLASS( env_rotorwash_emitter, CRotorWashEmitter );
|
||
|
|
||
|
BEGIN_DATADESC( CRotorWashEmitter )
|
||
|
DEFINE_FIELD( m_bEmit, FIELD_BOOLEAN ),
|
||
|
DEFINE_KEYFIELD( m_flAltitude, FIELD_FLOAT, "altitude" ),
|
||
|
END_DATADESC()
|
||
|
|
||
|
void CRotorWashEmitter::Spawn( void )
|
||
|
{
|
||
|
Precache();
|
||
|
BaseClass::Spawn();
|
||
|
SetEmit( false );
|
||
|
}
|
||
|
|
||
|
void CRotorWashEmitter::Precache( void )
|
||
|
{
|
||
|
PrecacheMaterial( "effects/splashwake3" );
|
||
|
}
|
||
|
|
||
|
int CRotorWashEmitter::ShouldTransmit( const CCheckTransmitInfo *pInfo )
|
||
|
{
|
||
|
if ( GetParent() )
|
||
|
{
|
||
|
return GetParent()->ShouldTransmit( pInfo );
|
||
|
}
|
||
|
|
||
|
return FL_EDICT_PVSCHECK;
|
||
|
}
|
||
|
|
||
|
int CRotorWashEmitter::UpdateTransmitState( void )
|
||
|
{
|
||
|
if ( GetParent() )
|
||
|
{
|
||
|
return SetTransmitState( FL_EDICT_FULLCHECK );
|
||
|
}
|
||
|
|
||
|
return SetTransmitState( FL_EDICT_PVSCHECK );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
// Input : &localOrigin -
|
||
|
// &localAngles -
|
||
|
// *pOwner -
|
||
|
// flAltitude -
|
||
|
// Output : CBaseEntity
|
||
|
//-----------------------------------------------------------------------------
|
||
|
CBaseEntity *CreateRotorWashEmitter( const Vector &localOrigin, const QAngle &localAngles, CBaseEntity *pOwner, float flAltitude )
|
||
|
{
|
||
|
CRotorWashEmitter *pEmitter = (CRotorWashEmitter *) CreateEntityByName( "env_rotorwash_emitter" );
|
||
|
|
||
|
if ( pEmitter == NULL )
|
||
|
return NULL;
|
||
|
|
||
|
pEmitter->SetAbsOrigin( localOrigin );
|
||
|
pEmitter->SetAbsAngles( localAngles );
|
||
|
pEmitter->FollowEntity( pOwner );
|
||
|
|
||
|
pEmitter->SetAltitude( flAltitude );
|
||
|
pEmitter->SetEmit( false );
|
||
|
|
||
|
return pEmitter;
|
||
|
}
|