mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
//========= 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;
|
||||
}
|
||||
Reference in New Issue
Block a user