aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/server/func_smokevolume.cpp
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/func_smokevolume.cpp
downloadsource-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_smokevolume.cpp')
-rw-r--r--mp/src/game/server/func_smokevolume.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/mp/src/game/server/func_smokevolume.cpp b/mp/src/game/server/func_smokevolume.cpp
new file mode 100644
index 00000000..1bc3e2f9
--- /dev/null
+++ b/mp/src/game/server/func_smokevolume.cpp
@@ -0,0 +1,105 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "cbase.h"
+#include "baseparticleentity.h"
+#include "sendproxy.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+class CFuncSmokeVolume : public CBaseParticleEntity
+{
+public:
+ DECLARE_CLASS( CFuncSmokeVolume, CBaseParticleEntity );
+ DECLARE_SERVERCLASS();
+ DECLARE_DATADESC();
+
+ CFuncSmokeVolume();
+ void Spawn();
+ void Activate( void );
+
+ // Set the times it fades out at.
+ void SetDensity( float density );
+
+private:
+ CNetworkVar( color32, m_Color1 );
+ CNetworkVar( color32, m_Color2 );
+ CNetworkString( m_MaterialName, 255 );
+ string_t m_String_tMaterialName;
+ CNetworkVar( float, m_ParticleDrawWidth );
+ CNetworkVar( float, m_ParticleSpacingDistance );
+ CNetworkVar( float, m_DensityRampSpeed );
+ CNetworkVar( float, m_RotationSpeed );
+ CNetworkVar( float, m_MovementSpeed );
+ CNetworkVar( float, m_Density );
+};
+
+BEGIN_DATADESC( CFuncSmokeVolume )
+
+ // Save/restore Keyvalue fields
+ DEFINE_KEYFIELD( m_Color1, FIELD_COLOR32, "Color1" ),
+ DEFINE_KEYFIELD( m_Color2, FIELD_COLOR32, "Color2" ),
+// DEFINE_ARRAY( m_MaterialName, FIELD_STRING, 255 ),
+ DEFINE_KEYFIELD( m_String_tMaterialName, FIELD_STRING, "Material" ),
+ DEFINE_KEYFIELD( m_ParticleDrawWidth, FIELD_FLOAT, "ParticleDrawWidth" ),
+ DEFINE_KEYFIELD( m_ParticleSpacingDistance, FIELD_FLOAT, "ParticleSpacingDistance" ),
+ DEFINE_KEYFIELD( m_DensityRampSpeed, FIELD_FLOAT, "DensityRampSpeed" ),
+ DEFINE_KEYFIELD( m_RotationSpeed, FIELD_FLOAT, "RotationSpeed" ),
+ DEFINE_KEYFIELD( m_MovementSpeed, FIELD_FLOAT, "MovementSpeed" ),
+ DEFINE_KEYFIELD( m_Density, FIELD_FLOAT, "Density" ),
+ // inputs
+ DEFINE_INPUT( m_RotationSpeed, FIELD_FLOAT, "SetRotationSpeed"),
+ DEFINE_INPUT( m_MovementSpeed, FIELD_FLOAT, "SetMovementSpeed"),
+ DEFINE_INPUT( m_Density, FIELD_FLOAT, "SetDensity"),
+
+END_DATADESC()
+
+
+
+
+IMPLEMENT_SERVERCLASS_ST( CFuncSmokeVolume, DT_FuncSmokeVolume )
+ SendPropInt( SENDINFO( m_Color1 ), 32, SPROP_UNSIGNED, SendProxy_Color32ToInt ),
+ SendPropInt( SENDINFO( m_Color2 ), 32, SPROP_UNSIGNED, SendProxy_Color32ToInt ),
+ SendPropString( SENDINFO( m_MaterialName ) ),
+ SendPropFloat( SENDINFO( m_ParticleDrawWidth ), 0, SPROP_NOSCALE ),
+ SendPropFloat( SENDINFO( m_ParticleSpacingDistance ), 0, SPROP_NOSCALE ),
+ SendPropFloat( SENDINFO( m_DensityRampSpeed ), 0, SPROP_NOSCALE ),
+ SendPropFloat( SENDINFO( m_RotationSpeed ), 0, SPROP_NOSCALE ),
+ SendPropFloat( SENDINFO( m_MovementSpeed ), 0, SPROP_NOSCALE ),
+ SendPropFloat( SENDINFO( m_Density ), 0, SPROP_NOSCALE ),
+ SendPropInt( SENDINFO(m_spawnflags), 8, SPROP_UNSIGNED )
+END_SEND_TABLE()
+
+LINK_ENTITY_TO_CLASS( func_smokevolume, CFuncSmokeVolume );
+
+CFuncSmokeVolume::CFuncSmokeVolume()
+{
+ m_Density = 1.0f;
+}
+
+void CFuncSmokeVolume::SetDensity( float density )
+{
+ m_Density = density;
+}
+
+void CFuncSmokeVolume::Spawn()
+{
+ memset( m_MaterialName.GetForModify(), 0, sizeof( m_MaterialName ) );
+
+ // Bind to our bmodel.
+ SetModel( STRING( GetModelName() ) );
+
+ BaseClass::Spawn();
+}
+
+void CFuncSmokeVolume::Activate( void )
+{
+ BaseClass::Activate();
+ Q_strncpy( m_MaterialName.GetForModify(), STRING( m_String_tMaterialName ), 255 );
+}
+