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
//========= 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; |
|
} |