00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "object/pulsing_light.hpp"
00018 #include <math.h>
00019
00020 #include "math/random_generator.hpp"
00021
00022 PulsingLight::PulsingLight(const Vector& center, float cycle_len, float min_alpha, float max_alpha, const Color& color) :
00023 Light(center, color),
00024 min_alpha(min_alpha),
00025 max_alpha(max_alpha),
00026 cycle_len(cycle_len),
00027 t(0)
00028 {
00029 assert(cycle_len > 0);
00030
00031
00032 t = gameRandom.randf(0.0, cycle_len);
00033 }
00034
00035 PulsingLight::~PulsingLight()
00036 {
00037 }
00038
00039 void
00040 PulsingLight::update(float elapsed_time)
00041 {
00042 Light::update(elapsed_time);
00043
00044 t += elapsed_time;
00045 if (t > cycle_len) t -= cycle_len;
00046 }
00047
00048 void
00049 PulsingLight::draw(DrawingContext& context)
00050 {
00051 Color old_color = color;
00052
00053 color.alpha *= min_alpha + ((max_alpha - min_alpha) * cos(2 * M_PI * t / cycle_len));
00054 Light::draw(context);
00055
00056 color = old_color;
00057 }
00058
00059