public static AmbientConfigPeriodSet GetLightSet(AmbientConfigWeather weather_set, string light_set) { AmbientConfigPeriodSet set = null; if (weather_set != null) { if (weather_set.orientations.ContainsKey(light_set)) { set = weather_set.orientations[light_set]; } else if (weather_set.orientations.ContainsKey("default")) { set = weather_set.orientations["default"]; } else { weather_set = TryToFetchWeather(AmbientLightControl.config.periods["default"], "default"); if (weather_set.orientations.ContainsKey(light_set)) { set = weather_set.orientations[light_set]; } else { Debug.Log("[ambient-lights] ERROR: No orientation found."); } } } else { Debug.Log("[ambient-lights] ERROR: No WeatherSet found."); } return(set); }
public static void MaybeUpdateLightsToPeriod(bool force_update = false) { if (light_setup_done && scene_time_init && scene_weather_init) { int now_time = AmbientLightUtils.GetCurrentTimeFormatted(); string period_name = TimeWeather.GetCurrentPeriod(); string weather_name = TimeWeather.GetCurrentWeather(); AuroraLightsControl.UpdateAuroraLightsRanges(); if (period_name != current_period || weather_name != current_weather || force_update) { AmbientConfigPeriod period = TimeWeather.GetPeriodSet(period_name); AmbientConfigWeather weatherSet = TimeWeather.GetWeatherSet(period, weather_name); period_transition.start = now_time; if (period_name == current_period && weather_name != current_weather) { period_transition.duration = 15; period_transition.end = now_time + 15; } else { period_transition.duration = TimeWeather.GetPeriodChangeDuration(period_name); period_transition.end = now_time + TimeWeather.GetPeriodChangeDuration(period_name); } period_transition.complete = force_update; current_weather = weather_name; current_period = period_name; if (AmbientLightsOptions.verbose) { Debug.Log("[ambient-lights] * Light period change:"); Debug.Log("[ambient-lights] Period: " + current_period); Debug.Log("[ambient-lights] Weather: " + current_weather); } foreach (var light in light_list) { AmbientConfigPeriodSet set = TimeWeather.GetLightSet(weatherSet, light.light_set); if (set != null) { light.SetLightParams(set, force_update); } } } else if (now_time > period_transition.start && now_time <= period_transition.end && !period_transition.complete) { float time_passed = now_time - period_transition.start; float transition_pos = time_passed / period_transition.duration; //Debug.Log("[ambient-lights] Transition position: " + transition_pos.ToString()); foreach (var light in light_list) { light.UpdateLightTransition(transition_pos); } } else if (now_time > period_transition.end && !period_transition.complete) { //Debug.Log("[ambient-lights] End of transition."); period_transition.complete = true; } } }
public void SetLightParams(AmbientConfigPeriodSet set, bool instant_apply = false) { start_set = target_set; target_set = new AmbientConfigPeriodSet { intensity = set.intensity * AmbientLightControl.GetIntensityModifier(), range = set.range * AmbientLightControl.GetRangeModifier(), color = set.color, shadows = set.shadows }; if (start_set == null) { start_set = target_set; instant_apply = true; } if (set.intensity != 0) { light_source.enabled = true; } else { light_source.enabled = false; } if (AmbientLightControl.config.options.override_shadows != "") { set.shadows = AmbientLightControl.config.options.override_shadows; } if (!AmbientLightsOptions.enable_shadows) { light_source.shadows = LightShadows.None; } else { if (set.shadows.ToLower() == "hard") { //Hard shadows don't work well //light_source.shadows = LightShadows.Hard; light_source.shadows = LightShadows.Soft; } else if (set.shadows.ToLower() == "soft") { light_source.shadows = LightShadows.Soft; } else { light_source.shadows = LightShadows.None; } } if (instant_apply && !AmbientLightControl.light_override) { SetLightIntensity(target_set.intensity); SetLightRange(target_set.range); SetLightColor(AmbientLightUtils.ParseColor32(target_set.color)); if (AmbientLightsOptions.verbose) { DebugLightSet(); } } }