public static string GetCurrentPeriod() { string period_name = "default"; int now_time = AmbientLightUtils.GetCurrentTimeFormatted(); //TODO: Change to use tld functions to get period name foreach (KeyValuePair <string, AmbientPeriodItem> prd in AmbientLightControl.periods_data) { if (now_time >= prd.Value.start_hour && now_time < prd.Value.end_hour) { period_name = prd.Key; } } return(period_name); }
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; } } }