1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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;
}
|