+ if(fade_state == FadingOn) {
+ Uint32 ticks = SDL_GetTicks();
+ float time = (ticks - fade_start_ticks) / 1000.0;
+ if(time >= fade_time) {
+ set_gain(1.0);
+ fade_state = NoFading;
+ } else {
+ set_gain(time / fade_time);
+ }
+ } else if(fade_state == FadingOff) {
+ Uint32 ticks = SDL_GetTicks();
+ float time = (ticks - fade_start_ticks) / 1000.0;
+ if(time >= fade_time) {
+ stop();
+ fade_state = NoFading;
+ } else {
+ set_gain( (fade_time-time) / fade_time);
+ }
+ }
+}
+
+void
+StreamSoundSource::setFading(FadeState state, float fade_time)
+{
+ this->fade_state = state;
+ this->fade_time = fade_time;
+ this->fade_start_ticks = SDL_GetTicks();