//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef ENV_OBJECTEFFECTS_H #define ENV_OBJECTEFFECTS_H #ifdef _WIN32 #pragma once #endif //----------------------------------------------------------------------------- // Purpose: Object smoke particles. They float upward. //----------------------------------------------------------------------------- class ObjectSmokeParticle : public SimpleParticle { public: Vector m_vecAcceleration; }; //----------------------------------------------------------------------------- // Purpose: Object smoke particle emitter. //----------------------------------------------------------------------------- class CObjectSmokeParticles : public CSimpleEmitter { public: CObjectSmokeParticles( const char *pDebugName ) : CSimpleEmitter( pDebugName ) {} static CSmartPtr Create( const char *pDebugName ) {return new CObjectSmokeParticles( pDebugName );} virtual void SimulateParticles( CParticleSimulateIterator *pIterator ); virtual void RenderParticles( CParticleRenderIterator *pIterator ); //Setup for point emission virtual void Setup( const Vector &origin, const Vector *direction, float angularSpread, float minSpeed, float maxSpeed, float gravity, float dampen, int flags = 0 ); CParticleCollision m_ParticleCollision; private: CObjectSmokeParticles( const CObjectSmokeParticles & ); // not defined, not accessible }; //----------------------------------------------------------------------------- // Purpose: Object fire particles. They know how to attach themselves to heirarchy. //----------------------------------------------------------------------------- class ObjectFireParticle : public SimpleParticle { public: EHANDLE m_hParent; int m_iAttachmentPoint; }; //----------------------------------------------------------------------------- // Purpose: Object smoke particle emitter. //----------------------------------------------------------------------------- class CObjectFireParticles : public CSimpleEmitter { public: CObjectFireParticles( const char *pDebugName ) : CSimpleEmitter( pDebugName ) {} static CSmartPtr Create( const char *pDebugName ) {return new CObjectFireParticles( pDebugName );} virtual void SimulateParticles( CParticleSimulateIterator *pIterator ); virtual void RenderParticles( CParticleRenderIterator *pIterator ); //Setup for point emission virtual void Setup( const Vector &origin, const Vector *direction, float angularSpread, float minSpeed, float maxSpeed, float gravity, float dampen, int flags = 0 ); private: CObjectFireParticles( const CObjectFireParticles & ); // not defined, not accessible }; #endif // ENV_OBJECTEFFECTS_H