fix fog and weather controller
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user