diff options
Diffstat (limited to 'game/client/particle_collision.h')
| -rw-r--r-- | game/client/particle_collision.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/game/client/particle_collision.h b/game/client/particle_collision.h new file mode 100644 index 0000000..159a7a3 --- /dev/null +++ b/game/client/particle_collision.h @@ -0,0 +1,77 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $Workfile: $ +// $Date: $ +// +//----------------------------------------------------------------------------- +// $Log: $ +// +// $NoKeywords: $ +//=============================================================================// + +#if !defined( PARTICLE_COLLISION_H ) +#define PARTICLE_COLLISION_H +#ifdef _WIN32 +#pragma once +#endif + +#include "particles_simple.h" +#include "particlemgr.h" + +#define MAX_COLLISION_PLANES 6 + +// +// CBaseSimpleCollision +// + +class CBaseSimpleCollision +{ +public: + + CBaseSimpleCollision( void ); + + static CBaseSimpleCollision *Create( void ) { return new CBaseSimpleCollision; } + + virtual void Setup( const Vector &origin, float speed, float gravity ); + virtual void TraceLine( const Vector &start, const Vector &end, trace_t *pTrace, bool coarse = true ); + + void ClearActivePlanes( void ); + +protected: + + virtual void TestForPlane( const Vector &start, const Vector &dir, float speed, float gravity ); + virtual void ConsiderPlane( cplane_t *plane ); + + VPlane m_collisionPlanes[MAX_COLLISION_PLANES]; + int m_nActivePlanes; +}; + +// +// CParticleCollision +// + +class CParticleCollision : public CBaseSimpleCollision +{ +public: + + CParticleCollision( void ); + + static CParticleCollision *Create( void ) { return new CParticleCollision; } + + virtual void Setup( const Vector &origin, const Vector *dir, float angularSpread, float minSpeed, float maxSpeed, float gravity, float dampen ); + virtual bool MoveParticle( Vector &origin, Vector &velocity, float *rollDelta, float timeDelta, trace_t *pTrace ); + + void SetGravity( float gravity ) { m_flGravity = gravity; } + void SetCollisionDampen( float dampen ) { m_flCollisionDampen = dampen; } + void SetAngularCollisionDampen( float dampen ) { m_flAngularCollisionDampen = dampen;} + +protected: + + float m_flGravity; + float m_flCollisionDampen; + float m_flAngularCollisionDampen; +}; + +#endif //PARTICLE_COLLISION_H
\ No newline at end of file |