public Task PerformFade(ref FadeArgs fadeArgs) { _activeTask?.TrySetCanceled(); _activeTask = new TaskCompletionSource <bool>(); _currentFade = fadeArgs; _timeOverflow = 0; _fadeStepsDone = -1; if (!fadeArgs.flags.HasFlag(FadeFlag.FadeIn)) { Logger.Info("gfade fade out"); } else { Logger.Info("gfade fade in"); } _lastFadeTime = TimePoint.Now; AdvanceTime(_lastFadeTime); // If transition time is 0, this might actually complete _immediately_! if (_activeTask == null) { return(Task.CompletedTask); } return(_activeTask.Task); }
private IEnumerator FadeSourceOut(FadeArgs args) { while (isFading && args.Source == ShepardTone) { yield return(new WaitForSeconds(0.01f)); } if (args.Source == ShepardTone) { isFading = true; } for (float i = args.Source.volume; i > args.MinVolume; i -= args.Speed) { if (interrupt && args.Source == ShepardTone) { interrupt = false; break; } args.Source.volume = i; yield return(new WaitForSeconds(0.05f)); } if (args.Source == ShepardTone) { isFading = false; } }
public void ScheduleFade(ref FadeArgs fadeArgs, TimeSpan delay) { var evt = new TimeEvent(TimeEventType.Fade); evt.arg1.int32 = (int)fadeArgs.flags; evt.arg2.int32 = unchecked ((int)fadeArgs.color.Pack()); evt.arg3.float32 = 2.0f; evt.arg4.int32 = 48; GameSystems.TimeEvent.Schedule(evt, delay, out _); }
public void OnEnterLight() { interrupt |= isFading; var args = new FadeArgs { Source = ShepardTone, MaxVolume = shepardToneMaxVolume, Speed = 0.025f }; StartCoroutine("FadeSourceOut", args); }
public void OnFirstLightTurnedOn() { BackgroundMusic.volume = 0; //BackgroundMusic.Play(); var args = new FadeArgs { Source = BackgroundMusic, MaxVolume = backgroundMusicMaxVolume, Speed = 0.01f }; StartCoroutine("FadeSourceIn", args); }