aboutsummaryrefslogtreecommitdiff
path: root/sp/src/game/client/particles_simple.h
diff options
context:
space:
mode:
authorJørgen P. Tjernø <[email protected]>2013-12-02 19:31:46 -0800
committerJørgen P. Tjernø <[email protected]>2013-12-02 19:46:31 -0800
commitf56bb35301836e56582a575a75864392a0177875 (patch)
treede61ddd39de3e7df52759711950b4c288592f0dc /sp/src/game/client/particles_simple.h
parentMark some more files as text. (diff)
downloadsource-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz
source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/game/client/particles_simple.h')
-rw-r--r--sp/src/game/client/particles_simple.h510
1 files changed, 255 insertions, 255 deletions
diff --git a/sp/src/game/client/particles_simple.h b/sp/src/game/client/particles_simple.h
index 3227cd0b..4b30f110 100644
--- a/sp/src/game/client/particles_simple.h
+++ b/sp/src/game/client/particles_simple.h
@@ -1,255 +1,255 @@
-//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//===========================================================================//
-
-#ifndef PARTICLES_SIMPLE_H
-#define PARTICLES_SIMPLE_H
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "particlemgr.h"
-#include "particlesphererenderer.h"
-#include "smartptr.h"
-
-
-// ------------------------------------------------------------------------------------------------ //
-// CParticleEffect is the base class that you can derive from to make a particle effect.
-// These can be used two ways:
-//
-// 1. Allocate a CParticleEffect-based object using the class's static Create() function. This gives
-// you back a smart pointer that handles the reference counting for you.
-//
-// 2. Contain a CParticleEffect object in your class.
-// ------------------------------------------------------------------------------------------------ //
-
-class CParticleEffect : public IParticleEffect
-{
-public:
- DECLARE_CLASS_NOBASE( CParticleEffect );
-
- friend class CRefCountAccessor;
-
- // Call this before adding a bunch of particles to give it a rough estimate of where
- // your particles are for sorting amongst other translucent entities.
- void SetSortOrigin( const Vector &vSortOrigin );
-
- PMaterialHandle GetPMaterial(const char *name);
-
- Particle* AddParticle( unsigned int particleSize, PMaterialHandle material, const Vector &origin );
-
- CParticleEffectBinding& GetBinding() { return m_ParticleEffect; }
-
- const char *GetEffectName();
-
- void AddFlags( int iFlags ) { m_Flags |= iFlags; }
- void RemoveFlags( int iFlags ) { m_Flags &= ~iFlags; }
-
- void SetDontRemove( bool bSet )
- {
- if( bSet )
- AddFlags( FLAG_DONT_REMOVE );
- else
- RemoveFlags( FLAG_DONT_REMOVE );
- }
-
-// IParticleEffect overrides
-public:
-
- virtual void SetParticleCullRadius( float radius );
- virtual void NotifyRemove( void );
- virtual const Vector & GetSortOrigin();
- virtual void NotifyDestroyParticle( Particle* pParticle );
- virtual void Update( float flTimeDelta );
-
- // All Create() functions should call this so the effect deletes itself
- // when it is removed from the particle manager.
- void SetDynamicallyAllocated( bool bDynamic=true );
-
- virtual bool ShouldSimulate() const { return m_bSimulate; }
- virtual void SetShouldSimulate( bool bSim ) { m_bSimulate = bSim; }
-
- int AllocateToolParticleEffectId();
- int GetToolParticleEffectId() const;
-protected:
- CParticleEffect( const char *pDebugName );
- virtual ~CParticleEffect();
-
- // Returns nonzero if Release() has been called.
- int IsReleased();
-
- enum
- {
- FLAG_ALLOCATED = (1<<1), // Most of the CParticleEffects are dynamically allocated but
- // some are member variables of a class. If they're member variables.
- FLAG_DONT_REMOVE = (1<<2),
- };
-
- // Used to track down bugs.
- char const *m_pDebugName;
-
- CParticleEffectBinding m_ParticleEffect;
- Vector m_vSortOrigin;
-
- int m_Flags; // Combination of CParticleEffect::FLAG_
-
- bool m_bSimulate;
- int m_nToolParticleEffectId;
-
-private:
- // Update the reference count.
- void AddRef();
- void Release();
-
- int m_RefCount; // When this goes to zero and the effect has no more active
- // particles, (and it's dynamically allocated), it will delete itself.
-
- CParticleEffect( const CParticleEffect & ); // not defined, not accessible
-};
-
-inline int CParticleEffect::GetToolParticleEffectId() const
-{
- return m_nToolParticleEffectId;
-}
-
-inline int CParticleEffect::AllocateToolParticleEffectId()
-{
- m_nToolParticleEffectId = ParticleMgr()->AllocateToolParticleEffectId();
- return m_nToolParticleEffectId;
-}
-
-
-//-----------------------------------------------------------------------------
-// Particle flags
-//-----------------------------------------------------------------------------
-enum SimpleParticleFlag_t
-{
- SIMPLE_PARTICLE_FLAG_WINDBLOWN = 0x1,
- SIMPLE_PARTICLE_FLAG_NO_VEL_DECAY = 0x2 // Used by the blood spray emitter. By default, it decays the
- // particle velocity.
-};
-
-class SimpleParticle : public Particle
-{
-public:
- SimpleParticle() : m_iFlags(0) {}
-
- // AddSimpleParticle automatically initializes these fields.
- Vector m_vecVelocity;
- float m_flRoll;
- float m_flDieTime; // How long it lives for.
- float m_flLifetime; // How long it has been alive for so far.
- unsigned char m_uchColor[3];
- unsigned char m_uchStartAlpha;
- unsigned char m_uchEndAlpha;
- unsigned char m_uchStartSize;
- unsigned char m_uchEndSize;
- unsigned char m_iFlags; // See SimpleParticleFlag_t above
- float m_flRollDelta;
-};
-
-
-
-// CSimpleEmitter implements a common way to simulate and render particles.
-//
-// Effects can add particles to the particle manager and point at CSimpleEmitter
-// for the effect so they don't have to implement the simulation code. It simulates
-// velocity, and fades their alpha from invisible to solid and back to invisible over their lifetime.
-//
-// Particles you add using this effect must use the class CParticleSimple::Particle.
-class CSimpleEmitter : public CParticleEffect
-{
-// IParticleEffect overrides.
-public:
-
- DECLARE_CLASS( CSimpleEmitter, CParticleEffect );
-
- static CSmartPtr<CSimpleEmitter> Create( const char *pDebugName );
-
- virtual void SimulateParticles( CParticleSimulateIterator *pIterator );
- virtual void RenderParticles( CParticleRenderIterator *pIterator );
-
- void SetNearClip( float nearClipMin, float nearClipMax );
-
- void SetDrawBeforeViewModel( bool state = true );
-
- SimpleParticle* AddSimpleParticle( PMaterialHandle hMaterial, const Vector &vOrigin, float flDieTime=3, unsigned char uchSize=10 );
-
-// Overridables for variants like CEmberEffect.
-protected:
- CSimpleEmitter( const char *pDebugName = NULL );
- virtual ~CSimpleEmitter();
-
- virtual float UpdateAlpha( const SimpleParticle *pParticle );
- virtual float UpdateScale( const SimpleParticle *pParticle );
- virtual float UpdateRoll( SimpleParticle *pParticle, float timeDelta );
- virtual void UpdateVelocity( SimpleParticle *pParticle, float timeDelta );
- virtual Vector UpdateColor( const SimpleParticle *pParticle );
-
- float m_flNearClipMin;
- float m_flNearClipMax;
-
-private:
- CSimpleEmitter( const CSimpleEmitter & ); // not defined, not accessible
-};
-
-//==================================================
-// EmberEffect
-//==================================================
-
-class CEmberEffect : public CSimpleEmitter
-{
-public:
- CEmberEffect( const char *pDebugName );
- static CSmartPtr<CEmberEffect> Create( const char *pDebugName );
-
- virtual void UpdateVelocity( SimpleParticle *pParticle, float timeDelta );
- virtual Vector UpdateColor( const SimpleParticle *pParticle );
-
-private:
- CEmberEffect( const CEmberEffect & ); // not defined, not accessible
-};
-
-
-//==================================================
-// FireSmokeEffect
-//==================================================
-
-class CFireSmokeEffect : public CSimpleEmitter
-{
-public:
- CFireSmokeEffect( const char *pDebugName );
- static CSmartPtr<CFireSmokeEffect> Create( const char *pDebugName );
-
- virtual void UpdateVelocity( SimpleParticle *pParticle, float timeDelta );
- virtual float UpdateAlpha( const SimpleParticle *pParticle );
-
-protected:
- VPlane m_planeClip;
-
-private:
- CFireSmokeEffect( const CFireSmokeEffect & ); // not defined, not accessible
-};
-
-
-//==================================================
-// CFireParticle
-//==================================================
-
-class CFireParticle : public CSimpleEmitter
-{
-public:
- CFireParticle( const char *pDebugName );
- static CSmartPtr<CFireParticle> Create( const char *pDebugName );
-
- virtual Vector UpdateColor( const SimpleParticle *pParticle );
-
-private:
- CFireParticle( const CFireParticle & ); // not defined, not accessible
-};
-
-
-#endif // PARTICLES_SIMPLE_H
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//===========================================================================//
+
+#ifndef PARTICLES_SIMPLE_H
+#define PARTICLES_SIMPLE_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "particlemgr.h"
+#include "particlesphererenderer.h"
+#include "smartptr.h"
+
+
+// ------------------------------------------------------------------------------------------------ //
+// CParticleEffect is the base class that you can derive from to make a particle effect.
+// These can be used two ways:
+//
+// 1. Allocate a CParticleEffect-based object using the class's static Create() function. This gives
+// you back a smart pointer that handles the reference counting for you.
+//
+// 2. Contain a CParticleEffect object in your class.
+// ------------------------------------------------------------------------------------------------ //
+
+class CParticleEffect : public IParticleEffect
+{
+public:
+ DECLARE_CLASS_NOBASE( CParticleEffect );
+
+ friend class CRefCountAccessor;
+
+ // Call this before adding a bunch of particles to give it a rough estimate of where
+ // your particles are for sorting amongst other translucent entities.
+ void SetSortOrigin( const Vector &vSortOrigin );
+
+ PMaterialHandle GetPMaterial(const char *name);
+
+ Particle* AddParticle( unsigned int particleSize, PMaterialHandle material, const Vector &origin );
+
+ CParticleEffectBinding& GetBinding() { return m_ParticleEffect; }
+
+ const char *GetEffectName();
+
+ void AddFlags( int iFlags ) { m_Flags |= iFlags; }
+ void RemoveFlags( int iFlags ) { m_Flags &= ~iFlags; }
+
+ void SetDontRemove( bool bSet )
+ {
+ if( bSet )
+ AddFlags( FLAG_DONT_REMOVE );
+ else
+ RemoveFlags( FLAG_DONT_REMOVE );
+ }
+
+// IParticleEffect overrides
+public:
+
+ virtual void SetParticleCullRadius( float radius );
+ virtual void NotifyRemove( void );
+ virtual const Vector & GetSortOrigin();
+ virtual void NotifyDestroyParticle( Particle* pParticle );
+ virtual void Update( float flTimeDelta );
+
+ // All Create() functions should call this so the effect deletes itself
+ // when it is removed from the particle manager.
+ void SetDynamicallyAllocated( bool bDynamic=true );
+
+ virtual bool ShouldSimulate() const { return m_bSimulate; }
+ virtual void SetShouldSimulate( bool bSim ) { m_bSimulate = bSim; }
+
+ int AllocateToolParticleEffectId();
+ int GetToolParticleEffectId() const;
+protected:
+ CParticleEffect( const char *pDebugName );
+ virtual ~CParticleEffect();
+
+ // Returns nonzero if Release() has been called.
+ int IsReleased();
+
+ enum
+ {
+ FLAG_ALLOCATED = (1<<1), // Most of the CParticleEffects are dynamically allocated but
+ // some are member variables of a class. If they're member variables.
+ FLAG_DONT_REMOVE = (1<<2),
+ };
+
+ // Used to track down bugs.
+ char const *m_pDebugName;
+
+ CParticleEffectBinding m_ParticleEffect;
+ Vector m_vSortOrigin;
+
+ int m_Flags; // Combination of CParticleEffect::FLAG_
+
+ bool m_bSimulate;
+ int m_nToolParticleEffectId;
+
+private:
+ // Update the reference count.
+ void AddRef();
+ void Release();
+
+ int m_RefCount; // When this goes to zero and the effect has no more active
+ // particles, (and it's dynamically allocated), it will delete itself.
+
+ CParticleEffect( const CParticleEffect & ); // not defined, not accessible
+};
+
+inline int CParticleEffect::GetToolParticleEffectId() const
+{
+ return m_nToolParticleEffectId;
+}
+
+inline int CParticleEffect::AllocateToolParticleEffectId()
+{
+ m_nToolParticleEffectId = ParticleMgr()->AllocateToolParticleEffectId();
+ return m_nToolParticleEffectId;
+}
+
+
+//-----------------------------------------------------------------------------
+// Particle flags
+//-----------------------------------------------------------------------------
+enum SimpleParticleFlag_t
+{
+ SIMPLE_PARTICLE_FLAG_WINDBLOWN = 0x1,
+ SIMPLE_PARTICLE_FLAG_NO_VEL_DECAY = 0x2 // Used by the blood spray emitter. By default, it decays the
+ // particle velocity.
+};
+
+class SimpleParticle : public Particle
+{
+public:
+ SimpleParticle() : m_iFlags(0) {}
+
+ // AddSimpleParticle automatically initializes these fields.
+ Vector m_vecVelocity;
+ float m_flRoll;
+ float m_flDieTime; // How long it lives for.
+ float m_flLifetime; // How long it has been alive for so far.
+ unsigned char m_uchColor[3];
+ unsigned char m_uchStartAlpha;
+ unsigned char m_uchEndAlpha;
+ unsigned char m_uchStartSize;
+ unsigned char m_uchEndSize;
+ unsigned char m_iFlags; // See SimpleParticleFlag_t above
+ float m_flRollDelta;
+};
+
+
+
+// CSimpleEmitter implements a common way to simulate and render particles.
+//
+// Effects can add particles to the particle manager and point at CSimpleEmitter
+// for the effect so they don't have to implement the simulation code. It simulates
+// velocity, and fades their alpha from invisible to solid and back to invisible over their lifetime.
+//
+// Particles you add using this effect must use the class CParticleSimple::Particle.
+class CSimpleEmitter : public CParticleEffect
+{
+// IParticleEffect overrides.
+public:
+
+ DECLARE_CLASS( CSimpleEmitter, CParticleEffect );
+
+ static CSmartPtr<CSimpleEmitter> Create( const char *pDebugName );
+
+ virtual void SimulateParticles( CParticleSimulateIterator *pIterator );
+ virtual void RenderParticles( CParticleRenderIterator *pIterator );
+
+ void SetNearClip( float nearClipMin, float nearClipMax );
+
+ void SetDrawBeforeViewModel( bool state = true );
+
+ SimpleParticle* AddSimpleParticle( PMaterialHandle hMaterial, const Vector &vOrigin, float flDieTime=3, unsigned char uchSize=10 );
+
+// Overridables for variants like CEmberEffect.
+protected:
+ CSimpleEmitter( const char *pDebugName = NULL );
+ virtual ~CSimpleEmitter();
+
+ virtual float UpdateAlpha( const SimpleParticle *pParticle );
+ virtual float UpdateScale( const SimpleParticle *pParticle );
+ virtual float UpdateRoll( SimpleParticle *pParticle, float timeDelta );
+ virtual void UpdateVelocity( SimpleParticle *pParticle, float timeDelta );
+ virtual Vector UpdateColor( const SimpleParticle *pParticle );
+
+ float m_flNearClipMin;
+ float m_flNearClipMax;
+
+private:
+ CSimpleEmitter( const CSimpleEmitter & ); // not defined, not accessible
+};
+
+//==================================================
+// EmberEffect
+//==================================================
+
+class CEmberEffect : public CSimpleEmitter
+{
+public:
+ CEmberEffect( const char *pDebugName );
+ static CSmartPtr<CEmberEffect> Create( const char *pDebugName );
+
+ virtual void UpdateVelocity( SimpleParticle *pParticle, float timeDelta );
+ virtual Vector UpdateColor( const SimpleParticle *pParticle );
+
+private:
+ CEmberEffect( const CEmberEffect & ); // not defined, not accessible
+};
+
+
+//==================================================
+// FireSmokeEffect
+//==================================================
+
+class CFireSmokeEffect : public CSimpleEmitter
+{
+public:
+ CFireSmokeEffect( const char *pDebugName );
+ static CSmartPtr<CFireSmokeEffect> Create( const char *pDebugName );
+
+ virtual void UpdateVelocity( SimpleParticle *pParticle, float timeDelta );
+ virtual float UpdateAlpha( const SimpleParticle *pParticle );
+
+protected:
+ VPlane m_planeClip;
+
+private:
+ CFireSmokeEffect( const CFireSmokeEffect & ); // not defined, not accessible
+};
+
+
+//==================================================
+// CFireParticle
+//==================================================
+
+class CFireParticle : public CSimpleEmitter
+{
+public:
+ CFireParticle( const char *pDebugName );
+ static CSmartPtr<CFireParticle> Create( const char *pDebugName );
+
+ virtual Vector UpdateColor( const SimpleParticle *pParticle );
+
+private:
+ CFireParticle( const CFireParticle & ); // not defined, not accessible
+};
+
+
+#endif // PARTICLES_SIMPLE_H