diff options
Diffstat (limited to 'mp/src/game/client/particle_collision.h')
| -rw-r--r-- | mp/src/game/client/particle_collision.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/mp/src/game/client/particle_collision.h b/mp/src/game/client/particle_collision.h new file mode 100644 index 00000000..f8eb6de2 --- /dev/null +++ b/mp/src/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 |