From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/game/server/func_smokevolume.cpp | 105 ++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 mp/src/game/server/func_smokevolume.cpp (limited to 'mp/src/game/server/func_smokevolume.cpp') 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 ); +} + -- cgit v1.2.3