fix day nigh cycle
This commit was merged in pull request #41.
This commit is contained in:
@@ -91,11 +91,30 @@ func _time_option_changed(index: int) -> void:
|
|||||||
|
|
||||||
_time_tween = create_tween()
|
_time_tween = create_tween()
|
||||||
|
|
||||||
# Always move forward in time for a natural transition
|
var start_time = current_time
|
||||||
if target_time < current_time:
|
|
||||||
target_time += 1.0
|
# Gestione logica lineare: Notte(0.0) - Mattina(0.25) - Giorno(0.45) - Tramonto(0.8) - Notte(1.0)
|
||||||
|
# Per evitare di attraversare fasi intermedie opposte, forziamo il percorso su questo segmento.
|
||||||
_time_tween.tween_method(set_time, current_time, target_time, time_transition_duration)
|
|
||||||
|
if index == TIME_OPTION_NIGHT:
|
||||||
|
# Da Mattina a Notte -> andiamo a 0.0. Dal Giorno in poi -> andiamo a 1.0.
|
||||||
|
if start_time < environment_config.day:
|
||||||
|
target_time = 0.0
|
||||||
|
else:
|
||||||
|
target_time = 1.0
|
||||||
|
else:
|
||||||
|
# Se partiamo da Notte (valori vicini a 0.0 o 1.0)
|
||||||
|
if start_time < 0.1 or start_time > 0.9:
|
||||||
|
if index == TIME_OPTION_SUNRISE:
|
||||||
|
# Per andare a Mattina, partiamo dal lato 0.0
|
||||||
|
if start_time > 0.9:
|
||||||
|
start_time -= 1.0
|
||||||
|
else:
|
||||||
|
# Per andare a Giorno o Tramonto, partiamo dal lato 1.0
|
||||||
|
if start_time < 0.1:
|
||||||
|
start_time += 1.0
|
||||||
|
|
||||||
|
_time_tween.tween_method(set_time, start_time, target_time, time_transition_duration)
|
||||||
|
|
||||||
func _on_set_day_time(value: float) -> void:
|
func _on_set_day_time(value: float) -> void:
|
||||||
set_time(value)
|
set_time(value)
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ func select_day_time(normalized_time: float) -> void:
|
|||||||
|
|
||||||
if normalized_time < environment_config.sunrise:
|
if normalized_time < environment_config.sunrise:
|
||||||
#Sunrise: night → morning
|
#Sunrise: night → morning
|
||||||
day_time = 3.0 - (normalized_time / environment_config.sunrise) * 2.0 # 3.0 → 1.0
|
day_time = 3.0 + (normalized_time / environment_config.sunrise) * 1.0 # 3.0 → 4.0
|
||||||
elif normalized_time < environment_config.day:
|
elif normalized_time < environment_config.day:
|
||||||
#Morning: morning → afternoon
|
#Morning: morning → afternoon
|
||||||
var t: float = (normalized_time - environment_config.sunrise) / (environment_config.day - environment_config.sunrise)
|
var t: float = (normalized_time - environment_config.sunrise) / (environment_config.day - environment_config.sunrise)
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ func _process(delta: float) -> void:
|
|||||||
base_grad_intensity = lerp(environment_config.grad_intensity_morning, environment_config.grad_intensity_afternoon, t)
|
base_grad_intensity = lerp(environment_config.grad_intensity_morning, environment_config.grad_intensity_afternoon, t)
|
||||||
base_water_color = environment_config.water_color_morning.lerp(environment_config.water_color_afternoon, t)
|
base_water_color = environment_config.water_color_morning.lerp(environment_config.water_color_afternoon, t)
|
||||||
base_rotation_sun = environment_config.sun_rotation_morning.lerp(environment_config.sun_rotation_afternoon, t)
|
base_rotation_sun = environment_config.sun_rotation_morning.lerp(environment_config.sun_rotation_afternoon, t)
|
||||||
else:
|
elif day_time <= 3.0:
|
||||||
var t = day_time - 2.0
|
var t = day_time - 2.0
|
||||||
base_tint = environment_config.afternoon_color.lerp(environment_config.night_color, t)
|
base_tint = environment_config.afternoon_color.lerp(environment_config.night_color, t)
|
||||||
base_sky_top = environment_config.sky_top_afternoon.lerp(environment_config.sky_top_night, t)
|
base_sky_top = environment_config.sky_top_afternoon.lerp(environment_config.sky_top_night, t)
|
||||||
@@ -184,6 +184,20 @@ func _process(delta: float) -> void:
|
|||||||
base_grad_intensity = lerp(environment_config.grad_intensity_afternoon, environment_config.grad_intensity_night, t)
|
base_grad_intensity = lerp(environment_config.grad_intensity_afternoon, environment_config.grad_intensity_night, t)
|
||||||
base_water_color = environment_config.water_color_afternoon.lerp(environment_config.water_color_night, t)
|
base_water_color = environment_config.water_color_afternoon.lerp(environment_config.water_color_night, t)
|
||||||
base_rotation_sun = environment_config.sun_rotation_afternoon.lerp(environment_config.sun_rotation_night, t)
|
base_rotation_sun = environment_config.sun_rotation_afternoon.lerp(environment_config.sun_rotation_night, t)
|
||||||
|
else:
|
||||||
|
var t = day_time - 3.0
|
||||||
|
base_tint = environment_config.night_color.lerp(environment_config.morning_color, t)
|
||||||
|
base_sky_top = environment_config.sky_top_night.lerp(environment_config.sky_top_morning, t)
|
||||||
|
base_sky_horizon = environment_config.sky_horizon_night.lerp(environment_config.sky_horizon_morning, t)
|
||||||
|
base_fog_color = environment_config.fog_color_night.lerp(environment_config.fog_color_morning, t)
|
||||||
|
base_fog_density = lerp(environment_config.fog_density_night, environment_config.fog_density_morning, t)
|
||||||
|
base_bloom = lerp(environment_config.glow_night, environment_config.glow_morning, t)
|
||||||
|
base_exposure = lerp(environment_config.exposure_night, environment_config.exposure_morning, t)
|
||||||
|
base_grad_top = environment_config.grad_top_night.lerp(environment_config.grad_top_morning, t)
|
||||||
|
base_grad_bot = environment_config.grad_bot_night.lerp(environment_config.grad_bot_morning, t)
|
||||||
|
base_grad_intensity = lerp(environment_config.grad_intensity_night, environment_config.grad_intensity_morning, t)
|
||||||
|
base_water_color = environment_config.water_color_night.lerp(environment_config.water_color_morning, t)
|
||||||
|
base_rotation_sun = environment_config.sun_rotation_night.lerp(environment_config.sun_rotation_morning, t)
|
||||||
|
|
||||||
var weather_color = environment_config.rain_mode_color
|
var weather_color = environment_config.rain_mode_color
|
||||||
if is_storm:
|
if is_storm:
|
||||||
@@ -312,26 +326,30 @@ func create_sound_players():
|
|||||||
func _get_rain_day_color() -> Color:
|
func _get_rain_day_color() -> Color:
|
||||||
if day_time <= 2.0:
|
if day_time <= 2.0:
|
||||||
return environment_config.rain_morning_color.lerp(environment_config.rain_afternoon_color, day_time - 1.0)
|
return environment_config.rain_morning_color.lerp(environment_config.rain_afternoon_color, day_time - 1.0)
|
||||||
|
elif day_time <= 3.0:
|
||||||
return environment_config.rain_afternoon_color.lerp(environment_config.rain_night_color, day_time - 2.0)
|
return environment_config.rain_afternoon_color.lerp(environment_config.rain_night_color, day_time - 2.0)
|
||||||
|
return environment_config.rain_night_color.lerp(environment_config.rain_morning_color, day_time - 3.0)
|
||||||
|
|
||||||
func _get_storm_day_color() -> Color:
|
func _get_storm_day_color() -> Color:
|
||||||
if day_time <= 2.0:
|
if day_time <= 2.0:
|
||||||
return environment_config.storm_morning_color.lerp(environment_config.storm_afternoon_color, day_time - 1.0)
|
return environment_config.storm_morning_color.lerp(environment_config.storm_afternoon_color, day_time - 1.0)
|
||||||
|
elif day_time <= 3.0:
|
||||||
return environment_config.storm_afternoon_color.lerp(environment_config.storm_night_color, day_time - 2.0)
|
return environment_config.storm_afternoon_color.lerp(environment_config.storm_night_color, day_time - 2.0)
|
||||||
|
return environment_config.storm_night_color.lerp(environment_config.storm_morning_color, day_time - 3.0)
|
||||||
|
|
||||||
func _get_rain_day_exposure() -> float:
|
func _get_rain_day_exposure() -> float:
|
||||||
if day_time <= 2.0:
|
if day_time <= 2.0:
|
||||||
return lerp(environment_config.rain_exposure_morning, environment_config.rain_exposure_afternoon, day_time - 1.0)
|
return lerp(environment_config.rain_exposure_morning, environment_config.rain_exposure_afternoon, day_time - 1.0)
|
||||||
|
elif day_time <= 3.0:
|
||||||
return lerp(environment_config.rain_exposure_afternoon, environment_config.rain_exposure_night, day_time - 2.0)
|
return lerp(environment_config.rain_exposure_afternoon, environment_config.rain_exposure_night, day_time - 2.0)
|
||||||
|
return lerp(environment_config.rain_exposure_night, environment_config.rain_exposure_morning, day_time - 3.0)
|
||||||
|
|
||||||
func _get_storm_day_exposure() -> float:
|
func _get_storm_day_exposure() -> float:
|
||||||
if day_time <= 2.0:
|
if day_time <= 2.0:
|
||||||
return lerp(environment_config.storm_exposure_morning, environment_config.storm_exposure_afternoon, day_time - 1.0)
|
return lerp(environment_config.storm_exposure_morning, environment_config.storm_exposure_afternoon, day_time - 1.0)
|
||||||
|
elif day_time <= 3.0:
|
||||||
return lerp(environment_config.storm_exposure_afternoon, environment_config.storm_exposure_night, day_time - 2.0)
|
return lerp(environment_config.storm_exposure_afternoon, environment_config.storm_exposure_night, day_time - 2.0)
|
||||||
|
return lerp(environment_config.storm_exposure_night, environment_config.storm_exposure_morning, day_time - 3.0)
|
||||||
|
|
||||||
#region camera
|
#region camera
|
||||||
func _set_camera(curr_camera: Camera3D):
|
func _set_camera(curr_camera: Camera3D):
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ extends Node
|
|||||||
|
|
||||||
signal on_collectible_unlocked(collectible_id: StringName)
|
signal on_collectible_unlocked(collectible_id: StringName)
|
||||||
signal on_photo_saved(filePath: String)
|
signal on_photo_saved(filePath: String)
|
||||||
|
@warning_ignore("unused_signal")
|
||||||
signal on_photo_preview_ready(image: Image)
|
signal on_photo_preview_ready(image: Image)
|
||||||
|
|
||||||
@export var collectibles_library: CollectibleLibrary
|
@export var collectibles_library: CollectibleLibrary
|
||||||
|
|||||||
Reference in New Issue
Block a user