diff options
Diffstat (limited to 'game/client/tf/vgui/tf_particlepanel.h')
| -rw-r--r-- | game/client/tf/vgui/tf_particlepanel.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/game/client/tf/vgui/tf_particlepanel.h b/game/client/tf/vgui/tf_particlepanel.h new file mode 100644 index 0000000..9eccae4 --- /dev/null +++ b/game/client/tf/vgui/tf_particlepanel.h @@ -0,0 +1,84 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: A panel that display particle systems +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef TF_PARTICLEPANEL_H +#define TF_PARTICLEPANEL_H +#ifdef _WIN32 +#pragma once +#endif + +#include "tier2/camerautils.h" + +class CTFParticlePanel : public vgui::EditablePanel +{ + DECLARE_CLASS_SIMPLE( CTFParticlePanel, vgui::EditablePanel ); +public: + // constructor, destructor + CTFParticlePanel( vgui::Panel *pParent, const char *pName ); + virtual ~CTFParticlePanel(); + + virtual void OnTick(); + virtual void ApplySettings( KeyValues *inResourceData ); + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); + virtual void OnCommand( const char *command ) OVERRIDE; + + void FireParticleEffect( const char *pszName, int xPos, int yPos, float flScale, bool bLoop, float flEndTime = FLT_MAX ); +private: + + // paint it! + virtual void Paint() OVERRIDE; + +private: + + // Class to contain all of the per-instance particle system data + struct ParticleEffect_t + { + ParticleEffect_t(); + + // Shutdown, startup particle collection + void StartupParticleCollection(); + void ShutdownParticleCollection(); + + // Accessor for control point values + const Vector& GetControlPointValue( int nControlPoint ) const { return m_pControlPointValue[ nControlPoint ]; }; + void SetControlPointValue( int nControlPoint, const Vector &value ) { m_pControlPointValue[ nControlPoint ] = value; } + // Set the particle system to draw + void SetParticleSystem( const char* pszParticleSystemName ); + + bool Update( float flTime ); + void Paint( CMatRenderContextPtr& pRenderContext, int iXOffset, int iYOffset, float flXScale, float flYScale, int screenW, int screenH ); + + Vector m_pControlPointValue[MAX_PARTICLE_CONTROL_POINTS]; + CParticleCollection *m_pParticleSystem; + CUtlString m_ParticleSystemName; + float m_flLastTime; + float m_flScale; + float m_flEndTime; + int m_nXPos; + int m_nYPos; + QAngle m_Angles; + bool m_bStartActivated; // Start the effect immediately? + bool m_bLoop; // Loop the effect? + bool m_bForceStopped; + bool m_bAutoDelete; + bool m_bStarted; + + Panel* m_pParent; + }; + + CUtlVector< ParticleEffect_t* > m_vecParticleEffects; + + // A texture to use for a lightmap + CTextureReference m_pLightmapTexture; + + // The default env_cubemap + CTextureReference m_DefaultEnvCubemap; + + Camera_t m_Camera; +}; + +#endif // TF_PARTICLEPANEL_H |