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.
100 lines
2.5 KiB
100 lines
2.5 KiB
![]()
4 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
// This defines the client-side SmokeTrail entity. It can also be used without
|
||
|
// an entity, in which case you must pass calls to it and set its position each frame.
|
||
|
|
||
|
#ifndef PARTICLE_SMOKETRAIL_H
|
||
|
#define PARTICLE_SMOKETRAIL_H
|
||
|
|
||
|
#include "particlemgr.h"
|
||
|
#include "particle_prototype.h"
|
||
|
#include "particle_util.h"
|
||
|
#include "particles_simple.h"
|
||
|
#include "c_baseentity.h"
|
||
|
#include "baseparticleentity.h"
|
||
|
|
||
|
#include "fx_trail.h"
|
||
|
|
||
|
//
|
||
|
// Smoke Trail
|
||
|
//
|
||
|
|
||
|
class C_GrenadeTrail : public C_BaseParticleEntity, public IPrototypeAppEffect
|
||
|
{
|
||
|
public:
|
||
|
DECLARE_CLASS( C_GrenadeTrail, C_BaseParticleEntity );
|
||
|
DECLARE_CLIENTCLASS();
|
||
|
|
||
|
C_GrenadeTrail();
|
||
|
virtual ~C_GrenadeTrail();
|
||
|
|
||
|
public:
|
||
|
|
||
|
//For attachments
|
||
|
void GetAimEntOrigin( IClientEntity *pAttachedTo, Vector *pAbsOrigin, QAngle *pAbsAngles );
|
||
|
|
||
|
// Enable/disable emission.
|
||
|
void SetEmit(bool bEmit);
|
||
|
|
||
|
// Change the spawn rate.
|
||
|
void SetSpawnRate(float rate);
|
||
|
|
||
|
// C_BaseEntity.
|
||
|
public:
|
||
|
virtual void OnDataChanged(DataUpdateType_t updateType);
|
||
|
|
||
|
// IPrototypeAppEffect.
|
||
|
public:
|
||
|
virtual void Start(CParticleMgr *pParticleMgr, IPrototypeArgAccess *pArgs);
|
||
|
|
||
|
// IParticleEffect.
|
||
|
public:
|
||
|
virtual void Update(float fTimeDelta);
|
||
|
virtual void RenderParticles( CParticleRenderIterator *pIterator );
|
||
|
virtual void SimulateParticles( CParticleSimulateIterator *pIterator );
|
||
|
|
||
|
|
||
|
public:
|
||
|
// Effect parameters. These will assume default values but you can change them.
|
||
|
float m_SpawnRate; // How many particles per second.
|
||
|
|
||
|
Vector m_StartColor; // Fade between these colors.
|
||
|
Vector m_EndColor;
|
||
|
float m_Opacity;
|
||
|
|
||
|
float m_ParticleLifetime; // How long do the particles live?
|
||
|
float m_StopEmitTime; // When do I stop emitting particles? (-1 = never)
|
||
|
|
||
|
float m_MinSpeed; // Speed range.
|
||
|
float m_MaxSpeed;
|
||
|
|
||
|
float m_MinDirectedSpeed; // Directed speed range.
|
||
|
float m_MaxDirectedSpeed;
|
||
|
|
||
|
float m_StartSize; // Size ramp.
|
||
|
float m_EndSize;
|
||
|
|
||
|
float m_SpawnRadius;
|
||
|
|
||
|
Vector m_VelocityOffset; // Emit the particles in a certain direction.
|
||
|
|
||
|
bool m_bEmit; // Keep emitting particles?
|
||
|
|
||
|
int m_nAttachment;
|
||
|
|
||
|
private:
|
||
|
PMaterialHandle m_MaterialHandle[2];
|
||
|
TimedEvent m_ParticleSpawn;
|
||
|
|
||
|
CParticleMgr *m_pParticleMgr;
|
||
|
CSmartPtr<CSimpleEmitter> m_pSmokeEmitter;
|
||
|
|
||
|
C_GrenadeTrail( const C_GrenadeTrail & );
|
||
|
};
|
||
|
|
||
|
#endif //PARTICLE_SMOKETRAIL_H
|