mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-29 01:23:04 +00:00
77 lines
1.9 KiB
C
77 lines
1.9 KiB
C
|
//========= 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
|