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.
85 lines
2.4 KiB
85 lines
2.4 KiB
5 years ago
|
//========= 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
|