//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Defines the server side of a steam jet particle system entity. // // $NoKeywords: $ //=============================================================================// #ifndef SMOKESTACK_H #define SMOKESTACK_H #pragma once #include "baseparticleentity.h" //================================================== // CSmokeStack //================================================== class CSmokeStackLightInfo { public: DECLARE_CLASS_NOBASE( CSmokeStackLightInfo ); DECLARE_SIMPLE_DATADESC(); DECLARE_NETWORKVAR_CHAIN(); CNetworkVector( m_vPos ); CNetworkVector( m_vColor ); CNetworkVar( float, m_flIntensity ); }; class CSmokeStack : public CBaseParticleEntity { public: DECLARE_CLASS( CSmokeStack, CBaseParticleEntity ); DECLARE_DATADESC(); DECLARE_SERVERCLASS(); CSmokeStack(); ~CSmokeStack(); virtual void Spawn( void ); virtual void Activate(); virtual bool KeyValue( const char *szKeyName, const char *szValue ); virtual void Precache(); protected: // Input handlers. void InputTurnOn(inputdata_t &data); void InputTurnOff(inputdata_t &data); void InputToggle(inputdata_t &data); void RecalcWindVector(); // Stuff from the datatable. public: CNetworkVar( float, m_SpreadSpeed ); CNetworkVar( float, m_Speed ); CNetworkVar( float, m_StartSize ); CNetworkVar( float, m_EndSize ); CNetworkVar( float, m_Rate ); CNetworkVar( float, m_JetLength ); // Length of the jet. Lifetime is derived from this. CNetworkVar( float, m_flRollSpeed ); CNetworkVar( int, m_bEmit ); // Emit particles? CNetworkVar( float, m_flBaseSpread ); CSmokeStackLightInfo m_AmbientLight; CSmokeStackLightInfo m_DirLight; CNetworkVar( float, m_flTwist ); string_t m_strMaterialModel; CNetworkVar( int, m_iMaterialModel ); int m_WindAngle; int m_WindSpeed; CNetworkVector( m_vWind ); // m_vWind is just calculated from m_WindAngle and m_WindSpeed. bool m_InitialState; }; #endif // SMOKESTACK_H