diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/func_lod.cpp | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/server/func_lod.cpp')
| -rw-r--r-- | mp/src/game/server/func_lod.cpp | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/mp/src/game/server/func_lod.cpp b/mp/src/game/server/func_lod.cpp new file mode 100644 index 00000000..a6dbf18b --- /dev/null +++ b/mp/src/game/server/func_lod.cpp @@ -0,0 +1,115 @@ +//========= 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;
+}
+
|