add config comment

This commit is contained in:
2026-04-01 19:37:07 +02:00
parent 0be4b503e2
commit 8883699886
17 changed files with 517 additions and 75 deletions

View File

@@ -216,7 +216,7 @@ shader_parameter/fade_end = 800.000035625
shader_parameter/height_fade_start = 10.0
shader_parameter/height_fade_end = 50.0
[node name="EnvironmentManager" type="Node3D" unique_id=1611939731 node_paths=PackedStringArray("particles_wind", "particles_snow", "particles_fireflies", "particles_rain", "fog_overlay", "environment_dust", "blur", "environment_shadows")]
[node name="EnvironmentManager" type="Node3D" unique_id=1611939731 node_paths=PackedStringArray("particles_wind", "particles_snow", "particles_fireflies", "particles_rain", "environment_dust", "blur", "environment_shadows")]
script = ExtResource("1_wecen")
environment_config = SubResource("Resource_r4tfj")
particles_wind = NodePath("Particles_Wind")
@@ -224,7 +224,6 @@ particles_snow = NodePath("Particles_Snow")
particles_fireflies = NodePath("Particles_Fireflies")
particles_rain = NodePath("Particles_Rain")
godray = ExtResource("5_411rw")
fog_overlay = NodePath("")
environment_dust = NodePath("EnvironmentDust")
blur = NodePath("Blur")
environment_shadows = NodePath("EnvironmentCloudsShadows")
@@ -287,3 +286,5 @@ mouse_filter = 2
extra_cull_margin = 16384.0
mesh = SubResource("QuadMesh_sxgg7")
surface_material_override/0 = SubResource("ShaderMaterial_oqt1s")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="." unique_id=902982869]

View File

@@ -12,14 +12,17 @@ extends Node3D
@export var particles_fireflies: GPUParticles3D
@export var particles_rain: GPUParticles3D
@export var godray: PackedScene
@export var fog_overlay: ColorRect
@export var environment_dust: ColorRect
@export var blur: ColorRect
@export var environment_shadows: MeshInstance3D
@export_group("Sound")
@export var thunder_sounds: Array[AudioStream]
#environment nodes
@onready var sun: DirectionalLight3D = $"../DirectionalLight3D"
@onready var environment: WorldEnvironment = $"../WorldEnvironment"
@onready var audio_player: AudioStreamPlayer3D = $AudioStreamPlayer3D
var day_night_controller: DayNightController
var weather_controller: WeatherController
@@ -49,14 +52,15 @@ func _ready() -> void:
particles_fireflies,
particles_rain,
godray,
fog_overlay,
environment_dust,
blur,
environment_shadows,
sun,
environment,
environment_config,
camera
camera,
audio_player,
thunder_sounds
)
weather_controller.name = "WeatherController"
add_child(weather_controller)

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://bfn6kxtpb8b7a"
path="res://.godot/imported/thunder_1.mp3-5dfac75637d4484715fa2c52227bbb39.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_1.mp3"
dest_files=["res://.godot/imported/thunder_1.mp3-5dfac75637d4484715fa2c52227bbb39.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://br2ye0dto487h"
path="res://.godot/imported/thunder_2.mp3-e0bc5cdbb7a7380e5c0e7af073c47559.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_2.mp3"
dest_files=["res://.godot/imported/thunder_2.mp3-e0bc5cdbb7a7380e5c0e7af073c47559.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://dvabvoqyya0g5"
path="res://.godot/imported/thunder_3.mp3-2057b93f6a6b1db545b448579512d302.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_3.mp3"
dest_files=["res://.godot/imported/thunder_3.mp3-2057b93f6a6b1db545b448579512d302.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://creenugno7hm"
path="res://.godot/imported/thunder_4.mp3-ab350a8d3ed7b106a20bdb2005be826d.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_4.mp3"
dest_files=["res://.godot/imported/thunder_4.mp3-ab350a8d3ed7b106a20bdb2005be826d.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://bm6dq4jwsbxf6"
path="res://.godot/imported/thunder_5.mp3-bac65d0a703be3ab04d2144b8eef2bce.mp3str"
[deps]
source_file="res://core/daynight/sound/thunder_5.mp3"
dest_files=["res://.godot/imported/thunder_5.mp3-bac65d0a703be3ab04d2144b8eef2bce.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,12 +1,14 @@
class_name WeatherController
extends Node
var audio_player: AudioStreamPlayer3D
var thunder_sounds: Array[AudioStream]
var particles_wind: GPUParticles3D
var particles_snow: GPUParticles3D
var particles_fireflies: GPUParticles3D
var particles_rain: GPUParticles3D
var godray: PackedScene
var fog_overlay: ColorRect
var environment_dust: ColorRect
var blur: ColorRect
var environment_shadows: MeshInstance3D
@@ -41,22 +43,23 @@ var thereare_fireflies: bool = false
func _init(wind: GPUParticles3D, snow: GPUParticles3D,
fireflies: GPUParticles3D, rain: GPUParticles3D, ray: PackedScene,
fogov: ColorRect, dust: ColorRect, blurr: ColorRect, envshadows: MeshInstance3D,
dust: ColorRect, blurr: ColorRect, envshadows: MeshInstance3D,
thesun: DirectionalLight3D, theenvironment: WorldEnvironment, environmentconfig: EnvironmentConfig,
thecamera: Camera3D = null) -> void:
thecamera: Camera3D, audiostreamplayer: AudioStreamPlayer3D, thundersounds: Array[AudioStream]) -> void:
particles_wind = wind
particles_snow = snow
particles_fireflies = fireflies
particles_rain = rain
godray = ray
sun = thesun
fog_overlay = fogov
environment_dust = dust
blur = blurr
environment_shadows = envshadows
environment = theenvironment
environment_config = environmentconfig
camera = thecamera
thunder_sounds = thundersounds
audio_player = audiostreamplayer
set_rain()
@@ -101,7 +104,8 @@ func _process(delta: float) -> void:
var base_rotation_sun: Vector3
if is_raining:
rain_intensity = move_toward(rain_intensity, 1.0, delta * 0.5)
var target_rain = environment_config.storm_rain_intensity_multiplier if is_storm else 1.0
rain_intensity = move_toward(rain_intensity, target_rain, delta * 0.5)
if is_storm:
timer_next_lightning -= delta
if timer_next_lightning <= 0.0:
@@ -139,11 +143,15 @@ func _process(delta: float) -> void:
base_grad_intensity = lerp(environment_config.grad_intensity_afternoon, environment_config.grad_intensity_night, t)
base_rotation_sun = environment_config.sun_rotation_afternoon.lerp(environment_config.sun_rotation_night, t)
var final_tint = base_tint.lerp(base_tint * environment_config.rain_mode_color, rain_intensity)
var final_sky_top = base_sky_top.lerp(base_sky_top * environment_config.rain_mode_color, rain_intensity)
var final_sky_horizon = base_sky_horizon.lerp(base_sky_horizon * environment_config.rain_mode_color, rain_intensity)
var final_fog_color = base_fog_color.lerp(base_fog_color * environment_config.rain_mode_color, rain_intensity)
var final_fog_density = lerp(base_fog_density, base_fog_density * 4.0, rain_intensity)
var weather_color = environment_config.rain_mode_color
if is_storm:
var storm_blend = clamp((rain_intensity - 1.0) / (environment_config.storm_rain_intensity_multiplier - 1.0), 0.0, 1.0)
weather_color = weather_color.lerp(environment_config.storm_mode_color, storm_blend)
var final_tint = base_tint.lerp(base_tint * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_sky_top = base_sky_top.lerp(base_sky_top * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_sky_horizon = base_sky_horizon.lerp(base_sky_horizon * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_fog_color = base_fog_color.lerp(base_fog_color * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_fog_density = lerp(base_fog_density, base_fog_density * 4.0, clamp(rain_intensity, 0.0, 1.0))
final_tint = final_tint.lerp(final_tint * environment_config.snow_mode_color, actual_snow_amount)
final_sky_top = final_sky_top.lerp(final_sky_top * environment_config.snow_mode_color, actual_snow_amount)
@@ -151,8 +159,8 @@ func _process(delta: float) -> void:
final_fog_color = final_fog_color.lerp(final_fog_color * environment_config.snow_mode_color, actual_snow_amount)
#Shader parameters for global trunk_shader
var final_grad_top = base_grad_top.lerp(base_grad_top * environment_config.rain_mode_color, rain_intensity)
var final_grad_bot = base_grad_bot.lerp(base_grad_bot * environment_config.rain_mode_color, rain_intensity)
var final_grad_top = base_grad_top.lerp(base_grad_top * weather_color, clamp(rain_intensity, 0.0, 1.0))
var final_grad_bot = base_grad_bot.lerp(base_grad_bot * weather_color, clamp(rain_intensity, 0.0, 1.0))
RenderingServer.global_shader_parameter_set("global_gradient_color_top", final_grad_top)
RenderingServer.global_shader_parameter_set("global_gradient_color_bot", final_grad_bot)
@@ -226,7 +234,7 @@ func _follow_camera() -> void:
if particles_snow:
particles_snow.global_position = Vector3(cam_pos.x, particles_snow.position.y, cam_pos.z)
if particles_wind:
particles_wind.global_position = Vector3(cam_pos.x, particles_wind.position.y, cam_pos.z)
particles_wind.global_position = Vector3(cam_pos.x, cam_pos.y, cam_pos.z)
if particles_fireflies:
particles_fireflies.global_position = Vector3(cam_pos.x, particles_fireflies.position.y, cam_pos.z)
@@ -254,10 +262,8 @@ func set_fireflies():
func toggle_wind(value: bool):
is_windy = value
var is_night = day_time >= 2.5
if particles_wind:
particles_wind.emitting = (not is_storm and not is_night and is_windy)
particles_wind.emitting = is_windy
#disable wind and set default values and materials
func set_wind():
@@ -385,9 +391,22 @@ func start_lightning():
tween_sprite.tween_interval(0.2)
tween_sprite.tween_property(lightning_sprite, "modulate:a", 0.0, 0.4)
#Thunder sound; separated routine to do not stop the loop
_play_thunder_delayed(randf_range(0.5, 2.5))
if lightning_number > 1:
await get_tree().create_timer(randf_range(0.05, 0.15)).timeout
func _play_thunder_delayed(delay: float):
await get_tree().create_timer(delay).timeout
if thunder_sounds.is_empty() or not audio_player:
return
#choose a random track
audio_player.stream = thunder_sounds[randi() % thunder_sounds.size()]
audio_player.pitch_scale = randf_range(0.9, 1.1)
audio_player.play()
#endregion
#region Rain