private static async Task PrepareFade(float targetExposure) { float oldExposure = RenderSettings.skybox.GetFloat("_Exposure"); float oldReflection = RenderSettings.reflectionIntensity; while (!AudioDriver.I.IsPlaying()) { await Task.Delay(20); } ArenaLoaderMod.CurrentSkyboxExposure = oldExposure; float startTick = AudioDriver.I.mCachedTick; float _endTick = startTick + 480f; float percentage = 0f; while (percentage < 100f) { percentage = ((AudioDriver.I.mCachedTick - startTick) * 100f) / (_endTick - startTick); float currentExp = Mathf.Lerp(oldExposure, targetExposure, percentage / 100f); float currentRef = Mathf.Lerp(oldReflection, targetExposure, percentage / 100f); RenderSettings.skybox.SetFloat("_Exposure", currentExp); ArenaLoaderMod.CurrentSkyboxReflection = 0f; ArenaLoaderMod.ChangeReflectionStrength(currentRef); ArenaLoaderMod.CurrentSkyboxExposure = currentExp; await Task.Delay(20); } await Task.CompletedTask; }
private IEnumerator Bop() { float oldExposure = RenderSettings.skybox.GetFloat("_Exposure"); ArenaLoaderMod.CurrentSkyboxExposure = oldExposure; List <SongCues.Cue> cues = SongCues.I.mCues.cues.ToList(); for (int i = cues.Count - 1; i >= 0; i--) { if (cues[i].tick < AudioDriver.I.mCachedTick || cues[i].behavior == Target.TargetBehavior.Dodge) { cues.RemoveAt(i); } } ExposureState state = ExposureState.Light; while (defaultParams.active) { if (cues[0].tick <= AudioDriver.I.mCachedTick) { if (cues[0].behavior != Target.TargetBehavior.Chain && cues[0].behavior != Target.TargetBehavior.ChainStart && cues[0].velocity == 2) { cues.RemoveAt(0); continue; } if (cues[0].nextCue.tick == cues[0].tick) { if (cues[0].behavior == Target.TargetBehavior.Melee) { cues.RemoveAt(1); } else { cues.RemoveAt(0); } } MelonCoroutines.Stop(fadeToken); float diff = cues[0].nextCue.tick - cues[0].tick; float end = cues[0].nextCue.tick - (diff / 4f); bool isLight = state == ExposureState.Light; float target = isLight ? 0f : (ModifierManager.originalExposure / 100f) * 80f; if (diff >= 120f && cues[0].behavior != Target.TargetBehavior.Melee) { fadeToken = MelonCoroutines.Start(Fade(end, target)); } else { RenderSettings.skybox.SetFloat("_Exposure", target); RenderSettings.reflectionIntensity = target; ArenaLoaderMod.CurrentSkyboxReflection = 0f; ArenaLoaderMod.ChangeReflectionStrength(target); } state = isLight ? ExposureState.Dark : ExposureState.Light; cues.RemoveAt(0); } yield return(new WaitForSecondsRealtime(.01f)); } yield return(null); }
private static void ResetArenaValues() { if (!Integrations.arenaLoaderFound || !Config.enabled) { return; } RenderSettings.skybox.SetFloat("_Exposure", userArenaBrightness); ArenaLoaderMod.CurrentSkyboxExposure = userArenaBrightness; ArenaLoaderMod.CurrentSkyboxReflection = userArenaReflection; ArenaLoaderMod.ChangeReflectionStrength(userArenaReflection); }
private static IEnumerator FadeToBlack() { ArenaLoaderMod.CurrentSkyboxExposure = fadeToBlackExposure; while (active) { float percentage = ((AudioDriver.I.mCachedTick - fadeToBlackStartTick) * 100f) / (fadeToBlackEndTick - fadeToBlackStartTick); if (percentage >= 0) { float currentExp = Mathf.Lerp(fadeToBlackExposure, 0f, percentage / 100f); float currentRef = Mathf.Lerp(fadeToBlackReflection, .5f, percentage / 100f); RenderSettings.skybox.SetFloat("_Exposure", currentExp); ArenaLoaderMod.CurrentSkyboxReflection = 0f; ArenaLoaderMod.ChangeReflectionStrength(currentRef); ArenaLoaderMod.CurrentSkyboxExposure = currentExp; } yield return(new WaitForSecondsRealtime(.01f)); } }
private IEnumerator Fade(float endTick, float targetExposure) { float oldExposure = RenderSettings.skybox.GetFloat("_Exposure"); float oldReflection = RenderSettings.reflectionIntensity; ArenaLoaderMod.CurrentSkyboxExposure = oldExposure; float startTick = AudioDriver.I.mCachedTick; while (true) { float percentage = ((AudioDriver.I.mCachedTick - startTick) * 100f) / (endTick - startTick); float currentExp = Mathf.Lerp(oldExposure, targetExposure, percentage / 100f); float currentRef = Mathf.Lerp(oldReflection, targetExposure, percentage / 100f); RenderSettings.skybox.SetFloat("_Exposure", currentExp); ArenaLoaderMod.CurrentSkyboxReflection = 0f; ArenaLoaderMod.ChangeReflectionStrength(currentRef); ArenaLoaderMod.CurrentSkyboxExposure = currentExp; yield return(new WaitForSecondsRealtime(.01f)); } }