Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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

//========= 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