etqw-sdk/source/game/effects/Effects.h
2008-05-29 00:00:00 +00:00

77 lines
1.9 KiB
C++

// Copyright (C) 2007 Id Software, Inc.
//
#ifndef __GAME_EFFECTS_H__
#define __GAME_EFFECTS_H__
//===============================================================
//
// sdEffect
//
//===============================================================
class sdEffect {
public:
sdEffect( void );
virtual ~sdEffect( void );
void Init( const char* effectName );
bool Start( int startTime );
void Update( void );
void Stop( bool appendToDieList = false ); // Stops spawning new particles, calling start again will overwrite any particles currently existing and start over
void StopDetach( void ); // Stops spawning new particles, calling start agian will start a new effect and let any existing particles die naturally
renderEffect_t& GetRenderEffect( void ) { return effect; }
const renderEffect_t& GetRenderEffect( void ) const { return effect; }
idLinkList< sdEffect >& GetNode( void ) { return effectNode; }
void FreeRenderEffect( void ) { Free(); }
static void UpdateDeadEffects( void );
static void FreeDeadEffects( void );
protected:
renderEffect_t effect;
qhandle_t effectHandle;
bool effectStopped;
bool waitingToDie;
idLinkList< sdEffect > effectNode;
protected:
void Init( void );
void Free( void );
private:
struct DeadEffect {
DeadEffect( void ) {}
DeadEffect( const sdEffect &eff ) {
effect = eff.effect;
effectHandle = eff.effectHandle;
}
renderEffect_t effect;
qhandle_t effectHandle;
};
static idList<DeadEffect> waitingToDieList;
};
/*
================
sdEffect::sdEffect
================
*/
ID_INLINE sdEffect::sdEffect( void ) {
Init();
}
/*
================
sdEffect::~sdEffect
================
*/
ID_INLINE sdEffect::~sdEffect( void ) {
Free();
}
#endif /* !__GAME_EFFECTS_H__ */