83 lines
2.1 KiB
C++
83 lines
2.1 KiB
C++
//========= 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
|