Team Fortress 2 Source Code as on 22/4/2020
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.

112 lines
2.2 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================//
  7. #ifndef C_FUNC_DUST_H
  8. #define C_FUNC_DUST_H
  9. #ifdef _WIN32
  10. #pragma once
  11. #endif
  12. #include "c_baseentity.h"
  13. #include "particles_simple.h"
  14. #include "particle_util.h"
  15. #include "bspflags.h"
  16. // ------------------------------------------------------------------------------------ //
  17. // CDustEffect particle renderer.
  18. // ------------------------------------------------------------------------------------ //
  19. class C_Func_Dust;
  20. class CFuncDustParticle : public Particle
  21. {
  22. public:
  23. Vector m_vVelocity;
  24. float m_flLifetime;
  25. float m_flDieTime;
  26. float m_flSize;
  27. color32 m_Color;
  28. };
  29. class CDustEffect : public CParticleEffect
  30. {
  31. public:
  32. CDustEffect( const char *pDebugName ) : CParticleEffect( pDebugName ) {}
  33. virtual void RenderParticles( CParticleRenderIterator *pIterator );
  34. virtual void SimulateParticles( CParticleSimulateIterator *pIterator );
  35. C_Func_Dust *m_pDust;
  36. private:
  37. CDustEffect( const CDustEffect & ); // not defined, not accessible
  38. };
  39. // ------------------------------------------------------------------------------------ //
  40. // C_Func_Dust class.
  41. // ------------------------------------------------------------------------------------ //
  42. class C_Func_Dust : public C_BaseEntity
  43. {
  44. public:
  45. DECLARE_CLASS( C_Func_Dust, C_BaseEntity );
  46. DECLARE_CLIENTCLASS();
  47. C_Func_Dust();
  48. virtual ~C_Func_Dust();
  49. virtual void OnDataChanged( DataUpdateType_t updateType );
  50. virtual void ClientThink();
  51. virtual bool ShouldDraw();
  52. private:
  53. void AttemptSpawnNewParticle();
  54. // Vars from server.
  55. public:
  56. color32 m_Color;
  57. int m_SpawnRate;
  58. float m_flSizeMin;
  59. float m_flSizeMax;
  60. int m_SpeedMax;
  61. int m_LifetimeMin;
  62. int m_LifetimeMax;
  63. int m_DistMax;
  64. float m_FallSpeed; // extra 'gravity'
  65. public:
  66. int m_DustFlags; // Combination of DUSTFLAGS_
  67. public:
  68. CDustEffect m_Effect;
  69. PMaterialHandle m_hMaterial;
  70. TimedEvent m_Spawner;
  71. private:
  72. C_Func_Dust( const C_Func_Dust & ); // not defined, not accessible
  73. };
  74. #endif // C_FUNC_DUST_H