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.

76 lines
1.9 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $Workfile: $
  6. // $Date: $
  7. //
  8. //-----------------------------------------------------------------------------
  9. // $Log: $
  10. //
  11. // $NoKeywords: $
  12. //=============================================================================//
  13. #if !defined( PARTICLE_COLLISION_H )
  14. #define PARTICLE_COLLISION_H
  15. #ifdef _WIN32
  16. #pragma once
  17. #endif
  18. #include "particles_simple.h"
  19. #include "particlemgr.h"
  20. #define MAX_COLLISION_PLANES 6
  21. //
  22. // CBaseSimpleCollision
  23. //
  24. class CBaseSimpleCollision
  25. {
  26. public:
  27. CBaseSimpleCollision( void );
  28. static CBaseSimpleCollision *Create( void ) { return new CBaseSimpleCollision; }
  29. virtual void Setup( const Vector &origin, float speed, float gravity );
  30. virtual void TraceLine( const Vector &start, const Vector &end, trace_t *pTrace, bool coarse = true );
  31. void ClearActivePlanes( void );
  32. protected:
  33. virtual void TestForPlane( const Vector &start, const Vector &dir, float speed, float gravity );
  34. virtual void ConsiderPlane( cplane_t *plane );
  35. VPlane m_collisionPlanes[MAX_COLLISION_PLANES];
  36. int m_nActivePlanes;
  37. };
  38. //
  39. // CParticleCollision
  40. //
  41. class CParticleCollision : public CBaseSimpleCollision
  42. {
  43. public:
  44. CParticleCollision( void );
  45. static CParticleCollision *Create( void ) { return new CParticleCollision; }
  46. virtual void Setup( const Vector &origin, const Vector *dir, float angularSpread, float minSpeed, float maxSpeed, float gravity, float dampen );
  47. virtual bool MoveParticle( Vector &origin, Vector &velocity, float *rollDelta, float timeDelta, trace_t *pTrace );
  48. void SetGravity( float gravity ) { m_flGravity = gravity; }
  49. void SetCollisionDampen( float dampen ) { m_flCollisionDampen = dampen; }
  50. void SetAngularCollisionDampen( float dampen ) { m_flAngularCollisionDampen = dampen;}
  51. protected:
  52. float m_flGravity;
  53. float m_flCollisionDampen;
  54. float m_flAngularCollisionDampen;
  55. };
  56. #endif //PARTICLE_COLLISION_H