// Copyright (C) 2004 Id Software, Inc. // #ifndef __GAME_FX_H__ #define __GAME_FX_H__ /* =============================================================================== Special effects. =============================================================================== */ typedef struct { renderLight_t renderLight; // light presented to the renderer qhandle_t lightDefHandle; // handle to renderer light def renderEntity_t renderEntity; // used to present a model to the renderer int modelDefHandle; // handle to static renderer model float delay; int particleSystem; int start; bool soundStarted; bool shakeStarted; bool decalDropped; bool launched; } idFXLocalAction; class idEntityFx : public idEntity { public: CLASS_PROTOTYPE( idEntityFx ); idEntityFx(); virtual ~idEntityFx(); void Spawn( void ); void Save( idSaveGame *savefile ) const; void Restore( idRestoreGame *savefile ); virtual void Think(); void Setup( const char *fx ); void Run( int time ); void Start( int time ); void Stop( void ); const int Duration( void ); const char * EffectName( void ); const char * Joint( void ); const bool Done(); virtual void WriteToSnapshot( idBitMsgDelta &msg ) const; virtual void ReadFromSnapshot( const idBitMsgDelta &msg ); virtual void ClientPredictionThink( void ); static idEntityFx * StartFx( const char *fx, const idVec3 *useOrigin, const idMat3 *useAxis, idEntity *ent, bool bind ); protected: void Event_Trigger( idEntity *activator ); void Event_ClearFx( void ); void CleanUp( void ); void CleanUpSingleAction( const idFXSingleAction& fxaction, idFXLocalAction& laction ); void ApplyFade( const idFXSingleAction& fxaction, idFXLocalAction& laction, const int time, const int actualStart ); int started; int nextTriggerTime; const idDeclFX * fxEffect; // GetFX() should be called before using fxEffect as a pointer idList actions; idStr systemName; }; class idTeleporter : public idEntityFx { public: CLASS_PROTOTYPE( idTeleporter ); private: // teleporters to this location void Event_DoAction( idEntity *activator ); }; #endif /* !__GAME_FX_H__ */