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.
115 lines
2.4 KiB
115 lines
2.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
|
|
#include "cbase.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
class CFunc_LOD : public CBaseEntity |
|
{ |
|
DECLARE_DATADESC(); |
|
DECLARE_CLASS( CFunc_LOD, CBaseEntity ); |
|
public: |
|
DECLARE_SERVERCLASS(); |
|
|
|
CFunc_LOD(); |
|
virtual ~CFunc_LOD(); |
|
|
|
|
|
// When the viewer is between: |
|
// (0 and m_fNonintrusiveDist): the bmodel is forced to be visible |
|
// (m_fNonintrusiveDist and m_fDisappearDist): the bmodel is trying to appear or disappear nonintrusively |
|
// (waits until it's out of the view frustrum or until there's a lot of motion) |
|
// (m_fDisappearDist+): the bmodel is forced to be invisible |
|
CNetworkVar( float, m_fDisappearDist ); |
|
|
|
// CBaseEntity overrides. |
|
public: |
|
|
|
virtual void Spawn(); |
|
bool CreateVPhysics(); |
|
virtual void Activate(); |
|
virtual bool KeyValue( const char *szKeyName, const char *szValue ); |
|
}; |
|
|
|
|
|
IMPLEMENT_SERVERCLASS_ST(CFunc_LOD, DT_Func_LOD) |
|
SendPropFloat(SENDINFO(m_fDisappearDist), 0, SPROP_NOSCALE), |
|
END_SEND_TABLE() |
|
|
|
|
|
LINK_ENTITY_TO_CLASS(func_lod, CFunc_LOD); |
|
|
|
|
|
//--------------------------------------------------------- |
|
// Save/Restore |
|
//--------------------------------------------------------- |
|
BEGIN_DATADESC( CFunc_LOD ) |
|
|
|
DEFINE_FIELD( m_fDisappearDist, FIELD_FLOAT ), |
|
|
|
END_DATADESC() |
|
|
|
|
|
// ------------------------------------------------------------------------------------- // |
|
// CFunc_LOD implementation. |
|
// ------------------------------------------------------------------------------------- // |
|
CFunc_LOD::CFunc_LOD() |
|
{ |
|
} |
|
|
|
|
|
CFunc_LOD::~CFunc_LOD() |
|
{ |
|
} |
|
|
|
|
|
void CFunc_LOD::Spawn() |
|
{ |
|
// Bind to our bmodel. |
|
SetModel( STRING( GetModelName() ) ); |
|
SetSolid( SOLID_BSP ); |
|
BaseClass::Spawn(); |
|
|
|
CreateVPhysics(); |
|
} |
|
|
|
bool CFunc_LOD::CreateVPhysics() |
|
{ |
|
VPhysicsInitStatic(); |
|
return true; |
|
} |
|
|
|
void CFunc_LOD::Activate() |
|
{ |
|
BaseClass::Activate(); |
|
} |
|
|
|
|
|
bool CFunc_LOD::KeyValue( const char *szKeyName, const char *szValue ) |
|
{ |
|
if (FStrEq(szKeyName, "DisappearDist")) |
|
{ |
|
m_fDisappearDist = (float)atof(szValue); |
|
} |
|
else if (FStrEq(szKeyName, "Solid")) |
|
{ |
|
if (atoi(szValue) != 0) |
|
{ |
|
AddSolidFlags( FSOLID_NOT_SOLID ); |
|
} |
|
} |
|
else |
|
{ |
|
return BaseClass::KeyValue(szKeyName, szValue); |
|
} |
|
|
|
return true; |
|
} |
|
|
|
|