summaryrefslogtreecommitdiff
path: root/game/server/func_smokevolume.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/server/func_smokevolume.cpp
downloadarchived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz
archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip
Diffstat (limited to 'game/server/func_smokevolume.cpp')
-rw-r--r--game/server/func_smokevolume.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/game/server/func_smokevolume.cpp b/game/server/func_smokevolume.cpp
new file mode 100644
index 0000000..c1e0e8b
--- /dev/null
+++ b/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 );
+}
+