/** * @file lightening_effect.h */ #ifndef _LIGHTENING_EFFECT #define _LIGHTENING_EFFECT #include "vector.h" #include "vector2D.h" #include "weather_effect.h" #include "sound_buffer.h" #include "sound_source.h" class Billboard; class Light; class LighteningEffect : public WeatherEffect { public: LighteningEffect(const TiXmlElement* root = NULL); virtual ~LighteningEffect(); virtual void loadParams(const TiXmlElement* root); virtual void init(); virtual void activate(); virtual void deactivate(); inline void activateLightening() { this->activate(); } inline void deactivateLightening() { this->deactivate(); } virtual void tick(float dt); void coord(float x, float y, float z); void setFlashSize(float width, float height, float seedWidth, float seedHeight); inline void setLighteningOption(const std::string& option) { if (option == "activate") this->lighteningActivate = true; if (option == "movelightening") this->lighteningMove = true; } inline void setFlashFrequency(float baseFrequency, float seedTime) { this->flashFrequencyBase = baseFrequency; this->flashFrequency = baseFrequency; this->flashFrequencySeed = seedTime; } inline void setFlashConstTime(float holdTime) { this->flashHoldTime = holdTime; } inline void setFlashRisingTime(float flashRisingTime) { if(flashRisingTime > this->flashHoldTime) this->flashRisingTime = this->flashHoldTime * 0.5; else this->flashRisingTime = flashRisingTime; } inline void setFlashSeed(float seedX, float seedZ) { this->seedX = seedX; this->seedZ = seedZ; } private: Billboard* billboard[4]; bool lighteningActivate; bool lighteningMove; float flashFrequency; float flashFrequencyBase; float flashHoldTime; float flashRisingTime; float time; float width; float height; float seedWidth; float seedHeight; float seedX; float seedZ; float flashFrequencySeed; float mainPosX; float mainPosY; float mainPosZ; void newCoordinates(); Vector cameraCoor; Light* flashLight; OrxSound::SoundSource soundSource; OrxSound::SoundBuffer* thunderBuffer; }; #endif /* _LIGHTENING_EFFECT */