fix fog and weather controller

This commit is contained in:
2026-03-25 18:32:18 +01:00
parent 5af1ba0ba8
commit ce6d9673ca
7 changed files with 67 additions and 58 deletions

View File

@@ -29,6 +29,7 @@ var is_snowing: bool = false
var is_snow_accumulated: bool = false
var actual_snow_amount: float = 0.0
var is_storm: bool = false
var cold_tween: Tween
var is_windy: bool = false
var thereare_fireflies: bool = false
@@ -61,6 +62,7 @@ func _ready() -> void:
UIEvents.toggle_snow.connect(toggle_snow)
UIEvents.toggle_wind.connect(toggle_wind)
UIEvents.toggle_fireflies.connect(toggle_fireflies)
UIEvents.toggle_storm.connect(toggle_storm)
func _process(delta: float) -> void:
var base_tint: Color
@@ -74,9 +76,6 @@ func _process(delta: float) -> void:
var base_grad_bot: Color
var base_grad_intensity: float
var base_rotation_sun: Vector3
var is_storm = is_raining and is_snowing
var is_night = day_time >= 2.5
if is_storm:
rain_intensity = move_toward(rain_intensity, 1.0, delta * 0.5)
@@ -87,13 +86,7 @@ func _process(delta: float) -> void:
set_lightning_timer()
else:
rain_intensity = move_toward(rain_intensity, 0.0, delta * 0.5)
if environment_config.material_clouds:
var current_density = lerp(0.4, 1.0, rain_intensity)
environment_config.material_clouds.set_shader_parameter("cloud_density", current_density)
var current_sharpness = lerp(0.14, 0.0, rain_intensity)
environment_config.material_clouds.set_shader_parameter("center_sharpness", current_sharpness)
if day_time <= 2.0:
var t = day_time - 1.0
base_tint = environment_config.morning_color.lerp(environment_config.afternoon_color, t)
@@ -183,6 +176,12 @@ func _process(delta: float) -> void:
sky_mat.set_shader_parameter("sun_color", final_tint)
sky_mat.set_shader_parameter("night_intensity", night_val)
if environment_config.material_clouds:
var current_density = lerp(0.4, 1.0, rain_intensity)
environment_config.material_clouds.set_shader_parameter("cloud_density", current_density)
var current_sharpness = lerp(0.14, 0.0, rain_intensity)
environment_config.material_clouds.set_shader_parameter("center_sharpness", current_sharpness)
if environment_config.material_fog:
environment_config.material_fog.set_shader_parameter("night_intensity", night_val)
environment_config.material_fog.set_shader_parameter("sun_color", final_tint)
@@ -230,6 +229,10 @@ func set_wind():
#endregion
#region Lightning
func toggle_storm(value: bool):
is_storm = value
#set lightning
func set_lightning():
lightning_light.name = "Lightning Light"
@@ -276,23 +279,23 @@ func set_lightning_timer():
func start_lightning():
if lightning_light:
var tween_luce = create_tween()
var tween_lighting = create_tween()
lightning_light.light_energy = 5.0
tween_luce.tween_interval(0.05)
tween_luce.tween_callback(func(): lightning_light.light_energy = 0.0)
tween_luce.tween_interval(0.05)
tween_luce.tween_callback(func(): lightning_light.light_energy = 2.0)
tween_luce.tween_method(func(val): lightning_light.light_energy = val, 2.0, 0.0, 0.2)
tween_lighting.tween_interval(0.05)
tween_lighting.tween_callback(func(): lightning_light.light_energy = 0.0)
tween_lighting.tween_interval(0.05)
tween_lighting.tween_callback(func(): lightning_light.light_energy = 2.0)
tween_lighting.tween_method(func(val): lightning_light.light_energy = val, 2.0, 0.0, 0.2)
var lightning_number = randi_range(environment_config.lightning_min, environment_config.lightning_max)
for i in lightning_number:
if lightning_sprite:
var angolo_casuale = randf() * TAU
var distanza = randf_range(10.0, 40.0)
var random_angle = randf() * TAU
var distance = randf_range(10.0, 40.0)
lightning_sprite.position = Vector3(cos(angolo_casuale) * distanza, 10.0, sin(angolo_casuale) * distanza)
lightning_sprite.position = Vector3(cos(random_angle) * distance, 10.0, sin(random_angle) * distance)
lightning_sprite.modulate = environment_config.lightning_color
lightning_sprite.modulate.a = 1.0