private void RainbowLights() { if (TechnicolorConfig.Instance.TechnicolorLightsGrouping == TechnicolorLightsGrouping.ISOLATED) { _lightColorizerManager.GlobalColorize(false, _gradientLeftColor, _gradientRightColor, _gradientLeftColor, _gradientRightColor); foreach (LightColorizer lightColorizer in _lightColorizerManager.Colorizers.Values) { foreach (ILightWithId light in lightColorizer.Lights) { float seed = Math.Abs(light.GetHashCode()) % 1000; seed *= 0.001f; Color colorLeft = Color.HSVToRGB(Mathf.Repeat((Time.time * _timeMult) + _mismatchSpeedOffset + seed, 1f), 1f, 1f); Color colorRight = Color.HSVToRGB(Mathf.Repeat((Time.time * _timeMult) + seed, 1f), 1f, 1f); lightColorizer.Colorize(new[] { light }, colorLeft, colorRight, colorLeft, colorRight); } } } else { _lightColorizerManager.GlobalColorize(true, _gradientLeftColor, _gradientRightColor, _gradientLeftColor, _gradientRightColor); } }
private bool Colorize(ChromaLightSwitchEventEffect __instance, BasicBeatmapEventData beatmapEventData) { if (!TechnicolorConfig.Instance.TechnicolorEnabled) { return(true); } LightColorizer lightColorizer = __instance.Colorizer; bool warm = !ChromaLightSwitchEventEffect.IsColor0(beatmapEventData.value); if (TechnicolorConfig.Instance.TechnicolorLightsGrouping == TechnicolorLightsGrouping.ISOLATED) { foreach (ILightWithId light in lightColorizer.Lights) { Color color = TechnicolorController.GetTechnicolor(warm, beatmapEventData.time + light.GetHashCode(), TechnicolorConfig.Instance.TechnicolorLightsStyle); lightColorizer.Colorize(false, color, color, color, color); __instance.Refresh(true, new[] { light }, beatmapEventData); } return(false); } if (!(TechnicolorController.TechniLightRandom.NextDouble() < TechnicolorConfig.Instance.TechnicolorLightsFrequency)) { return(true); } { Color color = TechnicolorController.GetTechnicolor(warm, beatmapEventData.time, TechnicolorConfig.Instance.TechnicolorLightsStyle); switch (TechnicolorConfig.Instance.TechnicolorLightsGrouping) { case TechnicolorLightsGrouping.ISOLATED_GROUP: lightColorizer.Colorize(false, color, color, color, color); break; default: _manager.GlobalColorize(false, color, color, color, color); break; } } return(true); }