diff --git a/core/daynight/environment_manager.gd b/core/daynight/environment_manager.gd index 6309d60..42ad37a 100644 --- a/core/daynight/environment_manager.gd +++ b/core/daynight/environment_manager.gd @@ -28,6 +28,7 @@ const WEATHER_PLAIN_SHADER: Material = preload("res://core/daynight/weather_plai #environment nodes @onready var sun: DirectionalLight3D = $"../DirectionalLight3D" @onready var environment: WorldEnvironment = $"../WorldEnvironment" +@onready var fog_node: Node3D = $Fog var day_night_controller: DayNightController var weather_controller: WeatherController @@ -39,6 +40,7 @@ func _ready() -> void: #connect shader when new node is added get_tree().node_added.connect(_on_tree_node_added) + UIEvents.toggle_fog.connect(toggle_fog) #set noise texture 2d to materials in special group ApplyWindNoiseToMaterials() @@ -158,3 +160,7 @@ func select_day_time(normalized_time: float) -> void: if weather_controller: weather_controller.day_time = day_time + +func toggle_fog(value: bool) -> void: + if fog_node: + fog_node.visible = value diff --git a/core/daynight/water_ripple.gdshader b/core/daynight/water_ripple.gdshader index 55de5a0..2e36364 100644 --- a/core/daynight/water_ripple.gdshader +++ b/core/daynight/water_ripple.gdshader @@ -2,6 +2,7 @@ shader_type spatial; render_mode blend_mix, depth_draw_always; global uniform float global_rain_intensity; +global uniform vec4 global_water_color = vec4(0.285, 0.534, 0.487, 1.0); //Water color uniform vec4 deep_water_color : source_color = vec4(0.0, 0.1, 0.2, 1.0); @@ -44,12 +45,14 @@ void fragment() { float water_depth_gradient = exp(-depth_difference * beer_law_factor); vec4 base_water = mix(deep_water_color, shallow_water_color, water_depth_gradient); float rain_intensity = clamp(global_rain_intensity, 0.0, 1.0); + base_water.rgb = mix(base_water.rgb, global_water_color.rgb, 0.7); vec2 pos = world_pos_xz * ripple_scale; vec2 cell = floor(pos); vec2 local_pos = fract(pos) - 0.5; float random_val = fract(sin(dot(cell, vec2(12.9898, 78.233))) * 43758.5453); - float is_active_cell = step(1.0 - ripple_density, random_val); + float active_ripple_density = ripple_density * rain_intensity; + float is_active_cell = step(1.0 - active_ripple_density, random_val); float ring = 0.0; if (is_active_cell > 0.0) { diff --git a/core/daynight/weather_controller.gd b/core/daynight/weather_controller.gd index 583e526..c0635e5 100644 --- a/core/daynight/weather_controller.gd +++ b/core/daynight/weather_controller.gd @@ -125,6 +125,7 @@ func _process(delta: float) -> void: var base_grad_top: Color var base_grad_bot: Color var base_grad_intensity: float + var base_water_color: Color var base_rotation_sun: Vector3 if is_raining: @@ -152,6 +153,7 @@ func _process(delta: float) -> void: base_grad_top = environment_config.grad_top_morning.lerp(environment_config.grad_top_afternoon, t) base_grad_bot = environment_config.grad_top_morning.lerp(environment_config.grad_bot_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_rotation_sun = environment_config.sun_rotation_morning.lerp(environment_config.sun_rotation_afternoon, t) else: var t = day_time - 2.0 @@ -165,6 +167,7 @@ func _process(delta: float) -> void: base_grad_top = environment_config.grad_top_afternoon.lerp(environment_config.grad_top_night, t) base_grad_bot = environment_config.grad_bot_afternoon.lerp(environment_config.grad_bot_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_rotation_sun = environment_config.sun_rotation_afternoon.lerp(environment_config.sun_rotation_night, t) var weather_color = environment_config.rain_mode_color @@ -176,6 +179,7 @@ func _process(delta: float) -> void: 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)) + var final_water_color = base_water_color.darkened(clamp(environment_config.water_darkening_rain, 0.0, 1.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) @@ -189,6 +193,7 @@ func _process(delta: float) -> void: RenderingServer.global_shader_parameter_set("global_gradient_color_top", final_grad_top) RenderingServer.global_shader_parameter_set("global_gradient_color_bot", final_grad_bot) RenderingServer.global_shader_parameter_set("global_gradient_intensity", base_grad_intensity) + RenderingServer.global_shader_parameter_set("global_water_color", final_water_color) var night_val = clamp(day_time - 2.0, 0.0, 1.0) @@ -769,7 +774,7 @@ func init_snow(value: float = 0.0): RenderingServer.global_shader_parameter_set("global_snow_accumulation_speed", environment_config.snow_accumulation_speed) RenderingServer.global_shader_parameter_set("global_snow_melt_speed", environment_config.snow_melt_speed) RenderingServer.global_shader_parameter_set("global_snow_max_accumulation", environment_config.snow_max_accumulation) - RenderingServer.global_shader_parameter_set("global_snow_cap_enabled", 1.0 if environment_config.show_snow_accumulation_volume else 0.0) + RenderingServer.global_shader_parameter_set("global_snow_cap_enabled", environment_config.show_snow_accumulation_volume) RenderingServer.global_shader_parameter_set("global_snow_cap_height", environment_config.snow_cap_height) RenderingServer.global_shader_parameter_set("global_snow_cap_flatness_start", environment_config.snow_cap_flatness_start) RenderingServer.global_shader_parameter_set("global_snow_cap_flatness_end", environment_config.snow_cap_flatness_end) diff --git a/core/daynight/weather_overlay.gdshader b/core/daynight/weather_overlay.gdshader index 5afa822..aa52bcc 100644 --- a/core/daynight/weather_overlay.gdshader +++ b/core/daynight/weather_overlay.gdshader @@ -6,10 +6,11 @@ global uniform float global_snow_start_time = -1.0; global uniform float global_snow_accumulation_speed = 0.1; global uniform float global_snow_melt_time = -1.0; global uniform float global_snow_melt_speed = 0.1; +global uniform float global_snow_amount = 0.0; global uniform float global_snow_threshold = 0.5; global uniform vec4 global_snow_color = vec4(0.92, 0.96, 1.0, 1.0); global uniform float global_snow_max_accumulation = 0.72; -global uniform float global_snow_cap_enabled = 1.0; +global uniform bool global_snow_cap_enabled = true; global uniform float global_snow_cap_height = 0.06; global uniform float global_snow_cap_flatness_start = 0.72; global uniform float global_snow_cap_flatness_end = 0.96; @@ -70,16 +71,22 @@ float fbm(vec2 p) { return clamp(value, 0.0, 1.0); } -float get_snow_amount() { - float snow_amount = 0.0; - if (global_snow_start_time >= 0.0) { - snow_amount = clamp((TIME - global_snow_start_time) * global_snow_accumulation_speed, 0.0, 1.0); +float get_snow_progress() { + bool has_snow_timeline = global_snow_start_time >= 0.0 || global_snow_melt_time >= 0.0; + float snow_progress = clamp(global_snow_amount, 0.0, 1.0); + + if (has_snow_timeline) { + snow_progress = 0.0; + if (global_snow_start_time >= 0.0) { + snow_progress = clamp((TIME - global_snow_start_time) * global_snow_accumulation_speed, 0.0, 1.0); + } + if (global_snow_melt_time >= 0.0) { + float melt = clamp((TIME - global_snow_melt_time) * global_snow_melt_speed, 0.0, 1.0); + snow_progress *= (1.0 - melt); + } } - if (global_snow_melt_time >= 0.0) { - float melt = clamp((TIME - global_snow_melt_time) * global_snow_melt_speed, 0.0, 1.0); - snow_amount *= (1.0 - melt); - } - return snow_amount * global_snow_max_accumulation; + + return snow_progress; } float ripple_ring(vec2 uv, float time_offset) { @@ -90,24 +97,24 @@ float ripple_ring(vec2 uv, float time_offset) { } void vertex() { - float snow_amount = get_snow_amount(); + float snow_progress = get_snow_progress(); + float snow_accumulation = snow_progress * global_snow_max_accumulation; vec3 world_pos = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz; vec3 world_normal = normalize((MODEL_MATRIX * vec4(NORMAL, 0.0)).xyz); - float snow_cap_enabled = step(0.5, global_snow_cap_enabled); float flat_surface = smoothstep( max(global_snow_threshold, global_snow_cap_flatness_start), global_snow_cap_flatness_end, world_normal.y ); - float accumulation_growth = smoothstep(0.08, 0.65, snow_amount); + float accumulation_growth = smoothstep(0.08, 0.65, snow_progress); float cap_noise = fbm(world_pos.xz * global_snow_cap_noise_scale + vec2(11.3, 4.7)); float cap_variation = mix(1.0 - global_snow_cap_noise_strength, 1.0 + global_snow_cap_noise_strength, cap_noise); - v_snow_amount = snow_amount; - v_snow_cap_mask = flat_surface * accumulation_growth * cap_variation * snow_cap_enabled; + v_snow_amount = snow_progress; + v_snow_cap_mask = flat_surface * accumulation_growth * cap_variation * (global_snow_cap_enabled ? 1.0 : 0.0); - VERTEX += NORMAL * (global_snow_cap_height * snow_amount * v_snow_cap_mask); + VERTEX += NORMAL * (global_snow_cap_height * snow_accumulation * v_snow_cap_mask); } void fragment() { @@ -117,16 +124,17 @@ void fragment() { float noise_val = texture(noise_texture, world_pos.xz * snow_noise_scale).r; //Snow - float snow_amount = v_snow_amount; + float snow_progress = v_snow_amount; + float snow_accumulation = snow_progress * global_snow_max_accumulation; float snow_edge = smoothstep( global_snow_threshold - snow_edge_softness, global_snow_threshold + snow_edge_softness, facing_up + (noise_val - 0.5) * 0.4 ); - float flat_accumulation = smoothstep(0.0, 0.35, v_snow_cap_mask) * snow_amount; - float snow_coverage = smoothstep(0.0, 0.6, noise_val + snow_amount - 0.4 + flat_accumulation * 0.25); - float snow_factor = max(snow_edge * snow_coverage * snow_amount, flat_accumulation); + float flat_accumulation = smoothstep(0.0, 0.35, v_snow_cap_mask) * snow_accumulation; + float snow_coverage = smoothstep(0.0, 0.6, noise_val + snow_progress - 0.4 + flat_accumulation * 0.25); + float snow_factor = max(snow_edge * snow_coverage * snow_progress, flat_accumulation); float snow_opacity = smoothstep(0.04, 0.28, snow_factor); snow_opacity = max(snow_opacity, flat_accumulation * 0.9); diff --git a/core/daynight/weather_overlay.tres b/core/daynight/weather_overlay.tres index 8d78446..03906a7 100644 --- a/core/daynight/weather_overlay.tres +++ b/core/daynight/weather_overlay.tres @@ -5,3 +5,17 @@ [resource] render_priority = 0 shader = ExtResource("1_weather") +shader_parameter/snow_noise_scale = 0.15 +shader_parameter/snow_edge_softness = 0.2 +shader_parameter/snow_roughness_variation = 0.15 +shader_parameter/snow_color_variation = 0.05 +shader_parameter/ripple_scale = 1.5 +shader_parameter/ripple_speed = 2.0 +shader_parameter/ripple_layers = 3.0 +shader_parameter/streak_scale = 2.0 +shader_parameter/streak_speed = 0.8 +shader_parameter/wetness_darkening = 0.25 +shader_parameter/wet_roughness = 0.05 +shader_parameter/rain_normal_strength = 0.4 +shader_parameter/puddle_noise_scale = 0.08 +shader_parameter/puddle_threshold = 0.45 diff --git a/core/daynight/weather_plain_shader.tres b/core/daynight/weather_plain_shader.tres index 55c00aa..4706dc1 100644 --- a/core/daynight/weather_plain_shader.tres +++ b/core/daynight/weather_plain_shader.tres @@ -1,7 +1,21 @@ -[gd_resource type="ShaderMaterial" format=3] +[gd_resource type="ShaderMaterial" format=3 uid="uid://b34bnqbrtxktw"] -[ext_resource type="Shader" path="res://core/daynight/weather_plain_shader.gdshader" id="1_weather_plain"] +[ext_resource type="Shader" uid="uid://do8puw7u8dvry" path="res://core/daynight/weather_plain_shader.gdshader" id="1_weather_plain"] +[ext_resource type="Texture2D" uid="uid://bpswbjh4jj1ou" path="res://core/daynight/noise.tres" id="2_noise"] [resource] render_priority = 0 shader = ExtResource("1_weather_plain") +shader_parameter/snow_edge_softness = 0.15 +shader_parameter/snow_color_variation = 0.05 +shader_parameter/ripple_scale = 1.5 +shader_parameter/ripple_speed = 2.0 +shader_parameter/ripple_layers = 3.0 +shader_parameter/streak_scale = 2.0 +shader_parameter/streak_speed = 0.8 +shader_parameter/wetness_darkening = 0.25 +shader_parameter/wet_roughness = 0.05 +shader_parameter/rain_normal_strength = 0.4 +shader_parameter/puddle_noise_scale = 0.08 +shader_parameter/puddle_threshold = 0.45 +shader_parameter/noise_texture = ExtResource("2_noise") diff --git a/core/environment_config.gd b/core/environment_config.gd index 8a7c045..b2543aa 100644 --- a/core/environment_config.gd +++ b/core/environment_config.gd @@ -81,8 +81,9 @@ extends Resource #Post-process effect toggles (initial values) @export_group("Post Process") @export var enable_dust: bool = false #Floating dust particles overlay -@export var enable_blur: bool = false #Screen blur effect +@export var enable_blur: bool = true #Screen blur effect @export var enable_environment_shadows: bool = true #Cloud shadow projection on terrain +@export var enable_fog: bool = true #Enable fog around the train @export var blur_amount: float = 0.6 @export_group("Dust") @@ -176,3 +177,10 @@ extends Resource @export var fireflies_amount: int = 60 #Number of firefly particles @export var fireflies_spawn_ray: float = 20.0 #Horizontal spawn radius @export var fireflies_spawn_height: float = 3.0 #Vertical spawn range + +#Water settings +@export_group("Water") +@export var water_color_morning: Color = Color(0.285, 0.534, 0.487, 1.0) #Tint for morning +@export var water_color_afternoon: Color = Color(0.889, 0.733, 0.205, 1.0) #Tint for afternoon (sunset) +@export var water_color_night: Color = Color(0.728, 0.54, 0.986, 1.0); #Tint for night +@export var water_darkening_rain: float = 0.7 #Percentage of darkening when is rainy diff --git a/core/ui_events.gd b/core/ui_events.gd index 214202e..fcd8ceb 100644 --- a/core/ui_events.gd +++ b/core/ui_events.gd @@ -27,6 +27,8 @@ signal toggle_dust(value: bool) signal toggle_blur(value: bool) @warning_ignore("unused_signal") signal toggle_shadows(value: bool) +@warning_ignore("unused_signal") +signal toggle_fog(value: bool) #day cycle signals @warning_ignore("unused_signal") diff --git a/docs/museums/biome_generator/museum_map.tscn b/docs/museums/biome_generator/museum_map.tscn index 755a933..98a5c07 100644 --- a/docs/museums/biome_generator/museum_map.tscn +++ b/docs/museums/biome_generator/museum_map.tscn @@ -171,6 +171,30 @@ shadow_blur = 0.5 directional_shadow_mode = 0 directional_shadow_max_distance = 200.0 +[node name="MainMap" parent="." unique_id=1895741703 instance=ExtResource("20_xkcqp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 280, 0, 0) + +[node name="rail" type="Path3D" parent="." unique_id=1795138464 node_paths=PackedStringArray("cameras")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 270, 2, -0.101) +curve = SubResource("Curve3D_ndco5") +script = ExtResource("12_4is5r") +train_model = ExtResource("13_5rdtm") +cameras = NodePath("../cameras") +sleepers_model = ExtResource("14_ahang") +fireworks_scene = ExtResource("15_atdal") + +[node name="Marker3D" type="Marker3D" parent="rail" unique_id=1460318018] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.7581053, -1.6046681, 59.658325) + +[node name="Marker3D2" type="Marker3D" parent="rail" unique_id=131965864] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 127.14737, 0, 169.44846) + +[node name="Marker3D3" type="Marker3D" parent="rail" unique_id=492991547] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -91.191925, 0, 539.03174) + +[node name="Marker3D4" type="Marker3D" parent="rail" unique_id=1550097358] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -312.19193, 0, 349.03174) + [node name="Control" type="Control" parent="." unique_id=630650980] layout_mode = 3 anchors_preset = 0 @@ -209,9 +233,9 @@ text = "Rain" [node name="Wind" type="CheckButton" parent="Control" unique_id=1013004982] layout_mode = 0 offset_left = 8.0 -offset_top = 231.0 +offset_top = 256.0 offset_right = 96.0 -offset_bottom = 262.0 +offset_bottom = 287.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -223,18 +247,18 @@ text = "Wind" [node name="WindSlider" type="HSlider" parent="Control" unique_id=28050098] layout_mode = 0 offset_left = 103.0 -offset_top = 238.0 +offset_top = 263.0 offset_right = 187.0 -offset_bottom = 254.0 +offset_bottom = 279.0 max_value = 1.0 step = 0.01 [node name="Fireflies" type="CheckButton" parent="Control" unique_id=1046228444] layout_mode = 0 offset_left = 8.0 -offset_top = 259.0 +offset_top = 284.0 offset_right = 117.0 -offset_bottom = 290.0 +offset_bottom = 315.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -353,9 +377,9 @@ text = "Shadows" [node name="RandomWeather" type="Button" parent="Control" unique_id=1047710802] layout_mode = 0 offset_left = 12.0 -offset_top = 289.0 -offset_right = 157.0 -offset_bottom = 320.0 +offset_top = 314.0 +offset_right = 195.0 +offset_bottom = 345.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -374,29 +398,19 @@ theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_outline_color = Color(1, 1, 1, 1) text = "Weather: Clear" -[node name="MainMap" parent="." unique_id=1895741703 instance=ExtResource("20_xkcqp")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 280, 0, 0) - -[node name="rail" type="Path3D" parent="." unique_id=1795138464 node_paths=PackedStringArray("cameras")] -transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 270, 2, -0.101) -curve = SubResource("Curve3D_ndco5") -script = ExtResource("12_4is5r") -train_model = ExtResource("13_5rdtm") -cameras = NodePath("../cameras") -sleepers_model = ExtResource("14_ahang") -fireworks_scene = ExtResource("15_atdal") - -[node name="Marker3D" type="Marker3D" parent="rail" unique_id=1460318018] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.7581053, -1.6046681, 59.658325) - -[node name="Marker3D2" type="Marker3D" parent="rail" unique_id=131965864] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 127.14737, 0, 169.44846) - -[node name="Marker3D3" type="Marker3D" parent="rail" unique_id=492991547] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -91.191925, 0, 539.03174) - -[node name="Marker3D4" type="Marker3D" parent="rail" unique_id=1550097358] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -312.19193, 0, 349.03174) +[node name="Fog" type="CheckButton" parent="Control" unique_id=2101743368] +layout_mode = 0 +offset_left = 7.0 +offset_top = 228.0 +offset_right = 97.0 +offset_bottom = 259.0 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_colors/font_focus_color = Color(1, 1, 1, 1) +theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) +theme_override_colors/font_hover_color = Color(1, 1, 1, 1) +theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1) +theme_override_colors/font_outline_color = Color(1, 1, 1, 1) +text = "Fog" [connection signal="toggled" from="Control/Snow" to="Control" method="_on_snow_toggled"] [connection signal="toggled" from="Control/Rain" to="Control" method="_on_rain_toggled"] @@ -411,3 +425,4 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -312.19193, 0, 349.03174) [connection signal="toggled" from="Control/Pause" to="Control" method="_on_pause_toggled"] [connection signal="toggled" from="Control/Shadows" to="Control" method="_on_shadows_toggled"] [connection signal="pressed" from="Control/RandomWeather" to="Control" method="_on_random_weather_pressed"] +[connection signal="toggled" from="Control/Fog" to="Control" method="_on_fog_toggled"] diff --git a/docs/museums/daynight/control.gd b/docs/museums/daynight/control.gd index a4bcb19..8668dfb 100644 --- a/docs/museums/daynight/control.gd +++ b/docs/museums/daynight/control.gd @@ -96,3 +96,6 @@ func _on_day_time_option_changed(index: int) -> void: func _on_option_button_item_selected(index: int) -> void: UIEvents.time_option_item_changed.emit(index) + +func _on_fog_toggled(toggled_on: bool) -> void: + UIEvents.toggle_fog.emit(toggled_on) diff --git a/docs/museums/daynight/museum_daynight.tscn b/docs/museums/daynight/museum_daynight.tscn index fac159f..d928195 100644 --- a/docs/museums/daynight/museum_daynight.tscn +++ b/docs/museums/daynight/museum_daynight.tscn @@ -206,9 +206,9 @@ text = "Fireflies" [node name="RandomWeather" type="Button" parent="Control" unique_id=1114190563] layout_mode = 0 offset_left = 24.0 -offset_top = 121.0 -offset_right = 169.0 -offset_bottom = 152.0 +offset_top = 157.0 +offset_right = 207.0 +offset_bottom = 188.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -244,9 +244,9 @@ text = "Storm" [node name="DayTimeLabel" type="Label" parent="Control" unique_id=1673596218] layout_mode = 0 offset_left = 26.0 -offset_top = 170.0 +offset_top = 211.0 offset_right = 360.0 -offset_bottom = 193.0 +offset_bottom = 234.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_outline_color = Color(1, 1, 1, 1) text = "Time 00:00" @@ -254,18 +254,18 @@ text = "Time 00:00" [node name="DayTimeSlider" type="HSlider" parent="Control" unique_id=530788076] layout_mode = 0 offset_left = 26.0 -offset_top = 194.0 +offset_top = 235.0 offset_right = 205.0 -offset_bottom = 210.0 +offset_bottom = 251.0 max_value = 1.0 step = 0.01 [node name="DayTimeOptions" type="OptionButton" parent="Control" unique_id=1354705309] layout_mode = 0 offset_left = 25.0 -offset_top = 217.0 +offset_top = 258.0 offset_right = 136.0 -offset_bottom = 248.0 +offset_bottom = 289.0 selected = 1 item_count = 4 popup/item_0/text = "Sunrise" @@ -280,9 +280,9 @@ popup/item_3/id = 4 [node name="Dust" type="CheckButton" parent="Control" unique_id=2023312048] layout_mode = 0 offset_left = 21.0 -offset_top = 252.0 +offset_top = 293.0 offset_right = 150.0 -offset_bottom = 283.0 +offset_bottom = 324.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -295,9 +295,9 @@ text = "Dust" [node name="Blur" type="CheckButton" parent="Control" unique_id=1758807681] layout_mode = 0 offset_left = 21.0 -offset_top = 280.0 +offset_top = 321.0 offset_right = 150.0 -offset_bottom = 311.0 +offset_bottom = 352.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -310,9 +310,9 @@ text = "Blur" [node name="Pause" type="CheckButton" parent="Control" unique_id=156986934] layout_mode = 0 offset_left = 212.0 -offset_top = 186.0 +offset_top = 227.0 offset_right = 307.0 -offset_bottom = 217.0 +offset_bottom = 258.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -324,9 +324,9 @@ text = "Pause" [node name="Shadows" type="CheckButton" parent="Control" unique_id=1751516495] layout_mode = 0 offset_left = 21.0 -offset_top = 304.0 +offset_top = 345.0 offset_right = 150.0 -offset_bottom = 335.0 +offset_bottom = 376.0 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_focus_color = Color(1, 1, 1, 1) theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) @@ -345,6 +345,20 @@ offset_bottom = 90.0 max_value = 1.0 step = 0.01 +[node name="Fog" type="CheckButton" parent="Control" unique_id=24312462] +layout_mode = 0 +offset_left = 20.0 +offset_top = 118.0 +offset_right = 110.0 +offset_bottom = 149.0 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_colors/font_focus_color = Color(1, 1, 1, 1) +theme_override_colors/font_pressed_color = Color(1, 1, 1, 1) +theme_override_colors/font_hover_color = Color(1, 1, 1, 1) +theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1) +theme_override_colors/font_outline_color = Color(1, 1, 1, 1) +text = "Fog" + [node name="Scene" type="Node" parent="." unique_id=701973010] [node name="chunk_country_corner_01" parent="Scene" unique_id=200417581 instance=ExtResource("14_iu8wf")] @@ -389,6 +403,7 @@ transform = Transform3D(-0.85, 0, -1.2834644e-07, 0, 0.85, 0, 1.2834644e-07, 0, [connection signal="toggled" from="Control/Pause" to="Control" method="_on_pause_toggled"] [connection signal="toggled" from="Control/Shadows" to="Control" method="_on_shadows_toggled"] [connection signal="value_changed" from="Control/WindSlider" to="Control" method="_on_wind_slider_value_changed"] +[connection signal="toggled" from="Control/Fog" to="Control" method="_on_fog_toggled"] [editable path="Scene/chunk_country_cross3_02/PaloLuce"] [editable path="Scene/chunk_country_end_01/PaloLuce2"] diff --git a/project.godot b/project.godot index edc19c5..23acade 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="tgcc" -run/main_scene="uid://cae0mnf353dy3" +run/main_scene="uid://38qpxwbpvd28" config/features=PackedStringArray("4.6", "Forward Plus") run/max_fps=60 config/icon="uid://bfar1kk3pgq8f" @@ -142,3 +142,7 @@ global_snow_cap_enabled={ "type": "bool", "value": false } +global_water_color={ +"type": "color", +"value": Color(0, 0, 0, 1) +} diff --git a/tgcc/chunk/railway/scene/chunk_railway_straight.tscn b/tgcc/chunk/railway/scene/chunk_railway_straight.tscn index c8a086a..2eb62db 100644 --- a/tgcc/chunk/railway/scene/chunk_railway_straight.tscn +++ b/tgcc/chunk/railway/scene/chunk_railway_straight.tscn @@ -45,10 +45,10 @@ connection_right = [NodePath("PaloLuce/dx"), NodePath("PaloLuce2/dx")] [node name="Chunk_001" parent="." index="0" unique_id=1122765659] surface_material_override/0 = ExtResource("2_5cqaj") -[node name="Chunk_020" parent="." index="1" unique_id=467050080] +[node name="Chunk_020" parent="." index="1" unique_id=107670766] surface_material_override/0 = ExtResource("2_1yd65") -[node name="Cube_159" parent="." index="2" unique_id=1552861257] +[node name="Cube_159" parent="." index="2" unique_id=334311805 groups=["weather_node"]] surface_material_override/0 = ExtResource("3_dldiy") surface_material_override/1 = ExtResource("4_5cqaj")