You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.4 KiB
84 lines
2.4 KiB
//========= 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
|
|
|